Description
Something that is coming up over and over again is fear about the stability of io.js between versions.
Because we made such a big jump in functionality from 0.10 to 1.0 people fear that we broke reverse compatibility. The increased pace of releases only feeds in to the fear that we are going to continually break people's applications and parts of the ecosystem.
As we build the roadmap it's important that we have a clear policy about what we will and will not break and what signals we intend to give in those releases to signal the changes.
Here's a starting point, I'm sure it will drum up a bunch of feedback and we will need to continue to iterate on it.
Stability Policy
io.js will not break backwards compatibility in the core JavaScript API.
io.js will will continue to adopt new v8 releases.
- When the v8 C++ API causes breakage that can be handled by
nan
the minor version of io.js will be increased. - When the v8 C++ API cases breakage that can NOT be handled by
nan
the major version of io.js will be increased. - When new features in the JavaScript language are introduced by v8 the
minor version number will be increased. TC39 has stated clearly that no
backwards incompatible changes will be made to the language so it is
appropriate to increase the minor rather than major.
No new API will be added in patch releases.
Any API addition will correspond to an increase in the minor version.
Long Term Support
iojs
intends to support old version as long as community members are fixing bugs in them. As long as people at committing bug fixes and improvements that don't change or add API we will push patch releases.
legacy-v8
When the v8
team stops supporting a version that a prior iojs
release depends on we will create a branch in iojs/legacy-v8
. This branch will be used to continue to land fixes in unsupported lines of v8. These branches will be pulled in to future patch releases of iojs
.