Node.js 只是被 forked，不是被 f***ed 已翻译 100%
There has been a great deal of fuss made about the fact that nodejs has been forked into another project, iojs. So much so, that an article about it even showed up on wired.
Unsurprisingly, everyone has been quick to proclaim that nodejs is facing certain doom. Titles like “Future of Popular Coding Tool in Doubt After It Splits in Two”, and my personal favorite: "Popular Coding Framework Node.js Is Now Seriously Forked".
Responses like this are reactionary. First, let’s examine why nodejs was forked in the first place. To the best of my understanding, the primary issue was that Joyent was moving too slowly. Slow to create new releases, slow to accept PRs, slow to accept community members’ recommendations for new features.
The thing is, there’s nothing strange about why Joyent has been doing this. They’ve stated before “We’re very cautious when we make changes and add features that we’re adding them for the right reasons and fixing the right things”. Basically, Joyent knows they are on the verge of something big and they don’t want to screw it up. “The last thing we want to have happen to the Node ecosystem is to create a Python 2, Python 3 situation”.
The iojs team seems have a very different model in mind. They want quick releases, big changes, new features, and freedom for the community to take the project in whatever direction they feel. They are not wrong.
There are a lot of advantages of Joyents’ strategy, as well as iojs’ strategy. Both are incredibly valid.
As I see it, there are a couple possible outcomes:
Nodejs remains more popular and industry wide, with some open source purists preferring iojs
Iojs actually ends up being a much better piece of software under their open governance model, and nodejs users switch over
Nodejs and Iojs both are great products, and software engineers use both of them
None of those are bad outcomes. This is precisely the beauty of open source. Iojs makes something awesome, and the guys at nodejs copy the feature. The reverse situation could also happen. This idea that there are ‘tribes’ within open source is quite silly. Either party can copy the other at any time. If anything, their competitiveness may increase the quality of both pieces of software. It’s kind of like saying Screw you guys! I’m going to go build a better version of your free software and you can copy my improvements at any time. Yeah! That’ll show you!
Now, some people will scream about fragmentation. I have two thoughts on this:
Iojs is specifically said to be node and npm compatible. Presumably, this makes the fragmentation point a non-issue, as packages should be cross compatible on both software platforms.
What has happened with iojs is a normal part of the open source world. Hell, it happened with meanio and meanjs, and that’s one of my favorite frameworks right now. Bad news gets clicked on, and developers especially seem to be ready to pounce and proclaim “X framework is dead, everyone’s leaving for framework Y now”.
I think it’s amazing that the engineers working on iojs were able to do what they did. If they were working on a propriety technology, they would have had no such option. Instead, they can continue to contribute to an amazing piece of software in their own way. That’s the freedom of open source.