This is an interesting and deep question, and I didn’t respond initially because I wanted to think about it some.

The most direct answer is that noms is content-addressed while [C|P]ouchDB uses the more traditional database approach of explicit addressing.

But you didn’t ask how they were different — you asked “can’t we do everything Noms does with PouchDB”.

And I guess the answer, as with all things in computing is “yes”. You can build anything with anything. It’s just that some tools make some tasks easier.

Some things that Noms gives you out of the box that [C|P]ouchDB does not:

  • Versioning. Noms keeps every version of the database forever, by default.
  • Forking. You can create a lightweight fork of a database from any commit — only the data that is specific to the fork will be stored.
  • Diff. You can efficiently compute the diff between any two versions of a database, or indeed any two pieces of Noms data.

There are more things, but these are the most concrete.

Programmer, troublemaker, dad.

Programmer, troublemaker, dad.