-
-
Notifications
You must be signed in to change notification settings - Fork 139
Description
The discussion regarding whether or not s module should be in core seems to pop every now and then and I feel it's a little unfortunate that it kind of always has to start over from almost nothing and with different people involved.
Whether something should be or shouldn't be in core is quite complicated and it will be difficult to agree on any consistent set of rules for this that an be applied across the board. However, I think we should still be able to write up something in terms of what things we consider, what is advantages and disadvantaged to either approach etc. So that when these discussions pop up we have some form of summarized and organized prior knowledge/discussion/thoughts document to refer to.
I think it would maybe be appropriate for the TSC to provide some form of guideline here.
Some examples where it's unclear whether things should be in core or not:
- mime util: add MIME utilities node#21128
- stream.pipeline, stream.finished, stream.pipelinify
- undici Future of the Node HTTP Client node#38533
- ws Adding Websocket support to core node#19308
- form data Adding HTML form data handling to core node#38943
- streams https://github.com/nodejs/readable-stream
and probably more...
As I see it we have 3 possible approaches on a module by module basis:
- include in core
- include in some kind of "standard library" (e.g. npm @node/package-name).
- external package which lives under the nodejs org in GitHub (e.g. undici)
Some initial notes from me to start from:
- Part of LTS workflow
- CITGM
- More "trust"
- Other core modules can use the functionality
- Same as 3 but maybe with more "trust"
- Higher development velocity.
- Higher publishing velocity. User can access fixes and new features quicker.
- More fine grained step by step upgrade by users in terms of breaking changes.