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 repository, and a DAG representing partial causal ordering of operations. Only the members of a repository 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 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. It is understood that the features of NextGraph listed below are a work in progress, and will be completed in the second half of 2023. Also, the criteria selected for this comparison are oriented towards the same goals as NextGraph. The listed projects might excel in more features that are not compared here.
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.