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
1. provide functions the core itself needs in order to operate (e.g., module, fs, path etc), OR 2. provide the single implementation that it is important everyone use in their modules to achieve interoperability(e.g., EventEmitter), OR 3. 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?