http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html
http://code.google.com/p/protobuf/
http://code.google.com/apis/protocolbuffers/docs/overview.html
I'm thinking of completely ditching the ad hoc ASCII protocol and
using protocol buffers for beanstalkd 2.0. That's a ways off, so we
have plenty of time to discuss this possibility.
It currently has C++, Java, and Python libraries. There are no C,
Erlang, Ruby, or Perl libraries yet, but I assume most of these will
appear before we need them.
Pros of switching:
* speed of parsing/encoding,
* flexibility when communicating with older/newer protocol versions,
* simpler code.
Cons of switching:
* unavailability will hurt languages that aren't super-mainstream,
* can't use telnet to talk to beanstalkd any more.
If no one decides to write Erlang bindings for protocol buffers, then
it'll be mighty hard to have a beanstalk client in Erlang. Same goes
for any other language. I want the barrier to be very low for new
languages talking to beanstalkd. So this is practically a
deal-breaker.
Telnet is also almost a deal-breaker. I use telnet ALL THE TIME when
working with beanstalkd, and not just in debugging. I would absolutely
need some sort of debugging tool to let me talk to a
protocol-buffers-using server interactively.
Hopefully these problems will be solved somehow, but there are likely
more points on both sides that I'm missing.
What say you?
kr