We’ve launched a community Discord for people who are interested in contributing to the Noosphere open source project. Come join!
So, that post where we explored a redecentralized hypertext protocol? Well, we’re actually building it.
Github: subconsciousnetwork/noosphere
License: Apache/MIT
Status: in-development
Noosphere is a protocol for thought. A worldwide knowledge graph on top of IPFS.
Worldwide knowledge graph. Noosphere is a massively-multiplayer shared graph made up of smaller public and private graphs.
User-owned data. Apps trap thoughts in SaaS silos. Noosphere fixes this. Everything is syndicated to IPFS, so you have credible exit through any IPFS node.
Self-sovereign identity. Authentication happens through user-owned keys not ids, using UCAN.
Local-first sync. Everything works seamlessly offline. Files can be synced live to your device.
Decentralized over IPFS. Noosphere is peer-to-peer, making it a durable repository for human knowledge. Lots of Copies Keep Stuff Safe.
The name? Noosphere means planetary consciousness, a hypothetical new evolutionary phenomena arising from the biosphere. It’s a lighthearted joke, but also an aspiration. Our dream is for Noosphere to become a user-owned medium for thinking together. A little bit like…
Noosphere is a permissionless protocol, like HTTP or IMAP. You can build whatever you like on top of it. We’re going to use Noosphere to power Subconscious’ multiplayer and sync features. We hope other apps find it useful too.
Memos: a versioned envelope for notes
Nodes in the Noosphere graph are called memos. They’re IPLD metadata envelopes with:
Headers, which contains arbitrary metadata
A body CID, which points to the content
A parent CID, which points to the previous version of the memo.
What can you put into a memo? Anything you want! The body CID of a memo can point to any kind of data, indicated by the Content-Type header. JSON, Markdown, binary data, whatever your app needs. This makes Noosphere a general-purpose protocol that can be useful for any kind of app, not just notes.
If you’re thinking this looks a bit like HTTP, you’re right! The memo format is lindy. Like HTTP, email, or packets, Noosphere uses headers as a mechanism to enable open-ended evolution.
Memos also have a parent CID, which points to a previous revision. By following parent CIDs, you can trace back the version history of a given memo. This makes Noosphere almost like a lightweight Git over IPFS, with building blocks for change history, rollback, and sync.
Spheres: a collection of notes
Noosphere is a massively multiplayer knowledge graph made up of smaller public and private sub-graphs. Each of these sub-graphs is owned by an author, who signs it with a cryptographic key. We call these sub-graphs spheres.
Spheres are essentially index files that map…
@handles to public keys
/paths to CIDs
You can think of a sphere as being like a personal address book. Your sphere also functions as your data backpack and self-sovereign social graph, because if you have your sphere, you have all of the pointers you need to access your data from any IFPS node. Credible exit!
Spheres also power a petname linking system, a kind of hyperlocal distributed DNS.
You can think of a link like @gordon/composability
as saying “give me the latest version of gordon
’s memo called composability
”.
This is similar to the concept of origins and paths in URLs. When I link to http://example.com/composability
, I’m saying “give me example.com
’s resource called composability
. The plot twist is that spheres don’t point to a particular server! Instead, spheres are data structures that live on IPFS. So addressing on Noosphere is completely decentralized, and spheres and memos can live on many peers at once. This makes Noosphere very resilient.
Sphere Server: your personal IPFS gateway
So, memos are envelopes for content, and spheres are address books for memos and user public keys. That covers Noosphere’s core data structures. But who does the work of resolving links and talking to IPFS? Sphere servers!
Sphere servers are superpeers, personal IPFS gateways that live in the cloud and do a handful of useful things. Your sphere server…
Talks to IPFS
Publishes your memo and sphere updates to the DHT
Pins your stuff, and caches copies of stuff from other spheres you follow
Resolves petnames, like a hyperlocal DNS resolver
Gossips petname updates with sphere servers that follow you
Bridges to the web
Syncs with client apps
There’s not much magic here. Sphere servers are basically boring web2 servers with a little IPFS sprinkled on top. Web 2.5? This guarantees us some high-quality peers that can cache and pin content, and reliably respond to requests. It also lets us avoid the hard problem of trying to squeeze a battery-draining full peer onto a mobile device. Mobile clients can just talk to the server over HTTP. We think these superpeers strike a pragmatic balance that offers the performance and reliability of the cloud, and the resilience and credible exit of IPFS.
Let’s manifest a Noosphere together
So that’s the idea. A decentralized worldwide knowledge graph, belonging to everybody.
Noosphere is open source and we’re releasing what we’ve built so far under both Apache and MIT licenses. This protocol is maximally open, and open-ended.
Github: subconsciousnetwork/noosphere
License: Apache/MIT
Status: in-development
Come manifest it with us! We’re just getting started.
— @gordonbrander and @0xcda7a