Node.js has forked into Ayo

Ayo (pronounced “eye-oh” or IO) is a fork of the popular Node.js JavaScript runtime. It was created because of a Code of Conduct issue in the Node.js project.

A committee at the Node.js project voted 60% in favour of allowing a developer to stay on with the project. The vote put forward to the committee noted some violations of the Code Of Conduct. The fact there was a vote means that they took the Code of Conduct seriously.

Unfortunately, the code of conduct was shown to have no teeth as the committee members voted in favour of letting the developer stay with the project, as pointed out by core NPM contributor maybekatz (update: maybekatz has also been a node core collaborator, member of a working group, and former Technical Steering Committee candidate):

The lack of enforcement of the Code of Conduct has not only resulted in a fork, it has also resulted in a Node.js committee member resigning from their post on the TSC (Technical Steering Committee).

Here is what the developer had to say:

A recent decision by the TSC leads me to believe that the Technical Steering Committee is making decisions that are not in the best interest of the Node.js project. This is not about a specific individual, this is about the values we choose to demonstrate as a project and holding ourselves accountable.

The TSC has final authority over this project including:

  • Technical direction
  • Project governance and process (including this policy)
  • Contribution policy
  • GitHub repository hosting
  • Conduct guidelines
  • Maintaining the list of additional Collaborators

The current decision undermines our Conduct Guidelines, drives away potential contributors, and in my opinion undermines the Committee’s ability to govern.

Driving away contributors can be fatal in the open source world where most developers are essentially using their free time and volunteering to contribute. 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.

Codes of Conduct should be adopted by open source projects because they can help contributors feel safe in contributing, they can increase their courage in submitting a patch. Joining a project can be intimidating, the code of conduct can help with that. It is also a good idea to include a “contributing” document that explains how to contribute to a project and where to begin. Anything that can make it easy for people to contribute to open source projects is a good thing.

Update 11:26am 23rd August 2017: ayo.js has multiple issues opened on github discussing the governance structure and the goals of the project.

One of the issues questions whether re-merging with Node.js is a goal. The most upvoted answer given is:

I just want shit to be fixed. I don’t care what the project is called or who controls it as long as it serves the communities it has worked so hard to push away.

Another issue discusses governance models, such as BDFL (Benevolent Dictator For Life), essentially a person who leads the project for a long enough (1 to 2 years) term to accomplish the roadmap laid out by the committee and the community. There is a suggestion to have multiple working groups focused on different areas of the project with the TSC (Technical Steering Committee) overseeing and confirming their progress and ideas.

While some may see this as a social/organizational fork that could fade away, my personal opinion is that it is a bet on how much codes of conduct and other tools and tactics can increase contributions and attract more open source developers and retain them. Most open source projects consist of a few developers so our community doesn’t often have discussions about how projects should be organized, about whether more democractic models could work.

Update 3:15pm: found a good video explaining codes of conduct

Update 5:34pm: revised the title of maybekatz from the generic Twitter user to core NPM contributor along with other titles.

Update 11:03am 24 August 2017: Node.js board has released a statement on github regarding the situation. Confirmed that 4 members of the Node.js TSC (Technical Steering Committee) have resigned.

Node.js board will be holding a private meeting in four days to discuss situation and response along with review of governance of the project:

Earlier this week, the Technical Steering Committee (TSC) announced the results of a vote to remove a member from the TSC based on a pattern of behavior, summarized in nodejs/TSC#310. The vote asked two specific questions: Should the member be removed from the TSC and should the member be asked to voluntarily resign from the TSC? For both questions, the results were the same: six responded ‘No’, four responded ‘Yes’, two members of the TSC abstained, and one member was recused. As a result of this vote, four TSC members stepped down from their positions: Anna Henningsen, Bryan Hughes, Myles Borins, and Jeremiah Senkpiel.

We, as well as the community, were deeply concerned by these events, and as a result convened a private, meeting of the Node.js board on Tuesday August 22nd. It was deemed necessary to clearly articulate our position and values as the Node.js Foundation Board as follows:

When the Node Foundation was formed in 2015, it was critical to all stakeholders that the authority over day to day governance of the project be granted exclusively to the TSC and this is reflected in the committee’s charter. This was specifically to provide independence to the TSC and empower it to self govern. However, recent incidents have indicated that the governance rules of the TSC are not adequate to address situations such as this. Specifically, individual Code of Conduct issues often transcend the current rules available to address them, affecting the ability of the larger Open Source community to engage and participate in the Node.js project. If conduct issues cannot be resolved acceptably by the TSC under its existing rules, we, as the Foundation Board, have to evaluate whether the structures created at the beginning of our Foundation’s journey need to be adjusted in order to address these issues appropriately. The Board will look at options for long term solutions to these issues.

The health of the Node.js community is of paramount importance to the Board, and the behavior of Node.js leadership is critical to this health. The Board does not support antagonistic, aggressive or derogatory behavior in the community and leadership and expects that the TSC will enforce its Code of Conduct equally amongst community members, collaborators, and leadership. Accordingly, we urge the TSC to revisit this issue and suspend the individual involved from active TSC participation until this matter is resolved, hopefully with consensus, including support from those who recently resigned, if they would be willing to help.

We believe that this issue is extremely important and that timeliness and thoroughness of response is critical. As a result, the Board will be devoting the entirety of its August 28th meeting to a private discussion of the current situation. In this session, we’ll be focused both on responding to this incident, as well as reviewing long term governance changes to the TSC, CTC, and Community Committee Charter and rules while respecting the need for these groups to preserve their independence of operation. Due to time constraints, the public board meeting will be canceled for this month, however, we will continue to communicate updates to the community, as they become available. If any member of the community has questions they should direct them to:

  • Mark Hinkle, Executive Director, Node.js Foundation

The Node.js Board of Directors

update 10:53am 25 August 2017: Rod Vagg, the developer accused of causing issues whose committee membership was voted on, has published a statement.

He starts with why there two committees existed, the TSC and CTC:

One of the reasons that we initially split the TSC into two groups was to insulate the technical doers on the CTC from the overhead of administrative and political tedium

This sounds reasonable, as not everyone wants to get involved with organizational issues. Most contributors for example just need to deal with technical issues.

He suggests that what others call facts about his behaviour on the Node.js project are slanderous:

I cannot, in good conscience, give credence to the straw-man version of me being touted loudly on social media and on GitHub. This caricature of me and vague notions regarding my “toxicity”, my propensity for “harassment”, the “systematic” breaking of rules and other slanderous claims against my character has no basis in fact.

He goes on to express his opinion on the organizational issues and to address some of the claims made against him.

According to him, he was given no opportunity to answer complaints made against him:

At no point have I been provided with am opportunity to answer these complaints, correct the factual errors contained in them (see below), apologise and make amends where possible, or provide additional context that may further explain accusations against me.

And he continues:

At no point have I been approached by a member of the TSC or CTC regarding any of these items other than what the record that we have here on GitHub shows…I have had interactions with only a single member of the TSC regarding one of these matters in private email and in person which has, on both occasions, involved me attempting to coax out the source of bad feelings that I had sensed and attempting to (relatively blindly) make amends.

These statements suggest an issue with the processes in place at the Node.js project, and how complaints amongst members are to be dealt with and addressed.

Also of note is his support in general for Codes of Conduct:

4. To re-state for further clarity, I have not made a case against Codes of Conduct in general, but rather, would like to see ongoing discussion about how social guidelines could be improved upon, as they clearly have impact on open source project health.

5. I have never made a case against the Node.js Code of Conduct.

6. I have a clear voting record for adopting the Node.js project’s Code of Conduct and for various changes made to it. Codes of Conduct have been adopted by a number of my own projects which have been moved from my GitHub account to that of the Node.js Foundation.

It is well worth reading and it gives us the other side of the story. I won’t inject my opinion about his response here, only to reiterate that open source devs are volunteering their valuable time and social and organizational issues can have a heavy impact on contributions to projects.


  1. […] Ce dernier, composé de 13 personnes, s’est prononcé par un vote sur le maintien de Rod Vagg dans le projet. 60% des votants ont refusé de voir partir le directeur de Nodesource et 60% ont refusé également qu’il démissionne de son propre chef. Ce vote a enflammé la communauté en comptant plusieurs démissions. Résultat final, plusieurs contributeurs ont décidé de lancer une solution Node.js dérivé. Le fork se nomme Ayo. […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.