[nanomsg] Moving forward

  • From: Garrett D'Amore <garrett@xxxxxxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Wed, 18 Mar 2015 14:20:59 -0700


As many of you know, I’ve a keen interest in nanomsg, having contributed code 
to it, as well as having written a separate wire-compatible implementation in 
Go (my oft-mentioned mangos project).  I’m also deploying real services on it 
in production.

Lately, I’ve become, frustrated, shall we say? with the lack of clear direction 
within this community.  And I think I’m not alone — several people have reached 
out to me separately, with concerns for this project’s future. 

I think a big part of the problem is that we’re all still reliant on Martin’s 
stewardship here.  Unfortunately, between his new gig at Google, and his 
changing interests (c.f. Mill) I think he lacks either time, or sufficient 
interest, to effectively steward this project he helped create.

I at least, cannot wait indefinitely for this situation to resolve itself.

So, as I see it there are only really a few options forward:

a) Martin suddenly renews his interest and activity in the project, and 
reasserts control and leadership.

b) The community (working with Martin’s consent), appoints some additional 
leadership, who can be called upon to provide technical leadership to keep the 
project moving forward.  (Indeed, I think this is similar to what happened with 

c)  A new fork is started from nanomsg.

I’m happy with any of these three options.  Indeed, I’m on the cusp of option 
“c”; I’d feel a lot better about going down that road if there were signs that 
others wanted to follow me there — even participate in the effort.  I think my 
work on mangos has at least given me some legitimacy here.

If I wind up starting a new fork, I’d like to leave the door open for a 
possible re-merger with libnanomsg, along the lines of gcc / egcs (for those of 
you old enough to remember that.)  That said, its important to me that there 
are clear directions forward.

Note that I *also* have been toying with a full-on rewrite of libnanomsg in C 
using pthreads or C11 threads.  This would be much closer to mangos in spirit, 
at least in the internal implementation, to better support extensibility — for 
example I want to explore adding different transports like a richer websocket 
backend, TLS support, or possibly even CurveCP.  I’d view this as a separate 
effort to keeping the forked libnanomsg (or whatever its new might be) current. 
 (Put another way, I’d like to get to at least 3 separate wire-compatible 
implementations.  Maybe even more if I can get someone to pick up the 
javascript work I want to see done.)

I guess this means I’d like to see folks opinions about the three options 
above.  In many ways the last option, c, is the least desirable to me, but it 
is the one I have the most control over — anyone can fork (through the beauty 
of open source), and so it gives me at least one guaranteed out, if the other 
two don’t pan out.  My goal here is not to tear the community apart with a 
competing fork.  But neither do I want to see it die a slow death of neglect.

Martin, if you’re out there, a reply on this thread would be most appreciated.

Everyone else, if you’re willing (or unwilling) to contemplate working with a 
forked version, I’d appreciate knowing.

        - Garrett

Other related posts: