Hex uses the swap rule, also known as the pie rule or one-move equalization. WRT implementation, there are two ways to do it. Here are the official explanations of these two distinct moves:
# swap-sides - the player elects to swap sides with his opponent; if he was playing Black he now plays White, and vice versa.
# swap-pieces - the player elects to swap pieces with his opponent - all of Black's pieces are coloured White, and White's pieces are coloured Black. Then the entire board is reflected in the long diagonal axis. (Example: ;B[c1] ;W[swap-pieces] - a3 is now white; Black to play).
Let's take a closer look at that second option.
;B[c1] ;W[swap-pieces] - a3 is now white; Black to play
The player who started the game as black is still black.
The player who played "swap-pieces" is still white.
So, no one has swapped piecES. Only one PIECE has been swapped. All of black's pieces are still black, except for that first token. NONE of white's pieces are colored black.
This move should be re-labeled "swap-firstpiece" or "swap-piece" or something like that. The explanation should be clarified. At least, that's how I see it. Any objection?
BTW there is now a Java app which saves games in SGF:
Look for the "HexGui" link.