live information sharing

With m-ld, information is available where it's used—on mobiles, in browsers, in microservices, anywhere—and it stays up-to-date, automatically. It's live and sharable.

No more expensive, buggy wrangling to get your data from where it's stored, through services and APIs and networks, to where it's really valuable.

At the heart of m-ld is a decentralised protocol for distributing live information among clones. Using m-ld, every instance of an app has read-write access to the shared information via its local clone, with zero network latency. Changes to the information are propagated to all other app instances, so they are all eventually consistent.

George Svarovsky, CTO

"Most application code just shuffles data around, from rows to objects to text to models and back again. It's all based on the idea of static sources-of-truth: those files and databases we relied on so heavily in the pre-internet age.

"I was working on a new user interface for humans to collaborate on structured ideas, but when I started building it, I realised this naive foundational concept – that information exists in just one place – is not just painful to code; it's plain wrong.

"So I took what I knew about information modeling, from two decades handling research data, and mixed it with fresh thinking from the local-first and distributed systems communities, and created a component that doesn't hide the truth: that information is shared, and live. But it also simplifies the consequences in a usable way.

"You can build collaboration apps. You can build shared consciousness for robots. But most of all you can write code that deals with information as it really is."

Offline and collaboration features

Consumer and enterprise apps are frequently required to make data available for editing by multiple users instantly, reliably, and securely, even when they're offline. Cloud databases entrust the data to a third party, and make users wait while changes are processed. Custom solutions are expensive and fraught with hard-to-detect bugs.

Fulfilling these needs is a difficult problem, and a distraction from your focus on the business functionality of your software. In the end, most apps just lock the data that is being edited so no-one else can work on it.

m-ld is different. It starts from the position that the most important thing about this kind of data is the freedom to edit it safely, live.

Composing knowledge from events

In any multi-actor system, like a team of collaborating robots, every actor must make decisions based on some current knowledge: a local world model, or an evolving set of goals. It may not be possible to centralise that knowledge – for example if the actors can lose their network connection; or the latency or locking behaviour of a central database is not acceptable.

If the contributing data events are frequent, for example from sensors, every update has to be synthesised by every actor into their knowledge. This can rapidly become a computational headache.

m-ld can help. The knowledge itself is maintained as convergent shared state, and each actor only needs to apply their own updates. The rich query syntax then lets them act upon what they need to know, when they need to act.

Decentralise all the things!

Consumer concerns about personal data include increasing awareness of data ownership. Centralised data management may always have its place where ownership is also centralised. It should never have been the only choice for everything.

But decentralised data is hard. Keeping data on devices risks losing it. Deciding who owns what, even if someone else is working on it, requires complex webs of trust. Deploying data replicas can be an unbounded system administration headache.

m-ld frees your data. It uncouples ownership from location. So it supports apps that keep control over data while still being able to easily and safely keep it backed-up in a choice of locations.