Node.js, a hugely popular open-source framework for building Web applications, could be headed for a painful schism unless its restive contributors and the project’s corporate lead, Joyent, can come to terms.
At stake is a possible “fork” in the Node codebase, a change proposed by some of Node’s most important developers, who are frustrated with the project’s pace and other issues under Joyent’s oversight. A fork would divide the open-source community that supports Node, potentially creating multiple versions of the software, confusion among its users, and business problems for Joyent.
At the moment, the threat of a forked Node remains real, although Joyent has taken some steps to placate the dissidents. The company recently created a new advisory board intended to give Node contributors more of a voice in the project’s direction; that group held its first meeting on October 23.
A fork could still happen, Joyent CEO Scott Hammond admitted to me in an interview last week, although he says that “would certainly surprise me.”
Node’s would-be forkers, meanwhile, are keeping their own counsel. Five of the six main dissidents declined to respond to my inquiries by email and Twitter. The sixth, Ben Noordhuis, replied with a cryptic note advising me to “check Node Forward for announcements in the near future.”
Node Forward is the GitHub repository once intended to host the forked version of Node—which it presumably could still do. At the moment, it’s home to an ongoing discussion about the future of Node.
A Forking Nightmare
Roughly a month ago, six high-ranking Node contributors—including Isaac Schlueter, Node’s former project lead—proposed forking the Node project in order to loosen Joyent’s control over it. (Blogger David Trejo was one of the first to write about the possibility of a Node fork.) Those dissidents include five of Node’s top seven contributors (numbers 2, 3, 4, 5 and 7, to be precise).
In a Google Hangout still available online, five of those developers talked about ways to democratize the project and complained that Joyent’s oversight was slowing the project—for instance, by complicating the process of prioritizing and fixing bugs. The contributors batted around ideas on which parts of “Joyent Node” to include in a new Node Forward version of the framework, and appeared to express other frustrations via live chat that’s not visible to viewers.
The developers also noted that current project management had locked them out of some Joyent resources. Bert Belder, Node’s number-four contributor, said he could no longer access his chat logger in the official Node IRC chat. Schlueter chimed in with his own recent difficulty with irceretary, a Joyent resource for channel-logging the IRC chat—a program Schlueter himself had created as project lead.
“I can’t manage irceretary anymore,” he said at the 35:00 mark. “There’s a bug and a fix I want to push. I pinged TJ [Fontaine, Node’s current project manager] to be like, hey, let me go do this thing, and he just responded with silence.”
Many other developers have flocked to Node Forward to express their frustrations about Joyent’s tight control over information and what they say is its lack of interest in taking feedback from the project’s contributors and users.
“I’m quite frustrated by the lack of communication from the project lead to the community,” contributor Ron Korving wrote in mid-October. “In fact, it feels like the community is pretty much being ignored right now, including those who contribute the most.”
These contributors were especially concerned with Joyent’s power over the project. A company or creator that maintains indefinite control over an open source project is usually dubbed a Benevolent Dictator For Life (BDFL)—and not always fondly. Linus Torvalds of Linux is probably the most famous of these, and even his contributors aren’t always happy.
Fork It All
Popular open source projects like Node have thousands of contributors who don’t always agree how the project should be managed. Threats to “fork” a project by taking the code base in a different direction—and bringing a substantial portion of the original community with it—are extremely common.
They also usually never come to pass. Some developers always seem to be threatening to fork the programming language Python 2.7 in order to bypass Python 3, an upgrade many coders disliked. Yet that particular fork-fest has never gotten underway, largely because its proponents remain a minority in the overall Python community.
See also: How Node.js Stays On Track
But when contributors are high-ranking enough and have a clear understanding of the hard work behind managing an open source community, forks can and do happen. For example, users initiated the successful MariaDB fork of the open-source MySQL database after Oracle acquired it and began moving the project in directions the community didn’t like.
Joyent had no choice but to take the threat of a Node fork seriously, given the prestigious forkers behind it—and the growing number of developers who support them.
No Forking Way
Joyent’s biggest steps so far has been to create the Node Advisory Board. It’s a newly formed collection of primarily corporate representatives intended to give people outside Joyent more of a voice in the project’s direction from now on, Hammond told me.
Hammond notes that five years after Node’s debut, users have downloaded the software to 2 million sites; tens of thousands of organizations have adopted it. Along the way, Node users have grown more diverse—spanning corporate clients, developers, and dabblers.
“As the community grows in complexity, there’s been no real forum for constituents to come together and weigh in on the Node project,” he said.
Joyent appointed two of the forking superstars—Schlueter and Belder—to the advisory board. Schlueter and Belder are Node’s #2 and #4 contributors, respectively. Neither developer returned repeated messages seeking comment.
Still, the dissidents are vastly outnumbered on the board by representatives of established industry. Six of the board’s 15 members hail from huge companies such as Walmart, IBM, Microsoft and Netflix. Two more—Hammond and Fontaine—are from Joyent, giving industry a majority of the panel.
It’s also not clear exactly what the panel will do. It doesn’t actually have any authority over the Node project; its charter explicitly states that the board is not “intended to serve as an authoritative governance board.” The board, according to the charter, “advises, but does not manage the Node.js project core committers team leadership.”
What A Forking Mess
Advisory boards have a mixed history in big open-source projects. Open platform Docker is supposedly run by an advisory board, but it’s still just barely getting off the ground six months after its April announcement; it held its first meeting earlier this month.
The open-source cloud-platform project CloudFoundry has been more successful. Its advisory board has actually existed for some time, but then the project has always been largely driven—and used by—corporations rather than individuals. Node, by contrast, arose as more of a grass-roots effort.
The Node advisory board has met twice so far, although it hasn’t yet posted an agenda or minutes for either meeting on its GitHub page. Hammond said the group spent its first meeting “surfacing all the issues and understanding the purpose of the advisory board.”
From Hammond’s perspective, the board should address open-source contributors’ concerns about Joyent employee TJ Fontaine as Node’s BDFL.
“I think the project has outgrown the benevolent dictator model, at least that is what I consistently hear from the community,” he said. Under Fontaine, Hammond said, “the core team evolved on its own as a consensus driven model. We need to communicate that better.”
Joyent can’t really afford to lose some of Node’s biggest supporters at a time when major companies like Walmart are betting big on it. Joyent needs to move cautiously to ensure that at this delicate time, Node continues to look like the best choice for business even if it’s technically still in beta, shy of the version 1.0 milestone.
Now the question is whether the new panel is enough to convince Node community members that Joyent truly values their input. Stay tuned.
Lead photo by Bex Ross; photo of TJ Fontaine, Node JS Project Lead at Joyent, by Lauren Orsini