Survey
State of the art of local-first & decentralized systems and other existing or announced solutions.
Many decentralized softwares already exists, or are in development. They are not fulfilling the promises of interoperability and total ownership of data and software, for various reasons, that can range from their business model, the standards and technologies they chose, and the partial list of features they implement. Here we will have a look at the key differentiators.
The P2P substack used is of great importance. Most of the Web3 solutions today rely on a DHT (Distributed Hash Table) that scatters the data homogeneously on the internet. This is a problem for end-users concerned about their privacy, and for GDPR regulations that mandate the locality of data within the European Union. Other solutions are based on some blockchain technologies. This has basically the same caveats, in addition to some extra latency, as transactions are slow to be accepted on such networks. NextGraph bases its P2P stack on 2 important concepts: an overlay by store (a set for documents), and a DAG representing partial causal ordering of operations. Only the members of a store participate in the overlay and have access to the DAG.
Semantic Web or Graph databases exists since decades, and newcomers have changed the no-sql landscape recently. The main problems with those databases are the stack they run upon, that will prevent them to be embedded in a browser or small device like a cellphone, and the query language they support. The standards today are SPARQL and RDF. They are used by WikiData, numerous other LODs (Linked Open Data), and Solid, a framework for Linked Data Platform. Other query languages have been invented since then, mostly by database that implement the Property Graph model, which is a subset of RDF and therefor less powerful. A special mention should be given to Datalog that is an old language derived from Prolog and that enjoys a renewed interest nowadays. For NextGraph, we have chosen SPARQL over Datalog, as more tools exist for the former, and a huge amount of ontologies are readily available from decades of work fro academia and industries.
The consistency model of the database matters a lot for local-first software. We based NextGraph on CRDTs that offer strong eventual consistency. Other offline-first systems like GIT cannot guarantee that merges will not conflict, and the old models like distributed consensus, multi-master, federation, or plain monolithic ACID, are not compatible with a P2P architecture.
The stack used for back-end and front-end technologies is of uttermost importance for us, as the vast majority of the software is moved to the end-user devices, when the architecture is based on End-To-End encryption. For this reason, the code of the entire framework should run on embedded devices, smartphones and web-browsers. We chose Rust because it compiles to WASM, and because it produces otherwise some compiled binaries. It also features a novel memory management model that is more efficient than those based on some runtime core library with garbage collection. JavaScript remains a compatible language, but it is not efficient and more memory-hungry. Other languages running on the JVM or Erlang are not compatible with small end-user devices. Golang is mostly used for back-end software.
The reader has to take into account also the set of features implemented by each software, that is never reaching the target we set in our design. Some software originated from very specific application domains (like email, chat, file sharing, or productivity suites) and upgraded their features only later on. This has some impact on the overall design, that was sometimes too limiting from the beginning.
Finally, the licensing model of the source code and the usage of the software is very important. We included in this comparator some commercial products that are only available as SaaS (software as a service) even though this model is contrary to the basic principles of local-first software. A note on libre licenses (GPL, AGPL) that we do not favor, as they are restricting the usage anyone can do of the software, and they force their agenda on all developers including their code. We prefer permissive licenses (Apache 2.0, MIT, BSD…) as they are business friendly and generally compatible with everything.
If we omitted a project that you think should appear in the list below, or if some mistakes have slipped in, please contact us and we will fix that. The criteria selected for this comparison are oriented towards the same goals as NextGraph. The listed projects might excel in other features that are not compared here.
Please take into account that this survey is 2 year old. There are new players in the field since then, also some others that I didn’t see two years ago. We are currently working on a new survey. If you want to stay tuned, subscribe to our newsletter. You are also more than welcome to try out the alpha release of our app.
UX tip: on a desktop computer, you can scroll horizontally by clicking once on the table, then with ← or → keys on your keyboard. On mobile, just swipe left and right.