How to build a community. Translation of Social Architecture: Chapter 3. ZeroMQ Community

Original author: Pieter Hintjens
  • Transfer
Can we purposefully build communities?

imageI am sometimes asked what is so special about ZeroMQ. To this I always answer that ZeroMQ is perhaps the best answer we have to the burning question “How to create distributed software tools that are required of us in the 21st century?” . But beyond that, ZeroMQ stands out thanks to its community. What distinguishes wolves from sheep.

There are three main open source patterns. Firstly, when a large company throws a code on the market to deal with competitors. This is the Apache Foundation model. Secondly, when tiny teams and small companies build their dreams. This is the most common open source model that may be the most commercially successful. And finally, aggressive and diverse communities, all crowd wading through the jungle of problems. This is a Linux model, and here we are striving for it in ZeroMQ.

It is hard to overestimate the power and perseverance of a working open source community. There is probably no better way to create software in the long run. The community not only deals with solving the most relevant problems, but also does it optimally, carefully, observing the results for years, decades, as long as they remain important, and then calmly leaves them.

To get the most out of ZeroMQ, you need to understand the community. At some point you will want to offer a release, patch or addon. You may be tempted to ask someone for help. You may want to take a commercial role in ZeroMQ, and when I warn you that the community is much, much more important than the company supporting its products, although I am the company's executive director, this has a lot to tell you.

In this section, I will look at our community from different angles and in the end I will talk in detail about our cooperation agreement, which we call “C4” . You will find this information useful for your own work. In addition, we have successfully adapted the ZeroMQ C4 method for closed source projects.

ZeroMQ Community Architecture


You know that ZeroMQ is a project with the LGPL license (author's note: we are leaning towards Mozilla Public License v2, which also acts, but is simpler). This is actually a collection of projects built around the libzmq root library. I present these projects as an expanding universe:

  • In the center is libzmq, like the root library of ZeroMQ. It is written in C ++, with a low-level C-API. The code is pretty wayward, mainly because it is highly optimized, and also because it is written in C ++, in a language that is itself quite insidious and crappy. Most of the original code was written by Martin Sustrik. Today, dozens of people are engaged in supporting its various parts.
  • Libzmq has about 50 binders. These are individual projects that create high-level APIs for ZeroMQ, or at least display low-level APIs in other languages. These bindings vary in quality, from pen samples to masterpieces. The most impressive of these is PyZMQ, which was one of the first projects of the ZeroMQ community. If you are developing binders, you just need to learn PyZMQ - with inspiration, you will make your code and your community just as cool.
  • Many languages ​​have numerous binders (Erlang, Ruby, C #, for example), written by different people at different times, using different approaches. We do not regulate this in any way. There are no "official" binders. Using one or the other, you vote for him, participate in its development, or ignore him.
  • There are several new uses for libzmq, starting with JeroMQ, the complete Java translation library, which is now the base for NetMQ, the C # stack. These stacks offer similar or identical APIs and use the same protocol (ZMTP) as libzmq.
  • Based on binders, there are thousands of projects that use ZeroMQ or are built on it. Most of them are not part of the official community, only some of them, for example Zyre and Malamute.

Libzmq, most binders and some of the external projects are present in the "organization" of the ZeroMQ community on GitHub. This organization is “managed” by a group of the youngest binders. There is little to manage, because it is almost self-governing and there are currently no conflicts.

iMatix, my company, plays a specific role in the community. We own trademarks and monitor each one to make sure that if you download a package called “ZeroMQ”, you can trust its contents. There were several attempts to unauthorized use of the name, apparently the pirates thought that "free software" means no man's defense and defenseless. After reading this chapter, you will see how seriously we take the work done on our software (and by "us" I mean the community, not the company). iMatix supports the community by monitoring the functioning of everything called ZeroMQ. We also invest money and time in software and its deployment.

We do not do charity work. ZeroMQ is a commercial project, and it is quite profitable. Profit is divided into a large number of people involved in its development. Everything is just that, uncomplicated: take the time to become an expert in ZeroMQ or add something useful on top of ZeroMQ, and you will benefit from growth as an individual, team or company. iMatix gets the same benefits as everyone else in the community. This is a mutually beneficial relationship for everyone except our competitors, who understand that they can’t cope with this threat and can’t avoid it. ZeroMQ will dominate the future world of widely distributed software.

My company does not just protect the community - we also created the community. We focused on this purposefully: in the original ZeroMQ technical description from 2007 it was stated that there were two projects. One was technical, aimed at creating a better message delivery system. The second was to build a community that could lead software to success. The software is dying, but the community is living.

How to create truly great architectures


There are two ways to make truly large-scale software, as already mentioned (at least by those who read this sentence out loud).

The first way is to throw huge amounts of money and problems at the discretion of smart people and hope that the result will not be an end to your career. If you are very lucky and create a product based on vast experience, and you were able to keep the teams together, and do not strive for technical excellence, and from now on, luck will not turn away from you, it will work.

But gambling on other people's hundreds of millions is not suitable for everyone. For all others who want to create large-scale software, there is a

second way- open source, more precisely, free software. And if you ask what is the relationship between the software license and its scope, then this is the right question.

The ingenious and insightful Eben Moglen once said that a free software license is like the contract on which the community is built. When I first heard this, about ten years ago, I had an idea - can we purposefully build communities?

The answer received ten years later is yes, moreover, now it is almost a science. I say “almost” because we still do not have enough evidence that people do this purposefully, there is no documentation and no confidence that this process can be accurately reproduced. This is exactly what I'm trying to fix withSocial Architecture . ZeroMQ appeared after Wikidot, after the Digital Standards Organization (Digistan) and after the Foundation for a Free Information Infrastructure (FFII, a non-governmental organization that fights against software patents). All of this came after many less successful communities like Xitami and Libero. The conclusion that I made from long work with various projects is as follows: if you want to create truly large-scale and durable software, strive to build a free software community.

Translation of the book “Social Architecture”:




about the author
“Unfortunately, we do not choose death for ourselves, but we can meet it with dignity to be remembered as men.”
- film “Gladiator”



Peter Hincjens (Belgian developer, writer). He served as CEO and chief software designer at iMatix , a company that produces free software , such as the ZeroMQ library (the library takes care of part of the data buffering, queuing, establishing and restoring connections, etc.), OpenAMQ, Libero , GSL code generator , and the Xitami web service .


Read more here: For thirty-five years, as a necromancer, I breathed life into dead iron using a code

It's time for my last article. I could write more, there is time, but then I will think about other things: about how it is more convenient to get in bed, when to take painkillers and about the people next to me.

... I want to write one last model, the last protocol, which is dedicated to how to pass away, having some knowledge and time left. This time I will not format the RFC. :) The
protocol of death

The site of Peter Hinchens
Wikipedia article

Thoughts and ideas of Peter Hinchens on Habré:


About the book translation project
I, with the support of Filtech-accelerator , plan to publish a translation of the book “Social Architecture” on Habré (and, perhaps, in paper) . IMHO, this is the best (if not the only adequate) allowance for managing / building / improving communities focused on creating a product (and not for mutual grooming or “worship” of a leader, sports club, etc.).

Call to action
If you have in mind projects / startups with a high share of technologies aimed at the public good in the first place and at making profit as an auxiliary function (for example, like Wikipedia), write in a personal message or register for the accelerator program .

If you send links to articles, videos, courses at Coursera on managing / building / improving product- oriented communities, I have a chocolate bar.

Also popular now: