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.