Live data from Hacker News

Nanomsg postmortem and other stories

sealedabstract.com

21–30 of 32 posts

Re: Nanomsg postmortem and other stories

#21
This piece is excellent. The backstory on the zeromq and nanomsg projects is fascinating and generously detailed. The trick of reaching out to gather rejected contributors is good humanity and practically clever. The rule about monitoring contributor entrance and exit rates, I get.

But I'm struggling with the implemention of the rule.

In almost every case, it is better to merge even a bad patch than to turn away a contributor for the projects I already struggle to maintain. So I try to get the patches improved, but I merge them even when I can’t. Even bad patches are better than none.

With all due respect to the OP and everyone who have poured blood, sweat, and tears on these projects and as maintainers of others, this point is hard to swallow. How bad of a patch is ok to let through? How complex? How much of a deviation from the original design? Is the contributor going to be around to fix regressions impacting other users? If the patch is complex and taking the software in a different direction, is it a good direction for existing users and will people get on board to do the work to update the rest of the code? I think these questions are vitally important for maintainability, correctness, and performance of software in general. I would guess hashing them out is a significant portion of the actual work in open source projects and are why people fight on mailing lists and say no to patches in the first place. We fight because we care?

Working out the answers to these questions is so, so much work, and people just want their patches taken and maintainers just want to get on with their lives, so taking anything that comes along as a means of keeping the project moving may be the only hope in some cases. But I find it hard to believe it doesn't backfire more often, on grounds of user support and principles of software maintainability.

To name a couple projects that have had some success with different approaches, I've noticed the Clojure project seems to maintain a vibrant contributor rate while also exercising strict design control from the top. Project leadership takes heat for rejecting, in particular, feature requests, but from what I've seen they will work with you if you will take the time to work out your design in a way that fits the language and the maintainers' vision.

Secondly, the Waf maintainer strictly will not merge patches that change APIs, break anything for users, or do much of anything wonky internally, but from what I've seen he will work with anyone introduces new functionality that doesn't break old code and is in line with his view of the project. He worked with me to whip a shoddy patch into shape. I was grateful he bothered at all, and it would have been disastrous if he'd just merged it. Somehow he walks the balance of rejecting bad patches and protecting users while also merging quite a few hit-and-run contributions. The maturity of the project and decoupled architecture finely honed for the problem space may help support this style of maintenance.

So at least in those two cases the answer lies in a very skilled balance of engineering and social concerns, but not necessarily any patch is better than none.

Re: Nanomsg postmortem and other stories

#22
post #20

What I don't really understand is what's fundamentally wrong with ZeroMQ to warrant such forks. The project has a large user base and is very established. What's unfixable about it? It was pretty obvious to me that nanomsg had very little chance to thrive. For an outsider what's so radically different about any ZeroMQ competitor?

The nanomsg documentation (linked from the article) lists a number of fundamental differences between it and ZeroMQ. Some of them are implementation details, but there are quite a few fundamental design/API changes that would be impossible to make in an existing library.

http://nanomsg.org/documentation-zeromq.html

Re: Nanomsg postmortem and other stories

#23
post #2

nanomsg was an interesting successor to the bloated/C++/LGPL zmq, but it succumbed to old ways that don't work anymore. It's 2016 and you can't run an (intended) global-scale open source project by just being "code nerd in chief." If you can't run an open feedback-driven community and if you can't be chief architect (also means communicating plans constantly, not just 'do whatever you want') and if you don't possess…

Not sure who keeps downvoting you, but your core observation is ultimately correct - public expectations of what comprises an "open source project" have changed substantially in recent years. Linux kernel is an open source project, but your Hanoi towers solver in Brainfuck is not. I mean technically it is, but you have to have balls to call it an open source project.

Re: Nanomsg postmortem and other stories

#24
post #21

This piece is excellent. The backstory on the zeromq and nanomsg projects is fascinating and generously detailed. The trick of reaching out to gather rejected contributors is good humanity and practically clever. The rule about monitoring contributor entrance and exit rates, I get. But I'm struggling with the implemention of the rule. In almost every case, it is better to merge even a bad patch than to turn away a co…

Martin Sústrik wrote about this: "Let's stop kidding ourselves about APIs" (http://250bpm.com/blog:55)

There are more posts on his blog that seem to touch on subjects mentioned in the OP.

Re: Nanomsg postmortem and other stories

#25
post #19
post #17

Earlier quoted context omitted.

99.99% of open source project does not and cannot match these expectations and it is so out of touch with reality just to assume so. Most successful open source project (apart from the well known 0.1%) are run by 1-2 maintainers and contribution from the so called community amounts to a few percent of the total work at best - look at the contributors graph of popular github project. Unless projects are able to bootst…

a mile long issue list on github, If you have enough users to have "too many issues to handle," then you're big enough that you need an official governance and contribution structure. You're also big enough where you'll have a pool of high quality contributors to promote to project-level-oversight status. Nobody is saying "do all this work for free forever," but people are saying: "You have too much work you're avoid…

> If you have enough users to have "too many issues to handle," then you're big enough that you need an official governance and contribution structure

I'm sure e.g. Ruby on Rails and Bootstrap would like some pointers on how to setup "an official governance and contribution structure" to handle their the long issue and PR lists.

> Why refuse to let other people help?

Very few if any wants to use their free time to work through an issue list like that. Someone might do it once and write a blog post about it, but unless someone does it all the time it does not help much.

Open source might be perceived as a free commodity, but like a public toilet, no one likes to cleanup and especially for free. Likewise, help in the form of P.R.s doesn't much help either unless it is aligned with the overall vision of the project. It more often than not isn't.

Re: Nanomsg postmortem and other stories

#26
post #12

So, what is the spiritual successor of 0mq? I think a lot of use cases that would have been covered by 0mq are now handled by more higher level abstractions like consensus protocols or more heavy weight message queues (which absolutely makes sense), but what would be a modern (i.e. maintained) alternative for the simple "pub-sub via TCP" use case of 0mq?

> So, what is the spiritual successor of 0mq?

0mq seems to be the successor of 0mq.

Re: Nanomsg postmortem and other stories

#27
I wanted to use nanomsg 6 months ago. Google alone, at the time, had it as a better zmq. I had to really read between the lines at the time to figure that it was losing momentum. It was not an easy sense.

I'm glad this forthright piece puts nanomsg incontrovertibly to pasture. It's thanks to clear pieces like this that people are able to navigate the open source world and choose technologies which, if they may not be theoretically the best, have the much more important characteristic that they are long lived, alive.

Re: Nanomsg postmortem and other stories

#28
post #21

This piece is excellent. The backstory on the zeromq and nanomsg projects is fascinating and generously detailed. The trick of reaching out to gather rejected contributors is good humanity and practically clever. The rule about monitoring contributor entrance and exit rates, I get. But I'm struggling with the implemention of the rule. In almost every case, it is better to merge even a bad patch than to turn away a co…

ZeroMQ's Collective Code Construction Contract [1] goes into a lot of my question areas in concrete detail. It puts fair burden on both contributors and maintainers and clearly delineates the roles. Relevant to my post is the focus on identified and agreed problems and the requirements that contributors use the issue tracker and work to consensus on the validity of their observations and solution.

[1] http://rfc.zeromq.org/spec:22

Re: Nanomsg postmortem and other stories

#29
post #12

So, what is the spiritual successor of 0mq? I think a lot of use cases that would have been covered by 0mq are now handled by more higher level abstractions like consensus protocols or more heavy weight message queues (which absolutely makes sense), but what would be a modern (i.e. maintained) alternative for the simple "pub-sub via TCP" use case of 0mq?

> So, what is the spiritual successor of 0mq?

Why does it need a "spiritual successor"? Its a live project.

> what would be a modern (i.e. maintained) alternative for the simple "pub-sub via TCP" use case of 0mq?

0mq is maintained.

Re: Nanomsg postmortem and other stories

#30
post #21

This piece is excellent. The backstory on the zeromq and nanomsg projects is fascinating and generously detailed. The trick of reaching out to gather rejected contributors is good humanity and practically clever. The rule about monitoring contributor entrance and exit rates, I get. But I'm struggling with the implemention of the rule. In almost every case, it is better to merge even a bad patch than to turn away a co…

Just to answer the clojure question, my take on it is that the popularity of the project in general means that the rate of new contributors is greater than the rate of those leaving even when you allow for rejections. That's a fairly enviable position to be in, and your average open source project can't rely on being the next clojure.
Post reply on HN