Skip to content

Reconciliation Proposal #978

Closed
Closed
@mikeal

Description

A lot of questions have been coming our way about what a merger of the node.js and io.js projects might look like. People in both projects want to know their work won't be thrown away and that we can preserve the positive aspects of each project.

This is a draft and will be continually updated and edited based on input from the community. It is not an ultimatum to Joyent or The Node.js Foundation but rather a collaboration point for the io.js community to produce a proposal for merging.

This document uses the terms io.js and node.js to refer to those projects prior to a merge and Node to refer to a future merged project.

While io.js is often used as a starting point this document treats a future project under the foundation as a new organism made from the merger of each project and not as an extension of only node.js or only io.js. The goal of the merger should be a project that is actually greater than the sum these parts.

Technical Governance

The Node.js Foundation would adopt, as it's Technical Governance Structure (which is distinct and seperate from the foundation governance structure), a very simple structure which would ensure the following:

  • Decision making autonomy from the foundation and its board.
  • Ownership of its own governance and voting structure.

Because foundation bylaws are quite difficult to change and the TC wishes to make continued iterative improvements to its structure it would be a mistake to bake the entire governance structure as it exists today in to the foundation bylaws.

As an initial agreed upon structure, beyond what is in the bylaws, the following documents would be adopted from io.js.

In addition to the definition of "collaborator" from CONTRIBUTING.md the list of existing collaborators to io.js would also transfer.

The following changes would be made to these documents prior adoption:

  • Addition of TC members:
    • TJ Fontaine
    • Alexis Campailla
    • Julien Gilli
  • Addition of Collaborators:
    • James M Snell
    • Stephen Loomis
    • Michael Dawson

Long Term Support

High level ideas about LTS are addressed in the io.js roadmap but it lacks specifics because io.js has not yet produced a release that breaks compatibility with prior releases which would cause it to begin executing on this plan. The node.js project has an informal Long Term Support policy which is not formally documented but it does produce patch releases for prior versions so we can assume some policy does exist.

LTS WG (Long Term Support Working Group)

The following is a draft charter for the LTS WG which would be added to WORKING_GROUPS.md.

The LTS WG is responsible for maintenance and releases of prior versions of Node.

Node produces patch releases of prior versions for as long as community members are willing to maintain them. The LTS WG is responsible for when it no longer has the contributions necessary to support a particular version.

The LTS WG's responsibilities are:

  • Authoring and backporting bug fixes, stability improvements, and other relevant
    changes to prior releases (not CURRENT or CANARY).
  • Creation and maintenance of tools to help manage and automate backporting changes.
  • Documentation and enforcement of policies to ensure the stability of patch releases.

Initial Members would include

  • Michael Dawson

Note that specifics around managing branches is left out of the
charter but is part of the responsibilities for the working group under the last
bullet point.

Versions Merger

Because there is currently no overlap between io.js and node.js versions we can, and in fact must, consider all versions of both projects as now being versions of Node. If we did not we would unnecessarily break a large portion of the community that depends on these versions.

Prior Releases

The following versions are considered "prior releases" and are under the control of the LTS WG>

  • 0.8.x
  • 0.10.x
  • 0.12.x

It should be noted that while 1.0+ releases follow semver versions prior to 1.0 did not and it is at the discretion of the LTS WG whether or not they would like to take API additions in to 0.12.x and 0.10.x patch releases. However, backwards incompatible changes cannot be made to these releases in following with the existing policies of both node.js and io.js.

Current Release

  • 1.x

As it stands there are two CURRENT development lines: node.js 0.12.x and io.js 1.x. Development, in some form, will need to continue on both of these lines as different users depending on each line. The question then becomes "which line do we put in to LTS?"

In the last few months io.js has made huge gains in part due to the fact that it aligned its current stable line of development with that of its dependencies. That, along with a faster release cycle, has also brought many module authors in to core and so the ecosystem is beginning to also align its current stable development with that of core. This has ushered in a new era of collaboration between projects and the larger community which Node should continue.

This does not, however, mean that 0.12.x is a "dead" line. Far from it, 0.12.x and 0.10.x are still in use by many users and it will be the work of the LTS WG to continue to ensure those users have a stable and supported platform.

Non-Versioned Releases

CANARY ("next" V8 and any changes marked as major)

Along with the current stable line of development there should be a future line. This line exists as a branch and non-versioned nightly builds for testing. It is a testing ground for changes to Node that would necessitate bumping its major version as well as for testing the CANARY version of V8.

Just as we have done with current stable, the "next" line of Node development should align with that of its dependencies. This allows the project and its users to easily test for performance regressions and potentially breaking changes in those dependencies while active development is still occuring and long before they land in a stable version of Node.

Website

The nodejs.org website would transfer to the Website WG and become the responsibility of that working group. The website will be retooled similar to iojs.org (gulp builds) so that it can be localized by the various language communities from io.js.

Social Media

The social media accounts (Twitter, Facebook, etc) will transfer to the Evangelism WG.

Evangelism WG

This io.js WG will move to Node (pending a vote by the WG) and continue to produce weekly updates, social media engagement, etc, for the Node project.

i18n

All io.js language community working groups (32 individual teams by last count) will vote to
move to the Node project where they would continue to be endpoints for community members to
collaborate with each other in their language of choice and produce localizations of project resources.

Roadmap WG

This io.js WG will move to Node (pending a vote by the WG) and continue to draw in feedback
from users and draft roadmap materials for consideration by the TC.

Streams WG

This io.js WG will move to Node (pending a vote by the WG) along with readable-stream and will continue to define and improve streams in Node.

Tracing WG

This io.js WG will move to Node (pending a vote by the WG) and continue to improve the transparency of Node applications.

Build WG

This io.js WG will move to Node (pending a vote by the WG) and continue to maintain and improve the build infrastructure and produce Node builds.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    discussIssues opened for discussions and feedbacks.metaIssues and PRs related to the general management of the project.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions