What is the idea of 'ponder' in the UCI protocol? I've created my own chess engine and now I'm trying to connect it into the Chess Arena. Everything is actually working fine when I play them together (Demo). But I tried to play with it and didn't respond at my second move. So I looked at the console and there's this go ponder after my second move. Now I want to know: what's the idea of it?
I tried to go to this link for me to understand, but it's not enough. It says when I receive that command, I need to start searching in pondering mode. What exactly is start searching in pondering mode? Is it an infinite search that gets the best move for the opponent and only stops after I moved?
Let's say I move e2e4, engine plays e7e5. And then receives go ponder, after I move, let's say g1f3. And then the engine receives ponderhit and let's say the search completed depth 5 and result could be bestmove g1f3 ponder something. Now what happens if the bestmove g1f3 matches my move?
It's been a long time since I programmed anything, so I may be wrong.
Pondering, like in the comment, allows the computer to think on your time.  It basically switches sides and maintains a principle variation (PV search) (although I've seen some engines which maintain 3 PV searches) of what it considers to be the best line.  When you make your move, if it's the PV, then it should play the next move immediately.
The problem with ponder is the probability of having a wrong evaluation/incorrect line in the PV.  If the opponent's move was made quickly, the computer may have a random move in the PV, not really a possibility with modern computers searching a 3 million NPS, but older computers 20 years ago did have this problem.