I'm working on a new board game client able to play Draughts.
Thanks for your interest in protocols. As you know, I started a discussion on this subject here:viewtopic.php?f=53&t=6795
My feeling is that the community is in a period of transition from DXP to something else that is not clear yet. It could be Hub with additional features (engine parameters, detailed search information), or UDI. In my view, they differ only in syntax.
Guide is not ruled out either. The obligation to support sockets can easily be removed. There are minor syntactic elements that bothered me, but I only remember one part: I think it was about spaces in moves. Only Bert and Michel can comment on its current state.
Do you guys have recommendations about what client/engine protocols i must, should, should not, must not implement ?
As far as i understand, there are 4 existing protocols: Hub, DXP, Guide and UDI
The only open source Draughts engine i know is scan, which supports Hub and DXP. From my point of view, if there was only one protocol to support, it should be Hub (text and standard io based).
UDI is not used by anyone yet, but is a unifying candidate for the future nonetheless. In spirit, Hub and UDI are the same; it should be easy to convert code from one to the other. I have specific gripes with UCI that I haven't detailed; I would like them fixed before we use the protocol. Also, we haven't chosen a way to represent draughts positions and moves. So UDI is not yet fully defined.
Additionally I recommend that we implement DXP as a legacy feature, which I did in Scan. While I don't like it at all, for example the requirement to use sockets, it is ubiquitous. Ideally, programmers will feel the benefits of alternatives with time. Meanwhile, I suggest that we provide choice.
How about your interests: what will you do with the GUI?
Are there specifications for the Hub protocol somewhere, or should i get it from the scan source code ?
Not yet, but I will do so shortly.
Hub was never designed, but was an "implementation detail" of the Hub GUI that I use in tournaments. On top of that it was implemented in a couple of days, so you can guess that not a lot of thinking was involved.
To be future-proof, it needs some changes. Bert modified it a little in his own implementation. At least some of these changes have merit; we will add them to the protocol description when available. If needed, Scan (and Hub) will be updated to follow the movement.
So what I'm saying is: if you feel like going for Hub, you should get ready for syntactic changes in the near future. In my experience, it is a minor issue compared to connecting an engine to the rest of the GUI. I'm just warning you of what's ahead.
Other than scan, is there any open source (my program is open source) engine out there i should test my program with ? (ideally on Linux, my development platform even if the final program is multi-platform)
Yes: Moby Dam which supports DXP. I read in this forum that Harm was considering using Guide in 2009:viewtopic.php?p=75987#p75987
It's unclear what his decision would have been in the current situation. I assume that he would love avoiding sockets too.