[zeromq-dev] Idiot guide to update mlm server project

Pieter Hintjens ph at imatix.com
Sat Apr 9 12:24:26 CEST 2016

On Fri, Apr 8, 2016 at 9:43 PM, Matjaž Ostroveršnik
<matjaz.ostroversnik at gmail.com> wrote:

> I managed to locally extend the mlm server with:
> - ability to make out of source builds for cmake
> - support for blobs for service interface
> - curve support

Nice stuff :)

I'm writing a book on how the development process for pieces like
Malamute works, at scalable-c.com. It's still in progress, but what
there already is may help.

There are a few ground rules. You've been editing files that were
generated, and they quite clearly say so, in their header. When you do
this, you are writing throw-away code.

This is always the tradeoff with code generation. More power, yet
harder to learn.

You need to learn two main tools: zproto and zproject. Each has a set
of code generators, each producing a set of outputs from one or more
input "model" files. It is quite flat, little abstraction, so easy to

E.g. to change the client state machine you edit mlm_client.xml. (And
again, it says this clearly in the header of mlm_client_engine.inc!)
and then you run "make code" to regenerate.

The second thing is, one change at a time. Start with the simplest
change, get a PR, learn the process, and then move to the next change.
Don't come to a project with a large change set, or people will
probably refuse it (and that's in our C4 process).

If you find a generated file that does not clearly state its origin,
tell us and we'll fix it.


More information about the zeromq-dev mailing list