Growing Up

io.js needs a foundation.

In 2012 things were going well for node.js. We had a thriving community, solid core contributions, and it was already clear that we were the fastest growing ecosystem in the world. Around this time a few people noted their concerns about the ownership of the project. Community had been driving the project quite successfully so when people raised these concerns myself and others considered them tin foil hat hand wavers and ignored them.

Cut to 2014. Nearly everyone close to core agrees that there is a big problem. We all have ideas about how to fix it but we can’t try them, because we don’t own it. Months later io.js is created to try out ideas that might bring more contributors and releases back to the project.

Those ideas worked. Open governance, liberal contribution policy, and regular releases did wonders for getting more contributors and improvements flowing in to the project.

We also created a project where the community contributed at every level. Working groups maintain the website, evangelism and even the streams implementation.

We consider io.js to be owned by the community. However, without a legal entity to own property it means that various io.js assets are in reality owned by individuals and companies. The domain name is owned by Fedor, the billing contact for the GitHub org is Colin, the keys used for signing the releases are owned by NodeSource, etc. With all the current owners acting in good faith this ownership isn’t an immediate problem, just as it wasn’t a problem for node.js in 2012, but the more successful we are the worse it could be, so this is something that keeps me up at night.

A number of companies support the io.js project and its community. Build resources are being donated by DigitalOcean, Rackspace, NodeSource, Linaro, Scaleway, Joyent and Voxer. As early as the first week of development members of the TC were paid to work on io.js fulltime by NodeSource, Strongloop, Voxer, and Walmart. The project is run by the community but we’ve always persisted on the good will of companies that stepped up to help out the project.

We’ve done a great job running the project but there’s a number of things we don’t do because we don’t have direct financial resources. Traditional marketing, public/analyst relations, and legal are untouched. In the early stages of a project none of this matters too much but as we grow it becomes a barrier to our continued success. We don’t benefit from this not being done. In fact, if we wait too long to do this the commercial interest around the project will fill this void and try to become the voice of the project.

io.js needs a home. A neutral organization that can support a project still governed by its community.


Last July I spent time looking at a variety of foundations with all kinds of structures and support. I brought what I found to the other core contributors and recommended that we go with the approach the Linux Foundation recommends for projects it sets up through the Collaborative Projects Initiative.

The key is autonomy. The community runs the project, makes the technical decisions, runs the releases, etc. Everything io.js does now will continue to be handled by the community.

We already know how powerful and important autonomy is, it’s the basis of the io.js working group model.

It takes money to keep a foundation alive and that money will have an influence on the foundation, there’s no way around that. The question is: what will the scope of that influence be? If we try to ignore this influence and don’t create a structure around it we open ourselves up to informal influence that could be wide in scope. Instead, it’s better to have the donors to the foundation collaborate with each other through representation on the foundation’s Board of Directors.

The board oversees the finances of the foundation. They also take a direct role in managing the marketing and legal. This means the marketing message won’t be exclusive to a single business interest in the foundation and also ensures that any legal barriers to adoption are widely understood and addressed.

All technical decisions, including releases, are governed by the contributors with autonomy from the Board. A member of the technical side also sits on the Board to convey the needs of the project to the Board.


In early February Joyent announced that they would be putting the node.js assets into a foundation. That foundation is nearly formed now with support from the Linux Foundation and has the structure I’ve detailed above.

A little over a month ago the Linux Foundation, along with people from node.js and io.js, began working on a governance model and contribution policy that might bring the projects back together under the new foundation. The governance, working groups, development and convergence policies are now ready.

The policies of the foundation are designed to preserve the progress we’ve made in io.js. They take the liberal collaborator models and open governance of io.js almost verbatim but also back it up with a neutral organization the can own the assets administered under those policies.


So, we need a foundation. One has been setup and wants us to join. It has, in my opinion, an ideal structure for io.js. As an added bonus we get to end the split and confusion in the community who are still torn between io.js and node.js. We get all of this and we get to keep our governance, release process, and working groups intact. If we choose to.