Description
A couple times now, I've seen people asking for things currently available in userland to be adopted into core. Some notable examples are:
- Ship websockets in core Ship websockets in core #1010
- Feature Request: HTTP2 Feature Request: HTTP2 #4
However, we've always had a policy of keeping core small and light. If anything, we wish we could remove things from core.
How about a compromise between the two: official userland modules. We'd bring a few things that a lot of people use into the iojs organization, form working groups for them, and have some coordination with core to make sure they remain stable.
The second part of this idea is to pull some of the JS parts out of core and include them in a new, global node_modules location, similar to how it used to work before making node only recognize local node_modules folders and npm changed to globally installed modules only exposing binaries, except npm wouldn't be able to change it. The existing core JS modules would come pre-installed in this location, but newer versions could be depended on locally.
This allows versioning the official JS modules independently of core, and allows a good transition path that we can encourage people to explicit depend on the modules in their package.json, but not break the world that doesn't do that currently.