{"id":301,"date":"2025-01-30T09:00:05","date_gmt":"2025-01-30T09:00:05","guid":{"rendered":"https:\/\/redmonk.com\/kholterhoff\/?p=301"},"modified":"2025-01-31T23:57:24","modified_gmt":"2025-01-31T23:57:24","slug":"is-npm-enough","status":"publish","type":"post","link":"https:\/\/redmonk.com\/kholterhoff\/2025\/01\/30\/is-npm-enough\/","title":{"rendered":"Is npm Enough? Why Startups are Coming after this JavaScript Package Registry"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-302\" src=\"http:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-scaled.jpg\" alt=\"\" width=\"100%\" height=\"1435\" srcset=\"https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-scaled.jpg 2560w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-300x168.jpg 300w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-1024x574.jpg 1024w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-768x430.jpg 768w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-1536x861.jpg 1536w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-2048x1148.jpg 2048w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-480x269.jpg 480w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/tree-1119x627.jpg 1119w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>There\u2019s been significant disruption in the JavaScript package management space recently. While npm continues to be the de facto JavaScript 1) package registry and 2) package manager used in Node.js runtime environments, it is worth discussing how these shifts factor into the larger<a href=\"https:\/\/redmonk.com\/kholterhoff\/2024\/06\/25\/the-problem-of-javascript-code-delivery\/\"> Problem of JavaScript Code Delivery<\/a>. Specifically, I am thinking of the recent appearance of Deno\u2019s JSR (the JavaScript Registry) and vlt\u2019s vsr (vlt Serverless Registry). Deno markets JSR as an \u201copen-source package registry for modern JavaScript.\u201d It was developed by <a href=\"https:\/\/www.linkedin.com\/in\/tinyclouds\/\">Ryan Dahl<\/a>, creator of the Node.js JavaScript runtime and Co-Founder &amp; CEO of Deno, and has <a href=\"https:\/\/x.com\/robpalmer2\/status\/1854106824246497720\">some<\/a> <a href=\"https:\/\/x.com\/wesbos\/status\/1755708374400811100\">good<\/a> <a href=\"https:\/\/x.com\/zaiste\/status\/1771608204402708501\">momentum<\/a> within the JS community. Meanwhile vsr has also been generating some buzz since it <a href=\"https:\/\/blog.vlt.sh\/blog\/nodeconf-eu-collab-summit-recap-2024\">debuted<\/a> in November 2024 at NodeConf EU in Ireland. The folks at vlt position vsr as offering \u201ca streamlined, privacy-first environment for private development and seamless distribution.\u201d Created by <a href=\"https:\/\/www.linkedin.com\/in\/ruyadorno\/?originalSubdomain=ca\">Ruy Adorno<\/a>, <a href=\"https:\/\/www.linkedin.com\/in\/darcyclarke\/\">Darcy Clarke<\/a>, and <a href=\"https:\/\/www.linkedin.com\/in\/isaacschlueter\/\">Isaac Schlueter<\/a> (the creator of npm), vsr is looking to make inroads on the space. Both Deno and vlt have deep DNA in the Node and npm space, and both are entering the package registry space by way of package management\u2014let\u2019s talk about why.<\/p>\n<p>&nbsp;<\/p>\n<h2>Package Managers<\/h2>\n<p>So what even is a package manager? Software packages are archived files that include a computer program along with metadata needed for its deployment. Package managers find, install, maintain and uninstall software packages. They also manage information on software dependencies and versions to avoid compatibility issues and missing requirements. While computer operating systems call for managers like Linux\u2019s Yellowdog Updater Modified (YUM), Debian Linux\u2019s dpkg, Arch Linux\u2019s pacman, Windows\u2019s WinGet, and macOS\u2019s Homebrew, software app developers require managers to handle packages necessary for building applications.<\/p>\n<p>RedMonk has been <a href=\"https:\/\/redmonk.com\/rstephens\/2017\/02\/15\/monkigras2017\/\">following<\/a> <a href=\"https:\/\/redmonk.com\/dberkholz\/2012\/07\/23\/what-is-packaging-its-all-about-the-barrier-to-entry\/\">package<\/a> <a href=\"https:\/\/redmonk.com\/dberkholz\/2012\/11\/12\/on-package-management-negating-the-downsides-of-bundling\/\">management<\/a> <a href=\"https:\/\/redmonk.com\/sogrady\/2007\/06\/28\/google-and-the-future-of-package-management\/\">forever<\/a>, but what has only become more true in 2025 is that building modern applications requires pulling down and managing a boatload of dependencies. Running the command npm install in the CLI for a React Native project, for instance, can add close to <a href=\"https:\/\/dev.to\/syki\/how-many-dependencies-does-your-project-really-have-239c\">1,500 dependencies<\/a> to the package.json file. What is more, these dependencies often have their own dependencies. This heaviness is not exclusive to JavaScript and TypeScript applications, but has been a sticking point in the <a href=\"https:\/\/redmonk.com\/kholterhoff\/2023\/02\/23\/spa-wars\/\">SPA wars<\/a>. JS has a bias to feature development. Setting aside the question of whether all of these dependencies are necessary, even the most pared down applications have enough packages that a third party manager becomes essential. Managers like npm (JavaScript), CPAN (Perl), PEAR (PHP), and PyPI (Python), all promise to simplify dependency management. Which brings us to the entwined subject of package registries.<\/p>\n<p>Because package managers are responsible for pulling down external repositories, they must integrate tightly with software repositories like GitHub, GitLab, and BitBucket that store code. They also depend upon package registries to publish and share these packages. It is unsurprising that <a href=\"https:\/\/docs.github.com\/en\/packages\/learn-github-packages\/introduction-to-github-packages\">GitHub<\/a> and <a href=\"https:\/\/docs.gitlab.com\/ee\/user\/packages\/package_registry\/\">GitLab<\/a> offer package hosting as a service. Packages, after all, are just code that is published and consumed in a particular manner.<\/p>\n<p>&nbsp;<\/p>\n<h2>Managing the JS Ecosystem<\/h2>\n<p>In the JavaScript (JS) ecosystem, package managers are clients to and limited by npm&#8217;s Public Registry API\/ infrastructure. Whoa, whoa, whoa, Kate. I thought you said that vsr and JSR were going to replace npm!? Nope. While all registries facilitate publishing and sharing code, today, for complex technical reasons relating to dependencies, ecosystem lock-in (CI\/CD pipelines, workflows), integration with the Node.js runtime, and framework interdependency issues (React, Angular), there are few if not zero alternative JS registries to npm. This means that the Bun runtime, pnpm (Performant Node Package Manager), and Yarn (a JS package manager for the Node) all use the npm registry. Today JSR and vsr are both essentially npm-compatible layers. According to the <a href=\"https:\/\/jsr.io\/\">JSR website<\/a>: \u201cJSR isn&#8217;t a replacement for the npm registry; it&#8217;s a superset of npm.\u201d Although the vlt team is <a href=\"https:\/\/blog.vlt.sh\/blog\/introducing-vlt-and-vsr\">marketing<\/a> vsr as a \u201cdrop-in replacement for your existing package manager\u201d (presumably npm), like JSR, vsr does not replace the npm registry but instead offers privacy and a more optimized developer experience through additional features such as \u201cdependency query selector syntax, export formats (including Mermaid) &amp; GUI experience to help lower the bar for understanding your dependency graphs.\u201d<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Holy crap! Vlt \u2014 the new JavaScript package manager \u2014 just announced Isaac Schlueter is on the team. <\/p>\n<p>Isaac is the creator of npm.<\/p>\n<p>So now we have the guy who made Node working on JSR, and the guy who made npm working on vlt.<\/p>\n<p>exciting times <a href=\"https:\/\/t.co\/W6h1qctdr6\">https:\/\/t.co\/W6h1qctdr6<\/a><\/p>\n<p>&mdash; Wes Bos (@wesbos) <a href=\"https:\/\/twitter.com\/wesbos\/status\/1770466415377539582?ref_src=twsrc%5Etfw\">March 20, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Reasons to follow shifts in JS package management are numerous. For one, there seems to be money to be made by disrupting npm. VCs recognize this opportunity and have backed Deno (<a href=\"https:\/\/www.crunchbase.com\/organization\/deno-b57a\">Series A<\/a> from Shasta Ventures, Insight Partners, and Sequoia Capital, among others) and vlt (<a href=\"https:\/\/www.crunchbase.com\/organization\/vlt-f5da\">Pre Seed<\/a> from Accel and Feross Aboukhadijeh). While Deno has several products in addition to JSR, including a runtime, web framework, and hosting, vlt is going all-in with their private, feature-rich registry. The value prop of package registries, and npm for the JS community specifically, has always been developer experience. No one wants to return to the pain of writing shell scripts, much less the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pip_(package_manager)\">pip<\/a> days or managing Ruby gems. In fact, Schlueter has been <a href=\"https:\/\/en.wikipedia.org\/wiki\/Npm#History\">vocal<\/a> about creating npm to resemble the better experiences afforded by other languages such as PHP\u2019s PEAR and Perl\u2019s CPAN.<\/p>\n<p>In the registry space, developer experience is everything so the question of whether these new npm-compatible registries created to serve the TypeScript and JavaScript communities will succeed seems to hinge on whether npm is adequately serving this need. The new crop of package registries from the creators of npm (Schlueter) and Node (Dahl) could be the consequence of a lot of complex signals such as 1) market size (the JS pie is enormous), market control (the majority of Node, JS, TS and other packages currently reside in a single place), and 3) developer demand for excellent experiences. However, it is this last one that I hear most about from creators. Consider Dahl\u2019s <a href=\"https:\/\/the-stack-overflow-podcast.simplecast.com\/episodes\/ryan-dahl-deno-2-scale-improve-npm-nodejs\/transcript\">explanation<\/a> of today\u2019s \u201cdistribution of libraries and modules\u201d:<\/p>\n<blockquote><p>We don&#8217;t think NPM is ideal for that. There&#8217;s a lot of problems about that so we&#8217;ve built JSR to make this really simple and nice to distribute TypeScript and JavaScript.<\/p><\/blockquote>\n<p>Clearly there is a lot to say about JS package registries. Let\u2019s take a step back and talk about why startups are going after this space, and what it reveals about the future of npm.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">I mean&#8230; if I have anything to say about it &#8211; OR &#8211; <a href=\"https:\/\/twitter.com\/github?ref_src=twsrc%5Etfw\">@github<\/a> + <a href=\"https:\/\/twitter.com\/thomas?ref_src=twsrc%5Etfw\">@thomas<\/a> could offer to let our team take npm back &amp; make the desperate improvements the JS ecosystem deserves. DMs are open.<\/p>\n<p>&mdash; Darcy Clarke (@darcy) <a href=\"https:\/\/twitter.com\/darcy\/status\/1860473509786406942?ref_src=twsrc%5Etfw\">November 24, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>&nbsp;<\/p>\n<h2>npm Today<\/h2>\n<p>Npm was initially released in 2010, and acquired by GitHub in 2020, two years after the <a href=\"https:\/\/news.microsoft.com\/2018\/06\/04\/microsoft-to-acquire-github-for-7-5-billion\/\">Microsoft acquisition<\/a>. When it comes to JS package management, npm is the undisputed market leader. For instance, the Software House&#8217;s 2024 <a href=\"https:\/\/tsh.io\/state-of-frontend\/\">State of Frontend Report<\/a> found that npm is the most widely used package manager (56.6% of votes), followed by YARN (21.5%) and pnpm (19.9%), but when it comes to registries as infrastructure, it is the foundation upon which all JS packages are built\u2014not just Node, but also React libraries, webpack, Typescript.<\/p>\n<p>Although a few in the JS community at the time of the GitHub acquisition worried this was another Microsoft <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Embrace,_extend,_and_extinguish\">Embrace, extend, and extinguish<\/a> ploy, many developers in the community welcomed the move because, unlike some other OSS projects, npm requires significant resources and community buy-in. This is certainly the message I gleaned from <a href=\"https:\/\/www.linkedin.com\/in\/christopherpatterson\/\">Chris Patterson<\/a>, senior director of product management at GitHub, when I asked him about GitHub\u2019s roadmap for npm:<\/p>\n<blockquote><p>So the primary roadmap for NPM is to keep it secure and highly reliable, and that has been, frankly, the work we&#8217;ve been doing for quite a while. You know, the sheer volume of package downloads that have to be searched, acquired, served, the amount of spam that is attempted to be uploaded, because it&#8217;s a broad attack surface, like all of these things, are significant efforts in terms of keeping a service like NPM very safe, very secure and highly reliable.<\/p><\/blockquote>\n<p>Everyone I spoke with for this piece emphasized that npm is a tremendous cost center, and this made the backing of a large cloud provider (Microsoft) under the auspices of an established code repository (GitHub) ideal. There are two aspects to the expense of running npm worth mentioning: technical costs and operational costs. The technical side is data storage, which is not inconsequential considering the registry\u2019s scale and the number of downloads it has to support. Moving data around is not cheap, and as a pivotal web infrastructure npm can\u2019t afford downtime. Presumably, post-acquisition this expense became more affordable as it could be absorbed into Microsoft\u2019s own data centers. However, operations are where the real cost of npm balloons. In addition to the engineering labor of maintainers and office space (pre-acquisition npm had an office in downtown Oakland), the single largest expense of running this registry has been the raft of required lawyers. Naming disputes, squatting, trademark research, mediation all come at a significant expense.<\/p>\n<p>Materially, npm needed a good home and deep pockets, but GitHub\u2019s leadership also identified developer experience as core to their plans for the acquisition. In a <a href=\"https:\/\/github.blog\/news-insights\/company-news\/npm-is-joining-github\/\">blog post<\/a> explaining the decision to acquire npm, they outlined three pillars for growth:<\/p>\n<blockquote>\n<ul>\n<li>Invest in the registry infrastructure and platform. The JavaScript ecosystem is massive and growing quickly. It needs a rock-solid registry. We will make the investments necessary to ensure that npm is fast, reliable, and scalable.<\/li>\n<li>Improve the core experience. We will work to improve the everyday experience of developers and maintainers, and support the great work already started on the npm v7 CLI, which will remain free and open source. Some bigger features that we\u2019re excited about are Workspaces and improvements to the publishing and multi-factor authentication experience.<\/li>\n<li>Engage with the community. We will actively engage with the JavaScript community to get your ideas and help us define the future of npm.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Unfortunately, there is an increasing feeling in the JS community that GitHub has abandoned these pillars. In fact, several folks I spoke with for this piece contend that npm is running in KTLO (Keep the Lights On) mode, and the project is suffering as a result. I like <a href=\"https:\/\/www.linkedin.com\/in\/t3gg\/\">Theo Browne<\/a>\u2019s diplomatic <a href=\"https:\/\/www.youtube.com\/watch?v=O-wtwVHtUJ8\">phrasing<\/a>:<\/p>\n<blockquote><p>the amount of effort [GitHub\/Microsoft] put into maintaining and growing the npm ecosystem has been massive, even if the experience and quality of functionality we expect just hasn\u2019t improved much since really old versions many years ago. I can\u2019t honestly remember the last time the npm registry shipped a meaningful new feature, and I keep a close eye on that stuff.<\/p><\/blockquote>\n<p>Security is probably the most significant canary that npm as a project continues to require significant resources and active support. In the online developer communities I frequent, any news around npm tends to focus on bugs and exploits. Darcy Clarke\u2019s <a href=\"https:\/\/www.theregister.com\/2023\/06\/27\/javascript_registry_npm_vulnerable\/\">well-publicized<\/a> claim that there is a \u201c<a href=\"https:\/\/blog.vlt.sh\/blog\/the-massive-hole-in-the-npm-ecosystem\">massive bug at the heart of the npm ecosystem<\/a>\u201d criticizes the fact that manifests from npm packages are published independently from its tarball, which may be written locally, not always in a git repo. Meanwhile, developer forums on Reddit and Hacker News are awash with stories about malicious and spam npm packages. In addition to the lottie-player library <a href=\"https:\/\/github.com\/LottieFiles\/lottie-player\/issues\/254\">exploit<\/a>, which <a href=\"https:\/\/www.linkedin.com\/in\/pavlikjakub\/\">Jakub Pavl\u00edk<\/a>, co-founder &amp; head of engineering at Exaforce, <a href=\"https:\/\/medium.com\/exaforce\/npm-provenance-the-missing-security-layer-in-popular-javascript-libraries-b50107927008\">explains<\/a>: \u201chighlighted the fragility of the NPM ecosystem\u2019s security,\u201d Phylum Research\u2019s \u201c<a href=\"https:\/\/blog.phylum.io\/the-great-npm-garbage-patch\/\">The Great npm Garbage Patch<\/a>\u201d discusses: \u201cthe proliferation of spam packages in npm associated with the Tea protocol, a decentralized initiative that promises to compensate software developers in cryptocurrency for their open-source contributions.\u201d There is also <a href=\"https:\/\/www.linkedin.com\/in\/alxndrsn\/\">Alex Anderson<\/a>\u2019s \u201c<a href=\"https:\/\/www.alxndrsn.com\/2024-08-01-npx-binary-confusion\/\">Squatting npm for Remote Code Execution<\/a>,\u201d which identified a potential exploit:<\/p>\n<blockquote><p>As a proof-of-concept, I registered various packages with names matching bin scripts in popular packages, which list their own bin commands. These bin commands are a benign wrapper which attempts to run the script the user would have expected.<\/p>\n<p>A malicious actor could replace these benign scripts with anything they want (e.g. data exfiltration, modification, destruction; system shutdown etc.).<\/p><\/blockquote>\n<p>The Node community is particularly concerned about the state of npm. According to <a href=\"https:\/\/www.linkedin.com\/in\/rginn206\/\">Robin Bender Ginn<\/a>, Executive Director of the OpenJS Foundation:<\/p>\n<blockquote><p>JavaScript developer communities are telling us that they see real or perceived security and performance gaps with npm\/GitHub. Consequently, the JavaScript ecosystem risks fragmentation, with new package registries emerging. This outcome is less than ideal due to the significant burden of maintaining registries, potential interoperability challenges, and evolving security compliance requirements.<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h2>npm\u2019s Competition<\/h2>\n<p>All of this <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sturm_und_Drang\"><i>sturm und drang<\/i><\/a> has fostered conditions ripe for competition, which Deno and vlt are answering. But they are not alone filling perceived feature gaps left by npm in the package management space. So what features do JS developers want? You can browse feature requests and error notifications in the <a href=\"https:\/\/github.com\/orgs\/community\/discussions\/categories\/npm\">GitHub Community forum devoted to npm<\/a> (<a href=\"https:\/\/github.com\/npm\/feedback\/discussions\">formerly located here<\/a>). One popular request from 2021 is for<a href=\"https:\/\/github.com\/orgs\/community\/discussions\/128400\"> dark mode<\/a>, which Myles Borins answers: \u201cAt this time we are not going to be able to prioritize Dark Mode on npmjs.com.\u201d For a quick laugh, the memes and continued pleas for dark mode are worth a scroll.<\/p>\n<p><a href=\"https:\/\/github.com\/orgs\/community\/discussions\/128400#discussioncomment-6951549\"><img decoding=\"async\" class=\"alignnone size-full wp-image-303\" src=\"http:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/dark_mode.gif\" alt=\"\" width=\"75%\" height=\"407\" \/><\/a><\/p>\n<p>More seriously, some developers express disappointment in the lack of documentation on the official <a href=\"https:\/\/www.npmjs.com\/\">npmjs.com<\/a> website. The security platform Socket arguably offers better package documentation than the npm registry (see comparison of the lodash package below). Moreover, UNPKG, a content delivery network for npm, allows users to extract and reference files inside of each packages\u2019 zip file in ways npm is currently unable to. By providing insights into the package\u2019s content, UNPKG provides actual code analysis.<\/p>\n<p><a href=\"https:\/\/www.npmjs.com\/package\/lodash\"><img decoding=\"async\" class=\"alignnone size-full wp-image-304\" src=\"http:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM.png\" alt=\"\" width=\"100%\" height=\"1718\" srcset=\"https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM.png 2312w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-300x223.png 300w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-1024x761.png 1024w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-768x571.png 768w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-1536x1141.png 1536w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-2048x1522.png 2048w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-480x357.png 480w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-107x80.png 107w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.02.30\u202fAM-844x627.png 844w\" sizes=\"(max-width: 2312px) 100vw, 2312px\" \/><\/a><br \/>\n<a href=\"https:\/\/socket.dev\/npm\/package\/lodash\"><img decoding=\"async\" class=\"alignnone size-full wp-image-305\" src=\"http:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM.png\" alt=\"\" width=\"100%\" height=\"1716\" srcset=\"https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM.png 2136w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-300x241.png 300w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-1024x823.png 1024w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-768x617.png 768w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-1536x1234.png 1536w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-2048x1645.png 2048w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-480x386.png 480w, https:\/\/redmonk.com\/kholterhoff\/files\/2025\/01\/Screenshot-2024-12-02-at-11.03.50\u202fAM-780x627.png 780w\" sizes=\"(max-width: 2136px) 100vw, 2136px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>What is the business?<\/h2>\n<p>The story of npm and the startups raises a significant question; namely, what is the business here? Npm is a financial sink, technically but more importantly in hard, ongoing operational costs\u2014legal and otherwise. This was the basis for the initial acceptance of Microsoft\/GitHub ownership, mandating that whoever owns it needs to have deep pockets. That surfaces two significant issues in my mind: first, Deno and vlt have received funding, but neither would presumably be accused of having deep pockets. Why and how should they be expected to be a better steward of npm or possibly its successor than GitHub? Second, what is the financial model that would turn npm from a cost center into a profit center? If these companies position themselves as providing a private registry, they are essentially recreating npm\u2019s business model, which <a href=\"https:\/\/www.npmjs.com\/products\">charges<\/a> to host private packages. If they also offer a better developer experience this could have broad appeal, but whether the market agrees it accomplishes enough remains to be seen.<\/p>\n<p>To wrap up this conversation about the landscape of JS package managers, npm, and package registries, I want to emphasize that I am following this space because it really matters. So much of the web relies on npm and Node, and this often overlooked and unsexy part of development should not receive short shrift owing to its seeming invisibility. Package managers and registries are essential infrastructure upon which developers and the internet rely. I\u2019m excited to see the sort of improvements and optimizations the savvy folks who are pushing the limits of packaging software can build.<\/p>\n<p><b>Disclaimer:<\/b> GitHub, GitLab, and Microsoft are RedMonk clients. Deno and vlt are not currently RedMonk clients.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There\u2019s been significant disruption in the JavaScript package management space recently. While npm continues to be the de facto JavaScript 1) package registry and 2) package manager used in Node.js runtime environments, it is worth discussing how these shifts factor into the larger Problem of JavaScript Code Delivery. Specifically, I am thinking of the recent<\/p>\n","protected":false},"author":50,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[12,8,4,42],"tags":[],"class_list":["post-301","post","type-post","status-publish","format-standard","hentry","category-devx","category-frontend","category-javascript","category-node"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/posts\/301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/comments?post=301"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/posts\/301\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/media?parent=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/categories?post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/kholterhoff\/wp-json\/wp\/v2\/tags?post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}