Architecture of the ØMQ Community

You know that ØMQ is an LGPL-licensed project. In fact, it’s a collection of projects built around the core library, libzmq. I’ll visualize these projects as an expanding galaxy:

  • At the core is libzmq. It’s written in C++, with a low-level C API. The code is nasty, mainly because it’s highly optimized but also because it’s written in C++, a language that lends itself to subtle and deep nastiness. Martin Sustrik originally wrote the bulk of this code. Today, dozens of people maintain different parts of it.

  • Around libzmq there are about 50 bindings. These are individual projects that create higher-level APIs for ØMQ, or at least map the low-level API into other languages. The bindings vary in quality from experimental to utterly awesome. Probably the most impressive binding is PyZMQ, which was one of the first community projects built on top of ØMQ. If you are a binding author, you should really study PyZMQ and aspire to making your code and community as great as possible.

  • A lot of languages have multiple bindings (Erlang, Ruby, C#, at least), written by different people over time or taking varying approaches. We don’t regulate these in any way. There are no “official” bindings. You vote by using one or the other, contributing to it, or ignoring it.

  • There are a series of reimplementations of libzmq, starting with JeroMQ, a full Java translation of the library, which is now the basis for NetMQ, a C# stack. These native stacks offer ...

Get ZeroMQ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.