[zeromq-dev] Paxos & ZeroMQ

Tom Cocagne tom.cocagne at gmail.com
Sun May 20 08:40:43 CEST 2012

At today's ZeroMQ meetup in Chicago, a surprising amount of interest
was expressed in a Paxos/ZeroMQ side project I've been working on for
the past few months. At the request of several of the attendees, I've
made the code publicly available on GitHub for the perusal of anyone
that's interested.

There are two separate repositories. One repository contains a pure
Paxos implementation that is independent of any particular application
domain or networking infrastructure. The lack of such a library was
the biggest stumbling block for me, personally, when it came to
understanding how Paxos worked and how to put it into practice.
Hopefully others in the community will find it useful.

The second repository uses the pure Paxos library in conjunction with
ZeroMQ to implement a simple, distributed key-value database. This
project was born out of my frustration with the lack of a simple,
embeddable database for which there is no single point of failure. As
it stands, the code doesn't quite solve that problem yet but it's
definitely a step in the right direction.

The current quality of the code is reasonably on par with that of a
mid-level alpha release. The basic tests pass, and, so far as I can
tell, there are no glaring omissions. It's still pretty early in the
development phase though. Perfect, perhaps, for someone interested in
the topic to jump in, steal the code, and make it useful. Generally
speaking, I prefer to get a bit further down the development and
documentation path before releasing code for public consumption.
However, given the feedback from the 0MQ meetup, it seemed as though
there may be sufficient interest to overlook the poor documentation
and as-yet-unremoved debugging print statements.

The Paxos implementation (in Python) may be found at:

The distributed database using the Paxos implementation in conjunction
with ZeroMQ (also in Python) may be found at:


More information about the zeromq-dev mailing list