WEBVTT

00:00.000 --> 00:10.000
Here it is. Hello, everyone. I'm Nico and I'm going to present to

00:10.000 --> 00:14.500
Next Graph today that I developed in the last two years with the support of

00:14.500 --> 00:19.000
NLNet Foundation and the NGI Fund of the European Commission.

00:19.000 --> 00:21.000
So what is Next Graph?

00:21.000 --> 00:25.000
It's a protocol for encrypted sync of data.

00:25.000 --> 00:31.000
And on top of that, it's a framework for developing collaborative applications.

00:31.000 --> 00:38.000
It's a working progress. The protocol is ready and the framework is coming this year.

00:38.000 --> 00:44.000
You will ask me maybe why another protocol, why another framework.

00:44.000 --> 00:48.000
Like if they were not enough of them already, right?

00:48.000 --> 00:51.000
First of all, Next Graph is local first.

00:51.000 --> 00:54.000
So you will hear about local first more and more.

00:54.000 --> 00:57.000
You just heard it about that five minutes ago.

00:57.000 --> 01:00.000
It's a hot topic, but what is it?

01:00.000 --> 01:05.000
Maybe you remember that we used to have offline on least software.

01:05.000 --> 01:09.000
No internet or at best you would exchange files by email.

01:09.000 --> 01:12.000
And now everything is in the cloud.

01:12.000 --> 01:16.000
As you will know, the cloud does not work offline.

01:16.000 --> 01:22.000
Today we are talking about local first apps, which can work online, but also offline.

01:22.000 --> 01:27.000
And when connectivity is restored, the synchronized without conflict.

01:27.000 --> 01:32.000
As a bonus, you also get real-time collaboration for free.

01:32.000 --> 01:35.000
How can it merge without conflict?

01:35.000 --> 01:37.000
This is because we use CRDTs.

01:37.000 --> 01:40.000
You heard of it just before.

01:40.000 --> 01:46.000
And if you don't know what it is, you go to CRDT.tech or Lofi.store, a very good website.

01:46.000 --> 01:49.000
I don't have time to explain it now.

01:49.000 --> 01:56.000
But basically, there are data types, meaning a special format or encoding of your data.

01:56.000 --> 01:59.000
We encode each update separately.

01:59.000 --> 02:04.000
And that helps us to merge automatically the concurrent edits.

02:04.000 --> 02:07.000
That's the problem when you edit concurrently the same thing.

02:07.000 --> 02:12.000
When we are back online, we sync the divs and it just works.

02:12.000 --> 02:21.000
So the difference with other sync protocols is that next graph is Antoine encrypted, which you know what it means, right?

02:21.000 --> 02:24.000
We believe that privacy is important.

02:24.000 --> 02:26.000
I'm sure you agree.

02:26.000 --> 02:30.000
Users should own their data and how to own your data.

02:30.000 --> 02:34.000
The only way to enforce that is by encrypting everything Antoine.

02:34.000 --> 02:39.000
Our protocol has been designed from the beginning to securely transport any kind of CRDT.

02:39.000 --> 02:44.000
And it could transport, by example, aether, aether, aether, what was it?

02:44.000 --> 02:47.000
It just presented.

02:47.000 --> 02:51.000
From now, we support the CRDT of auto merge.

02:51.000 --> 02:55.000
That's why I'm saying it because it's based on auto merge also what you did.

02:55.000 --> 02:59.000
YGS, RDF and soon Noreau.

02:59.000 --> 03:02.000
And soon we could unmore also.

03:02.000 --> 03:08.000
The RDF CRDT has been developed in house because there wasn't any available.

03:08.000 --> 03:13.000
The three other lives, they are the most known CRDTs.

03:13.000 --> 03:16.000
It's about JSON, rich text, map down and plain text.

03:16.000 --> 03:20.000
And with that, you can do already a lot of things.

03:20.000 --> 03:23.000
By the way, if you're up, if you haven't up.

03:23.000 --> 03:31.000
And if you're already using one of those, you can port it to next graph and you will immediately benefit from encrypted sync.

03:31.000 --> 03:35.000
We also have immutable binary files because it's useful, right?

03:35.000 --> 03:38.000
Attachments, the files, the images, the videos.

03:38.000 --> 03:46.000
And we added the mechanism of blocks like in notion so that the users can combine within a single document.

03:46.000 --> 03:50.000
Many CRDTs and types inside one document.

03:50.000 --> 03:55.000
Also developers can choose which CRDTs the best fit for their data model.

03:55.000 --> 04:00.000
And this is why it might become interesting, it's because we have framework.

04:00.000 --> 04:06.000
Any app can become collaborative, local first and end when encrypted at low cost.

04:06.000 --> 04:13.000
We're providing convenient APIs for web app developers who are using active stores like those,

04:13.000 --> 04:17.000
where they can bind their data to some GUI components, right?

04:17.000 --> 04:18.000
That's how it works.

04:18.000 --> 04:20.000
We have the data and we bind.

04:20.000 --> 04:23.000
We give you that a reactive store.

04:23.000 --> 04:29.000
We have bindings for TypeScript, NodeGS and Rust, because in traffic it's coded in Rust and compiled to wasm.

04:29.000 --> 04:36.000
And we will add later support for all this if we can.

04:36.000 --> 04:39.000
Using our framework, we already developed an app.

04:39.000 --> 04:44.000
For mobile desktop and web web app.

04:44.000 --> 04:51.000
So that end users can manage their wallet, install and launch other apps, store access and search.

04:51.000 --> 04:56.000
They are data locally and while keeping it encrypted at rest.

04:56.000 --> 05:00.000
They can grant and revoke access, they are data to other apps.

05:00.000 --> 05:05.000
They can grant access to their data to other apps and share documents in their social network.

05:05.000 --> 05:12.000
Users can organize their documents into public protected and private stores and create new stores for teams and groups.

05:12.000 --> 05:21.000
We believe that in the context of AI is crappy, online harassment and pervasive surveillance, more private social networks are needed.

05:21.000 --> 05:27.000
Meaning social profiles and posts should probably be protected by permissions and encryption.

05:27.000 --> 05:33.000
And your family vacation picture should probably not end up in your public profile anyway.

05:33.000 --> 05:38.000
Next slide can help with making secure and cryptid and local first social apps.

05:38.000 --> 05:49.000
Generally, with us SDK, the developer only did with local data and subscribed to the data for the dates and it synchronized in the background.

05:49.000 --> 05:53.000
No more remote API calls, fetch or post like here.

05:53.000 --> 06:00.000
It's not a client server anymore, which makes it more decentralized and web service or even an federated system.

06:00.000 --> 06:06.000
Don't get me wrong, the Fediverse is great and we are happy to hear, but we want to overcome its limitations.

06:06.000 --> 06:14.000
Like, for example, the VPS, you need to run, the CIS admin, you need to trust, who will install and manage and upgrade many web apps,

06:14.000 --> 06:17.000
of any compatible one with another.

06:17.000 --> 06:25.000
The domain name is that need to be paid every year and bring some portability issues when we move our data to another service providers.

06:25.000 --> 06:28.000
We have problems with portability here.

06:28.000 --> 06:32.000
So running first services can be complicated and not risk-free neither.

06:32.000 --> 06:37.000
This is a picture of a French that has sent out that burned down a few years ago.

06:38.000 --> 06:41.000
We want to be more decentralized and resilient than that.

06:41.000 --> 06:48.000
We want to have more and zero single point of failure, so we got three of the main names.

06:48.000 --> 06:54.000
I mean, they are not mandatory for the protocol to work, just IP is enough.

06:54.000 --> 06:56.000
Does that mean that we are peer-to-peer?

06:56.000 --> 07:00.000
Not really, not exactly because peer-to-peer has a major problem.

07:00.000 --> 07:08.000
What to do when you want to sync your data and you can't find any other peer online at the exact same moment than you.

07:08.000 --> 07:14.000
So, as a consequence, we still have a server, servers, but we call them brokers.

07:14.000 --> 07:22.000
Our network is organized in a two-tier topology, which means the peers took to a broker and the brokers took to each other.

07:22.000 --> 07:28.000
The workers ran 24-7, and only stolen for a while, encrypted blocks of data.

07:28.000 --> 07:31.000
They are simple to set up and run.

07:31.000 --> 07:39.000
They can run anywhere, as long as they have a public IP, and we want to see them running everywhere, especially at home and in your office.

07:39.000 --> 07:48.000
Basically, what we call at the edge of the network, there is a level of decentralization that we want and data locality that we want.

07:48.000 --> 07:57.000
I can control where my data is stored and I can easily add automated encrypted backups by configuring more brokers in my account.

07:57.000 --> 08:09.000
Because we developed this new protocol that does not need domain names, we automatically came to use the IDs as identifiers for both the users and data.

08:09.000 --> 08:17.000
Each document has its own ID, and regardless of where the data is stored, the ID is stable and remains always the same.

08:17.000 --> 08:22.000
I can share the ID link with other users and collaborate with them on any document.

08:23.000 --> 08:32.000
Those URIs represent permissions that we call cryptographic permissions because if you have the key, the link is the same.

08:32.000 --> 08:38.000
You can read, you can subscribe, or you can maybe edit, but if you don't have it, you can do nothing.

08:38.000 --> 08:43.000
Of course, we sort about backward compatibility to HTTP.

08:43.000 --> 08:51.000
You can already run a web service in Node.js, by example, to serve your data if you need to, and there is also web application for end users.

08:52.000 --> 08:58.000
Thanks to our collaboration to with activity pods project here in the room.

08:58.000 --> 09:09.000
We are compatible with activity pod and solid, and by the way, they are presenting tomorrow in the birth of a physician, track A on social web at 12 o'clock tomorrow.

09:09.000 --> 09:17.000
Now that I mentioned solid, in fact, RDF, link data, semantic web, source synonyms are the heart of our platform.

09:17.000 --> 09:25.000
As I said earlier, we have developed a CRDT for RDF because we believe that link data is great for interoperability.

