Skip to content

Instantly share code, notes, and snippets.

@mikeal
Created February 12, 2014 00:27
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikeal/8947417 to your computer and use it in GitHub Desktop.
Save mikeal/8947417 to your computer and use it in GitHub Desktop.
NPM history.

[In reply to https://news.ycombinator.com/item?id=7219005]

Here's the history, hope it helps.

I wrote the original version of the npm registry in a day or two on top of CouchDB. I built it quickly and didn't think much about scale.

Isaacs continued to improve and maintain that code. At one point he even wrote up an open standard for generic js package registries for CommonJS but they didn't seem to care (they were too busy arguing about promises).

At the time I wrote the initial code I was employed at CouchOne and we had a small CouchDB hosting platform operated by Jason Smith which is where we ran the registry free of charge. Later on, after CouchOne was aquired by Membase and became Couchbase, it decided to break off the hosting company and give/sell it to Jason Smith, which became IrisCouch.

IrisCouch continued to run the registry for free for several years. They had no venture funding and limited resources but they provided this service for our community anyway. They announced a product for enterprise (hosted) NPM but as far as I know it wasn't really marketed or sold. Last year IrisCouch was acquired by Nodejitsu.

Nodejitsu continued to host the registry for free. Some time last year the infrastructure hit a breaking point, mostly around CouchDB. Remember, I wrote this in a weekend when less than a hundred node packages existed. Many of the semantics from me and Isaacs' initial "prototype" persisted until just a few weeks ago. For instance, this single database held all the package binaries, for every version of a package, attached to the document for that package.

Once the registry started to have serious stability issues a few things happened. Isaacs started to work on ways to improve the reliability by changing how the registry worked and Nodejitsu sought community support for keeping the current registry up. At some point Isaacs also decided it would be best if he worked on NPM full time and built NPM Inc.

In the early days we weren't thinking about 58K modules, that was just crazy, we were just figuring out the simplest way to store a couple packages the node community was writing. Since founding this company Isaacs has already managed to re-write the way the registry works to fit the kind of load we have now.

Nodejitsu is now free of the financial burden that was dragging them down as well and Isaacs' new infrastructure can keep the registry up more cheaply than the previous system and more reliably.

@alexgorbatchev
Copy link

I think what puts people off about this, including myself, is that pretty much right after a crowd funding round, a separate entity spins off and gets 10x the amount from VC.

It would be really nice to have a post explaining what it actually means for npm itself when VC owns part of npm inc which I suppose owns the source.

@wookiehangover
Copy link

In the early days we weren't thinking about 58K modules, that was just crazy

I feel your pain

@azat-co
Copy link

azat-co commented Feb 27, 2014

nice history write up, seems like a typical tech debt story gone wrong during the time when NPM was under Nodejitsu, in other words people didn't update the code and infrastructure timely to meet the growing community demands

@thanpolas
Copy link

@mikeal i'm puzzled with the timing of the events. Unless Isaacs has a magic wand, i know that VC talks take some time, typically about 6 months. That period greatly overlaps with the time Joyent started scalenpm.

I consider the money i've put into this campaign a lost cause, but that's for me to swallow.

My question is if Isaacs was already in talks with VC folks when scalenpm went live and if he was why didn't he say "hey, there's this thing..." ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment