The functionality of the game is eventually going to get to the point where we have AI opponents which can play with the user. This being so, all functionality (as far as rule checking and such) needs to be on the client side. Server smart, client dumb really does not apply in this case.
Protocol for multiplayer sessions should likely be TCP/IP, if only for integrated chat client functionality.
I also think that multiplayer games should be hosted through servers, as opposed to direct connects between players. This prevents cheating, and helps people find new opponents.
The GUI, I could care less about at this point. I think it would be interesting to play with 3d and stereoscopic representations of playing fields, but 2d obviously has some benefits. GUIs are always rough, though, as you have to make things apparent to the novice, but non cumbersomely simplified for more experienced users.
I plan to start hacking a shell for the client. If anyone with art skills could draw up potential GUI looks, that would be extremely cool and useful. Hach, you were also mentioning that certain games just arent playable. is there a general rule/algorithm for determining if game G is unplayable? If we dont know, any ideas on how to find out?