Condensation is a novel data system – a hybrid between a database system, a file system, and a messaging system. It offers functions to store and share data, and excels at data synchronization.
Data synchronization is essential in today's world. Sharing documents with friends, or editing them on different devices are just special forms of synchronization. And so are backup, data replication, and media streaming.
- Web apps to edit, store, and share documents
- Mobile phone apps with automatic storage and synchronization
- Social-network-like systems, or apps with a social component
- Secure messengers, or data sharing systems
- Collaborative editing
- On-demand audio / video streaming
- Data replication or distribution systems
- Backup systems
Condensation relies on conflict-free merge functions to synchronize data. Originating in semilattice theory, such functions can merge different versions of some data without user intervention. Synchronization always succeeds without conflicts, and retains transactions.
Data is stored as hash trees of immutable objects. Change detection – the basis of efficient synchronization – requires logarithmic time only, and is therefore much faster than traditional file or database systems. Data sets with millions of entries can be compared and merged swiftly.
Condensation is distributed. Data can be synchronized across devices whenever they are connected. Mobile devices may communicate through intermediate servers, but no central server is needed.
All data is end-to-end encrypted and signed using strong encryption algorithms (RSA, AES). Network and storage systems (and their administrators) only see encrypted data.
The actual data can be stored on anything from a raw disk partition to a cloud storage service.
The Condensation library is trimmed to the essential functionality, and adds less than 10'000 lines of security-relevant code to your project.
Condensation libraries are available for:
- Perl/C, Linux
- Java, Android
Libraries for other platforms are under development.
Thomas Lochmatter, firstname.lastname@example.org