Everyone seems to be exaggerating the likelihood of incompatibility, as far as I'm aware io.js is simply supposed to be a bleeding-edge version of node. There is no need for community library authors to test on or support io.js, because in theory io.js should be fully backwards-compatible with node.js other than the incredibly unlikely circumstance that io.js adopts a version of V8 which deprecates features used in node's version of V8 or changes it's API in a non-backwards compatible way, which would be no different from the incompatibilities you'd encounter by using a version of node to run an app written for an older version of node. Forking node allows people to use new/experimental V8 features/improvements while still tapping in to the already massive node ecosystem and alleviates those users from having to compile their own node/V8 binaries. This way those working on personal/dev status projects can use the latest io.js to have the new features they might want, and those working on public/production projects can use the latest node.js without having to worry about instabilities. To me node.js or io.js is analogous to choosing between an LTS/stable release or bleeding-edge/unstable release release of your OS. There's no universally correct choice, it depends on your specific requirements. Having both projects doesn't fragment the community, for example most Linux distro packages are compatible with both stable/unstable releases of the OS, the only exceptions being different versioned dependencies which is generally resolved automatically by your package manager anyway.