Title: Splitting node in to more projects · Issue #9 · nodejs/node · GitHub
Open Graph Title: Splitting node in to more projects · Issue #9 · nodejs/node
X Title: Splitting node in to more projects · Issue #9 · nodejs/node
Description: I'm going to coalesce as much as I can remember of dozens of conversations I've had with people over the last year in to an actual proposal. For some time node has been getting separated in to difference projects which then become depend...
Open Graph Description: I'm going to coalesce as much as I can remember of dozens of conversations I've had with people over the last year in to an actual proposal. For some time node has been getting separated in to diff...
X Description: I'm going to coalesce as much as I can remember of dozens of conversations I've had with people over the last year in to an actual proposal. For some time node has been getting separated in...
Opengraph URL: https://github.com/nodejs/node/issues/9
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Splitting node in to more projects","articleBody":"I'm going to coalesce as much as I can remember of dozens of conversations I've had with people over the last year in to an actual proposal.\n\nFor some time `node` has been getting separated in to difference projects which then become dependencies of node itself in some way. These range from `libuv` to `readable-stream` (which is just `stream` in core).\n\nHow and when a module gets broken out in to its own project has been seemingly random, although a more accurate description might be \"whenever the opportunity arrived,\" like a module rewrite.\n\nA specific \"version of node\" **must** be a static collection of these dependencies, as has been the case for the history of node, suggesting that we change this would be crazy. Below I will describe this proposal as a collection of projects (some existing and some yet to be produced) which would be locked to a specific version of each project in order to produce a single version of `node`.\n- `v8`\n- `libuv`\n- `http-parser`\n- `libuv.js` -- libuv bindings to v8\n- `require` -- the module system\n- `stdlib.js` -- every JS module you can `require()` without installing as a dependency\n - within stdlib.js a specific released version would also have, as dependencies, many other modules like `readable-stream`\n- `npm`\n- `node-bin` -- node's command line interface\n\nNote that there is no abstract C/C++ interface on top of v8's API. Native modules would still be built using a combination of `nan` (which has the advantage of being able to stretch multiple v8/node version combinations) and direct v8 bindings, as is the case today.\n\nThe biggest benefits I see with this approach are reuse and ease of contributions. I think we would see some very interesting experiments with libuv.js. I also think that the community in userland that has had a hard time getting input in to node core would have an easier time directing that feedback towards a `stdlib.js` or `require` project which is entirely JS.\n### Concerns with this approach\n- Additional coordination cost between dependencies. \n - How well is this handled today with libuv?\n- Additional administrative overhead, maybe.\n- Increased difficulty of making performance related improvements traversing several dependencies.\n","author":{"url":"https://github.com/mikeal","@type":"Person","name":"mikeal"},"datePublished":"2014-11-28T21:09:58.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":19},"url":"https://github.com/9/node/issues/9"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:384928c9-41b7-5903-0b34-26ac1ce22368 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D2D4:227D33:66CD30:8C297C:6A4C7D3D |
| html-safe-nonce | cc24e261438fbe04e22804b3cb5b11353719bc27c4ffdab1ef7ee429dbf77e48 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMkQ0OjIyN0QzMzo2NkNEMzA6OEMyOTdDOjZBNEM3RDNEIiwidmlzaXRvcl9pZCI6IjQ3MjkwMzA1MDEwMzcwMTQzMzMiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 71a025c728d78d1d858559297abcdf32693bbd83bd447590aed118896576ad10 |
| hovercard-subject-tag | issue:50403444 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/9/issue_layout |
| twitter:image | https://opengraph.githubassets.com/922c4bd37cb7c30070e69cff96cdc8619e5a8ee85e5bbfac1088d7d045ac0e00/nodejs/node/issues/9 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/922c4bd37cb7c30070e69cff96cdc8619e5a8ee85e5bbfac1088d7d045ac0e00/nodejs/node/issues/9 |
| og:image:alt | I'm going to coalesce as much as I can remember of dozens of conversations I've had with people over the last year in to an actual proposal. For some time node has been getting separated in to diff... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mikeal |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | cd470457e909b9d062f8002cf438ba870e6acff6 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width