After years of battling a string of systematic failures of governance and leadership, the Node.js community, one of the largest collectives of software developers on the internet, reached a breaking point.
Node.js steers the ship for the powerful open-source web technology. It's relied on by dozens of Fortune 500 companies, like Microsoft, Netflix, and PayPal, for their critical infrastructure and core operations.
Its stable governance isn't just necessary for the businesses that rely on it, but also the core community that develops and advanced the widely-used technology.
But Monday saw a stream of resignations, one after the other throughout the day from Node.js' technical steering committee (TSC), a group that manages the day-to-day governance for the Node.js project. A third of the committee had quit their positions by the end of the day, including its first woman member. Three of the resigned members said they will stay on the core technical committee (CTC), which oversees the project's core collaborators and code contributors. One person has left the project entirely.
The resignations followed a single event -- a vote that failed to remove a former director, a longstanding member of the community, from the leadership group. Many of the complaints, since removed from the committee's pages, document a litany of violations of the community's code of conduct.
The failure to have him removed from the position was seen as the embodiment of years of efforts to reform a pattern of harmful behaviors that was tearing the community apart.
"If someone were to look for a smoking gun of a comment or the obvious thing -- or something to do with race, or gender, or something you can point to the world -- then this would've been done and over with," said William Kapke, one of the two elected members of the Node.js board that oversees the three governing committees.
That inability to hold members of the leadership committee accountable was the spark that has led to a chain reaction of events poised shaking up the Node.js community, according to several people who spoke to ZDNet, some whom asked not to be named, for this story.
* * *
Those who spoke to us said the tumultuous events of this week were a long time coming.
Members of the TSC voted Monday by a slim majority to keep Rod Vagg, the committee's former director and Node.js board member, on the committee, despite a litany of complaints about Vagg's prior behavior. The board's executive director, Mark Hinkle, who, when reached did not comment for this story, said in a public statement that the board was "deeply concerned" by the resignations. The board asked the TSC to suspend Vagg until the process of handling the situation was resolved.
The board specifically called the TSC to "enforce its code of conduct equally amongst community members, collaborators, and leadership," the statement read, a sentiment echoed by several people who spoke to ZDNet.
"This isn't about a particular incident," said Ashley Williams, another elected board member. "It's about a long-standing pattern of insidious behavior that walks that line of violations."
"Rod's behavior was non-collaborative, consistent, and unapologetic," said Williams, who, like Kapke, was speaking in a personal capacity and not on behalf of the board.
"This was a systemic failure of leadership, and Rod was one of the most prominent examples," she said.
"Fundamentally, this situation is a failure of just the TSC to self-govern," she said. (The TSC holds the responsibility for moderating the committees, including its own -- a task it has failed to upkeep, many say.)
It was for that reason that news of the resignations didn't surprise the Node.js community.
The community's reliance on a code of conduct acts as the de facto HR department for the project, which lets participants and members contribute while treating others with respect. It's meant to ensure a workplace free from harassment and unacceptable behavior, while promoting sharing of ideas in a constructive way, and to foster community growth.
But that code of conduct, as Kapke pointed out, doesn't allow the stifling of free speech or marginalizing of people's views or opinions that might be disagreed with. It's designed to bring together a diverse range of people from different cultures, beliefs, genders, and backgrounds from across the world to work on a project and be treated fairly -- a core value of any global collaborative open source project.
"There's better value in having diversity than having some individual have the free speech that would work against others," he said.
That toxic culture in Node.js' governance has led to an inclusivity problem.
Williams' began an inclusivity group of about a dozen people, an initiative aimed at ensuring fairness for everyone who wants to contribute to the community. The group eventually disbanded, accusing the leadership of "continued derailment" and opposition to proposals that the group argued would make the community more cohesive.
All the women and non-binary people left the group, as did several men, following the disbandment last August. Many have decided to leave the Node.js community altogether.
"Driving away contributors can be fatal in the open source world where most developers are essentially using their free time and volunteering to contribute," said Rudolf Olah, a web developer, in a blog post. "It is already difficult enough to attract contributors to smaller projects, and larger projects, such as Node.js, need to be careful to make all contributors feel welcome," he said.
Myles Borins, a former TSC member who resigned Monday, also said in a blog post that complacency is "not acceptable."
"We cannot be complacent about our culture, we need to actively maintain the culture we want to see -- a culture that is diverse and inclusive, a culture that we can all be proud of," he said.
These aren't unrealistic complaints or desires in a community that many center their lives on -- many are employed by companies that are stakeholders in the Node.js community and contribute code to the project.
Some of those we spoke to, including a self-described "unabashed white man," who didn't want to be named, as they were not authorized to talk to the media, also spoke of unhealthy attitudes and unacceptable behaviors among Node.js' committee leadership.
Williams said that the public outcry "was just ever increasing."
When the TSC voted to keep Vagg on the committee, that was the straw that broke the camel's back.
Vagg's conduct is seen as a "red herring" for wider inappropriate conduct by leadership, echoed by others who left the community following the vote.
"A single person who is causing problems in and of itself isn't that big of a deal," said Bryan Hughes, a former TSC member, in a blog post. "This happens all the time in non-private social media. What matters is how those overseeing the space handle it," said Hughes. "The majority of Node.js TSC members have repeatedly shown that they do not want to handle the situation, with some going so far as to say they do not even think there is a problem."
The inability for members of the TSC to "look at the entire picture" of a person's behavior rather than each broken rule is where trust in the system broke down, Kapke said.
"Give them a rule and they will say 'yes' or 'no'," he said. Kapke added that the outside optics of the vote not to remove Vagg, despite a body of accusations levied against him, "didn't look good." (Vagg, when reached by email, would not comment on the record beyond a lengthy blog post in which he stated he will be "standing my ground.")
"I'm confident that the individuals who voted on this didn't quite realize how big of a thing this was going to be, and at this point realize that they see the trouble this was going to cause but didn't know then," he said.
"Maybe they would've decided differently at the time."
* * *
Moments after the failed leadership vote, Kat Marchán pushed the button that created Ayo.js, a new open-source project forked from Node.js.
Ayo.js -- a hat-tip to the Io.js (pronounced the same) project that forked from Node.js three years ago over a similar disenchantment over the software's stewardship under its founding company Joyent -- was born this week.
Days old, it's already got a dozen developers and over a hundred people involved on the project's chat platform, said Marchán.
"If the few people who hold a lot of power can stop the community from doing what the community needs to do, then they're no longer representing us," Marchán said. The project -- a carbon copy of Node.js from the point it was forked -- is still in its infancy, but it's already working on a new open governance model that aims to mitigate some of the troubles faced by those who've worked in the Node.js hierarchy.
Ayo.js is already seen as a reminder that open source technologies must be open and transparent. If the community doesn't feel represented or heard, it can create its own.
"Ayo.js is not about vilifying Node.js or killing Node.js," Williams said. "It's about making Node.js better."
"It's the idea that Node.js could be so much better, and looking at the failures of governance which have prevented many awesome people from joining this project," she said. (Williams is not involved with the project given her position on the Node.js board.)
"Human systems require a set of shared values. Values, in a technical ethical sense, are a means by which people make decisions about trade-offs," said a senior person in the Node.js community, who did not want to be named for this story. "Values are very rarely shared 100 percent between any group of people -- and in fact, even individuals frequently have internal conflicts about values, so it's not terribly uncommon for there to be irreconcilable differences between people working on a project."
Supporting the move, the person said about Ayo.js: "It's a very direct-action way to say, 'These are our values, we have not been heard, and we will leave if we are not satisfied'."
The idea of a project splitting in two has been jarring to many and left some feeling unsettled about the future of the Node.js project. But Marchán and others that ZDNet spoke to aren't concerned. The success of Ayo.js is seen as fundamentally the success of Node.js -- like Io.js, which rocketed to success before it was later merged back into Node.js. Open-source projects that fork can take existing work, develop the weaknesses and build on the technologies, and selectively bring the best back to the original project.
"In the long term, I think the community wins," Marchán said.
* * *
The question we asked everyone that we've spoken to is: "Now what?"
This deep-running acrimony in the community will not go away overnight, and the aftermath of one member's expulsion could lead to logistical issues moving the technology forward. And in any case, this isn't a situation where removing one person will fix the community, several people told ZDNet.
Several suggestions have been put forward to try to shuffle the governance structure in the hope that a clean slate will help rebalance the levels of power across the community.
How successful they will be remains to be seen.
James Snell, director of the TSC, has proposed merging the CTC and the TSC, "effectively dissolving" the CTC, and to hold new elections -- including a new chair and director position. Members would be limited by term limits, according to another proposal.
The board, which oversees both committees, has indicated that it will likely accept this proposal at an upcoming board meeting. (When reached, Mark Hinkle, executive director of the Node.js Foundation, would not comment beyond the board's statement, posted Thursday.)
Snell confirmed in an email to ZDNet that if the committees were to merge, he "will be stepping down as TSC director and will be calling for a new TSC director election," but he will remain a TSC member.
Williams said that merging the two committees will increase the diversity across the committees, and it will better help the ecosystem that's "fundamentally driven by the community."
Others are less than optimistic. Kapke said merging the committees would be at best a "band-aid solution," unless more can be done to ensure a better makeup of the committees, which won't ignore code of conduct indiscretions.
It's clear that an organizational shake-up is necessary, but the information and contributorship vacuum that's left in its wake could hobble the efforts of the Node.js project until a new wave of members can join. And while there will be times in the near future where there is valid uncertainty and concern at what comes next, the community holds an underlying hope that the short, sharp shock of these changes in the coming days and weeks will be for the better in the long run.
"A lot rides on the board and the current committee leaderships doing the right thing," Williams said. "If they don't, then there's going to be some hard questions to ask."