one way of putting it is to say that node core needs just enough functionality to build a package manager.
EventEmitter for example, is core element because it's the subclass of Stream which is the subclass of every IO stream. (it's not a utility for interoperability) Strictly speaking, http is an application level protocol, an so doesn't need to be in core. However, it was probably important for the success of node that it was, because http is hugely popular, most users of node being web developers. You could certainly reimplement http if you thought you could do better, but taking it out at this point probably wouldn't gain very much. On Sun, Jul 22, 2012 at 12:27 PM, beachdog <[email protected]> wrote: > I'm coming up to speed on the node core, trying to learn things at a very > detailed level because I need something for my application area that will > probably be a lot like node -- either using node itself or developing a > similar v8-based framework for my purposes. And I am interested in the > decision process of which objects to include in the node core vs leaving out > for add-ons. As I see it, the general desire would probably be to keep the > core minimal and only include objects that either > > provide functions the core itself needs in order to operate (e.g., module, > fs, path etc), OR > provide the single implementation that it is important everyone use in their > modules to achieve interoperability(e.g., EventEmitter), OR > provide significant performance improvements by being in the core > > With that in mind, I see a lot of objects that are in the core which (maybe) > don't meet that criteria. As an example, I want to build a platform where > http is only one of many IP protocols and not the 'first among equals' that > it seems to be in node -- so for me, its not clear why http is in the core. > Or crypto, or others. Since I'm still coming up to speed, I'm wondering if > I am missing something. If not, I would be interested to know the > perspective from node devs -- if they were to start over with a blank sheet > of paper so to speak, what would be in core and what would be provided > outside of core?
