Hi Jan,
Hi Francis,
Why not BEEP ? Well, this question is interesting. I
agree with you, Francis.
What about "Why Beep ?".
Well BEEP is a construction kit and you need to be well aware of what you want to do in you communications now and in the future to end up on the beepcore.org website. If you have to decide between implementing on a TCP/IP socket or using beep, the answer is obvious at least for me, when I was at this point (about 10 yrs ago).
Beep is a Peer to Peer protocol which means communication partners are real partners as soon as the connection is established. Thinking about a new protocol is still very often related to peer to peer problems because a lot of existing protocols are client/server based. Using a client/server protocol trying to solve peer to peer problems is never a good idea. If you are sure you have a client/server problem think of an existing protocol. You'll be happy with it.
If you're at the point using multiple protocols on multiple ports in your application to do different communication with the same partners you should also rethink this strategy and give BEEP a chance. Profiles are a powerful tool in this field.
Sometimes I have the impression that the number of publications about a new "technology" has more influence on a decision process than the suitability of the "technology" for a specific problem, no matter how disappointing the content of the publication is. (ok, this is cynical..or not?)
However, building a simple protocol with beep is not as easy as it seems because it has a payload, which can be any data. This can be transported from A to B but that's it. Existing protocols already have some data layer that can be (ab)used for own purposes. Besides the capabilities of the communication itself, you should be well aware of the data you want to transport. A lot of suggestions already exist like SOAP, JSON, XML, etc.
Pick one or create your own. This is matter of taste. I've decided to interface an xml format and add a type layer that helped to avoid problems related to type mismatches (in xml 42 can be a string a float or an integer). JSON has trouble with date types and in PHP you can't decide after decoding if you have a dictionary or a list. Thinking about your data is worth the trouble you'll save time later.
After thinking about data and transport independently BEEP will be more and more the best choice for most cases.
Francis, I don't think it appeared too soon. It is a universal construction kit for user protocols that reduces development costs drastically but let's say you have hunters and gatherers within the target group, the hunters write their own code. They have the time to implement whatever they need. The gatherers pick a tool or a library to use it for their purpose as long as it (almost) fits their needs.
BEEP is in between both. Too much readymade functionality
for hunters and too incomplete for gatherers. And of course too few
publications for decision makers ;-)
Well, I don't know if this is helpful .. yet another opinion so far.
Cheers,
Maik