WEBVTT 00:00.000 --> 00:13.000 Next talk is Nikolai himself, so I'm taking off the MC and Lauren talking about next 00:13.000 --> 00:16.000 graph and to encourage us to hear the tape. 00:16.000 --> 00:18.000 Thank you. 00:18.000 --> 00:28.000 So, another round of applause for Linux because we didn't have any program with the display. 00:29.000 --> 00:30.000 Hello, everyone. 00:30.000 --> 00:32.000 I'm Nikolai with Lauren. 00:32.000 --> 00:39.000 We are working on the next graph since three years with the support of NNET and the NGI Fund 00:39.000 --> 00:41.000 of the European Commission. 00:41.000 --> 00:42.000 Let's talk a little bit. 00:42.000 --> 00:44.000 Give you a story about data. 00:44.000 --> 00:45.000 We'll make it very short. 00:45.000 --> 00:47.000 We have a bit late. 00:47.000 --> 00:49.000 Where is my data today? 00:49.000 --> 00:50.000 There. 00:50.000 --> 00:52.000 For most of us, right? 00:52.000 --> 00:54.000 It means me or other accounts. 00:54.000 --> 00:56.000 No access to road data. 00:56.000 --> 00:59.000 It's there, but we can't have access to it. 00:59.000 --> 01:01.000 And plain text in their cloud. 01:01.000 --> 01:06.000 That's not something you want because cyber attacks, leaks, surveillance. 01:06.000 --> 01:08.000 Open social alternatives. 01:08.000 --> 01:09.000 First them. 01:09.000 --> 01:10.000 Great. 01:10.000 --> 01:13.000 But, marry other accounts. 01:13.000 --> 01:18.000 In compatible APIs and data formats, nothing works well together. 01:18.000 --> 01:20.000 And plain text in their servers. 01:20.000 --> 01:21.000 This is a means. 01:21.000 --> 01:23.000 There are friends, but still. 01:23.000 --> 01:25.000 I want my data. 01:25.000 --> 01:26.000 Sorry. 01:26.000 --> 01:27.000 Sound. 01:27.000 --> 01:29.000 I want all my data. 01:29.000 --> 01:32.000 I want all my data in one place. 01:32.000 --> 01:34.000 So I can have control over it. 01:34.000 --> 01:38.000 Ownership, availability, security and privacy. 01:38.000 --> 01:42.000 I can share and collaborate with who I want if I want it. 01:42.000 --> 01:44.000 So I want end-to-end encryption. 01:44.000 --> 01:49.000 And the server is just going to do store and forward of encrypted blocks of data. 01:49.000 --> 01:51.000 It's not going to do much more. 01:51.000 --> 01:53.000 And we call it the broker in the next graph. 01:53.000 --> 01:57.000 And then once I do that, I have local first and I need the strategies. 01:57.000 --> 01:59.000 Because the server doesn't do anything anymore. 01:59.000 --> 02:04.000 It's not helping me with coordination, with total order, with transactions, anything. 02:04.000 --> 02:06.000 How many servers? 02:06.000 --> 02:07.000 You got it. 02:07.000 --> 02:08.000 A federation. 02:08.000 --> 02:09.000 Right? 02:09.000 --> 02:12.000 Because we can't fit all the data of the world in one server. 02:12.000 --> 02:15.000 And it's synchronizes with a pub sub. 02:15.000 --> 02:21.000 There are many ways to do reliable broadcast, but we choose pub sub. 02:21.000 --> 02:25.000 Or go see by example. 02:25.000 --> 02:30.000 It replicates on all your devices, first of all. 02:30.000 --> 02:35.000 Second, it's also stored in the brokers, the servers, but end-to-end encrypted. 02:35.000 --> 02:37.000 So we have full decentralization. 02:37.000 --> 02:41.000 You can have several brokers that are doing backups and emails of your data. 02:41.000 --> 02:43.000 Fail saves. 02:43.000 --> 02:48.000 So I want to completely decentralize the central place for all my data. 02:48.000 --> 02:50.000 This is what I want. 02:50.000 --> 02:52.000 And that's the graph. 02:52.000 --> 02:54.000 Now I'm going to go on the stack. 02:54.000 --> 02:58.000 We started very low on the network and now we go to the protocol. 02:58.000 --> 03:02.000 So the protocol is specialized for end-to-end encryption of CRDTs. 03:02.000 --> 03:06.000 There are a few people doing that, but they are all in the room today. 03:06.000 --> 03:14.000 And so then it can sync any kind of CRDT. 03:14.000 --> 03:18.000 So in the future, we will see more CRDTs. 03:18.000 --> 03:23.000 We have found out some generic CRDTs that you know. 03:23.000 --> 03:31.000 And then we will see specialize CRDTs, because we need to be close to the data model of the application, 03:31.000 --> 03:37.000 like basically 2D, 3D, how do you manage conflicts in that? 03:37.000 --> 03:39.000 So it could do it. 03:40.000 --> 03:44.000 It's the protocol manager's access control with cryptographic capabilities. 03:44.000 --> 03:47.000 So Brooklyn, before I explain what they do, I will not do it. 03:47.000 --> 03:55.000 Because it's too complex and I also give more details of that later on in another talk this afternoon. 03:55.000 --> 03:58.000 We used this, this is a scheme. 03:58.000 --> 04:02.000 It's like you have a HTTP, you have FTP, and you have did. 04:02.000 --> 04:05.000 And then you can put whatever you want in the scheme. 04:05.000 --> 04:08.000 So there are decentralized identifiers. 04:08.000 --> 04:10.000 So it did energy for an aircraft. 04:10.000 --> 04:13.000 And then we put the public keys of the document. 04:13.000 --> 04:18.000 They are stable and durable and portable IDs for your documents. 04:18.000 --> 04:21.000 And for your identity. 04:21.000 --> 04:29.000 We also do with the protocol upload and download the binary files with streaming, content addressing, and chunking, like a bit of rent. 04:29.000 --> 04:31.000 But encrypted. 04:32.000 --> 04:37.000 So we support the services for now of YGS that you heard about just before and auto merge. 04:37.000 --> 04:39.000 That's what just before me and RDS. 04:39.000 --> 04:41.000 Now RDS, you don't know what it is, right? 04:41.000 --> 04:43.000 Who knows about RDS? 04:43.000 --> 04:44.000 Oh. 04:44.000 --> 04:48.000 So I should do a dev room about RDS next year. 04:48.000 --> 04:55.000 So it's a graph, it's a graph data format for those who don't know. 04:55.000 --> 04:58.000 YGS and auto merge are more like JSON like. 04:58.000 --> 05:01.000 They also do rich text, a plain text. 05:01.000 --> 05:06.000 In next graph, I call those discrete compared to the graph, which is like continuous. 05:06.000 --> 05:08.000 You see the image. 05:08.000 --> 05:14.000 And then we have Sparkle, Sparkle, which is the query language for like SQL. 05:14.000 --> 05:16.000 It's similar. 05:16.000 --> 05:18.000 And then it's a standout. 05:18.000 --> 05:21.000 It's a data format that is very simple. 05:21.000 --> 05:24.000 You have, you don't make tables with many rows. 05:24.000 --> 05:25.000 You have only three columns. 05:25.000 --> 05:27.000 It's a subject predicate object. 05:28.000 --> 05:32.000 It brings interoperability by default. 05:32.000 --> 05:35.000 Your apps can use the same format. 05:35.000 --> 05:38.000 It's not like JSON or you can have different, 05:38.000 --> 05:40.000 you need to define the schema here. 05:40.000 --> 05:44.000 It's a flexible format and malleable software. 05:44.000 --> 05:47.000 Means you can replace the software that you keep the data. 05:47.000 --> 05:50.000 And you can compose the software and change it. 05:50.000 --> 05:56.000 And you have a, it's not, it's not bound together, the two. 05:57.000 --> 05:59.000 You can link other documents inside one document. 05:59.000 --> 06:02.000 And it's a database with the query language. 06:02.000 --> 06:04.000 So that's a base across all your documents. 06:04.000 --> 06:07.000 And the documents that have been shared with you. 06:07.000 --> 06:09.000 It has automatic joins. 06:09.000 --> 06:11.000 This is like different from SQL. 06:11.000 --> 06:13.000 When you need to think ahead about your foreign keys. 06:13.000 --> 06:15.000 Here, all the data is joinable. 06:15.000 --> 06:19.000 From the go, when this I said it, it's the global IDs. 06:19.000 --> 06:22.000 This is very important. 06:23.000 --> 06:25.000 Okay, this was key. 06:25.000 --> 06:27.000 So pick up sync protocol. 06:27.000 --> 06:29.000 See the diagnostic graph database. 06:29.000 --> 06:30.000 An encryption address. 06:30.000 --> 06:32.000 Next card brings all the data. 06:32.000 --> 06:35.000 It's not only end to an encrypted, but encryption address. 06:35.000 --> 06:37.000 The database on your disk. 06:37.000 --> 06:39.000 There's the key. 06:39.000 --> 06:42.000 Whenever up in the stack, we have a web SDK. 06:42.000 --> 06:44.000 You can do apps with WSM RAM. 06:44.000 --> 06:48.000 Native apps with storage still web technology. 06:48.000 --> 06:49.000 But it's a web view. 06:49.000 --> 06:54.000 And then you can do also pure rest, Python and TypeScript. 06:54.000 --> 06:57.000 So for the native apps, it's all the platforms. 06:57.000 --> 06:59.000 And for the languages, it's those. 06:59.000 --> 07:04.000 For now, but we are also going to add more as we can as we do. 07:04.000 --> 07:06.000 So the SDK, the APIs are two. 07:06.000 --> 07:07.000 Two levels. 07:07.000 --> 07:08.000 The raw APIs. 07:08.000 --> 07:11.000 You just subscribe to the documents. 07:11.000 --> 07:13.000 It's document-based. 07:13.000 --> 07:15.000 Update the documents. 07:15.000 --> 07:18.000 The CRDT binary blocks of WGS automatically. 07:18.000 --> 07:19.000 The RDS triples. 07:19.000 --> 07:23.000 But you also have a higher API that lowering will present now. 07:23.000 --> 07:26.000 We're compatible with these three frameworks. 07:26.000 --> 07:29.000 And then on top of that, you have a framework. 07:29.000 --> 07:38.000 The framework is, so on top of the SDK, if you want to use common features that all apps need. 07:38.000 --> 07:41.000 So we give you a history of your modification. 07:41.000 --> 07:42.000 That's immutable. 07:42.000 --> 07:47.000 You can audit every commit, every change of the data is signed. 07:47.000 --> 07:50.000 So we have authenticity, it's immutable. 07:50.000 --> 07:52.000 And we can even time travel. 07:52.000 --> 07:55.000 We can come back in the past and see what was there. 07:55.000 --> 07:57.000 Permissions, of course. 07:57.000 --> 08:00.000 Search, local search. 08:00.000 --> 08:02.000 Sparkle, local, sparkle, always. 08:02.000 --> 08:04.000 Everything's local, local first. 08:04.000 --> 08:06.000 And reactive queries, not. 08:06.000 --> 08:08.000 We don't have a chat, but we are working on it. 08:08.000 --> 08:10.000 Which is what everybody does now. 08:10.000 --> 08:14.000 You make a query and the query stays alive. 08:14.000 --> 08:19.000 And if you're underlying data changes, your results are going to change also. 08:19.000 --> 08:20.000 After months. 08:20.000 --> 08:21.000 That's great. 08:21.000 --> 08:23.000 For the reactive programming, it's great. 08:23.000 --> 08:26.000 Comments, chat, notifications, basic. 08:26.000 --> 08:28.000 The store, the drive for all your documents. 08:28.000 --> 08:30.000 The wallet where you have all your keys. 08:30.000 --> 08:32.000 And you need to open this wallet locally. 08:32.000 --> 08:34.000 Not talking to the server. 08:34.000 --> 08:37.000 And the app store, because we want to make apps with next half. 08:37.000 --> 08:40.000 And then we need to install those apps and other access to them. 08:40.000 --> 08:43.000 This is the user who decides which apps. 08:43.000 --> 08:45.000 So it's not ready. 08:45.000 --> 08:47.000 Next up, ecosystem. 08:47.000 --> 08:49.000 It's who's using it today. 08:49.000 --> 08:51.000 We have a few docially. 08:51.000 --> 08:53.000 I mean, he's here in the room. 08:53.000 --> 08:56.000 We're working with hospitals, because the next half is resilient. 08:56.000 --> 09:00.000 So if half of the hospital burns, the other half can see the work. 09:00.000 --> 09:04.000 Miru, Miru is a video editor. 09:04.000 --> 09:05.000 He's also in the room. 09:05.000 --> 09:06.000 He's going to present a little bit later. 09:06.000 --> 09:10.000 We have a personal network manager, which is bringing all your contacts from 09:10.000 --> 09:11.000 LinkedIn, Gmail, blah, blah. 09:11.000 --> 09:14.000 And then some services like activity pods that 09:14.000 --> 09:17.000 is doing compatibility with activity pub. 09:17.000 --> 09:19.000 And soon we have mail. 09:19.000 --> 09:22.000 Now, one big thing, we just got a grant. 09:22.000 --> 09:24.000 And we're going to do all these apps. 09:24.000 --> 09:25.000 We have three years to do it. 09:25.000 --> 09:28.000 This is going to be the workspace that everybody wants. 09:28.000 --> 09:31.000 It's an integrated local first based on next graph. 09:31.000 --> 09:33.000 And there will be sub-granting. 09:33.000 --> 09:35.000 So if you want to apply for grants at NNNAT, 09:35.000 --> 09:38.000 you can be helping us during this framework. 09:39.000 --> 09:41.000 We have a stack. 09:41.000 --> 09:44.000 We have a stack that starts with the network, 09:44.000 --> 09:46.000 which is decentralized. 09:46.000 --> 09:47.000 You can install itself host. 09:47.000 --> 09:50.000 It can go on all kinds of things up to the cloud. 09:50.000 --> 09:51.000 It's AWS. 09:51.000 --> 09:53.000 It's not recommended, but if you need to, 09:53.000 --> 09:55.000 you can it's encrypted. 09:55.000 --> 09:56.000 So it's okay. 09:56.000 --> 09:58.000 The best is to have it at home. 09:58.000 --> 10:00.000 You have a small device at home. 10:00.000 --> 10:01.000 That's the dream, right? 10:01.000 --> 10:03.000 We're super decentralized. 10:03.000 --> 10:05.000 So because we don't use DNS, 10:05.000 --> 10:07.000 it's only on IP. 10:07.000 --> 10:09.000 So don't worry about that. 10:09.000 --> 10:13.000 Second level is a set protocol and engine. 10:13.000 --> 10:17.000 So the SDK then the framework and then this ecosystem of apps. 10:17.000 --> 10:21.000 Now, this is the properties that you get when you're using us. 10:21.000 --> 10:23.000 I will let you read that later in the PDF. 10:23.000 --> 10:25.000 We are in alpha. 10:25.000 --> 10:27.000 You can start using it. 10:27.000 --> 10:29.000 We have a startup using it already. 10:29.000 --> 10:32.000 But performance, this is the next step. 10:32.000 --> 10:36.000 Torrid plugins are going to be cool for those who want to make native apps. 10:36.000 --> 10:39.000 This is what we do this year. 10:39.000 --> 10:44.000 And now, Lauren, we'll take the mic. 10:44.000 --> 10:46.000 Yeah, for the next. 10:46.000 --> 10:47.000 All right. 10:47.000 --> 10:48.000 Okay, come here. 10:48.000 --> 10:52.000 So I developed the TypeScript SDK in ORM. 10:52.000 --> 10:56.000 So an object relational mapping to map the different CRDTs, 10:56.000 --> 10:59.000 bit RDF or automation, YJS, 10:59.000 --> 11:02.000 to play in TypeScript objects. 11:02.000 --> 11:05.000 So it's easier and you don't have the different APIs. 11:05.000 --> 11:09.000 For example, this is my bed. 11:09.000 --> 11:11.000 This is YJS. 11:11.000 --> 11:13.000 And then comparison in the next graph with the ORM, 11:13.000 --> 11:16.000 you just say data.key equals value. 11:16.000 --> 11:18.000 No function calls. 11:18.000 --> 11:20.000 This happens in the background. 11:20.000 --> 11:24.000 And you get reactive life synchronization with your front. 11:24.000 --> 11:27.000 And this is React, spelled, and view. 11:27.000 --> 11:31.000 And I'm going to show you a demo. 11:32.000 --> 11:34.000 So it's easier to read like that. 11:34.000 --> 11:35.000 When you know it works. 11:35.000 --> 11:37.000 Isn't it? 11:37.000 --> 11:39.000 Right? 11:39.000 --> 11:43.000 Yeah. 11:43.000 --> 11:46.000 So you put it in your language. 11:46.000 --> 11:47.000 Yes. 11:47.000 --> 11:48.000 Okay. 11:48.000 --> 11:49.000 Perfect. 11:49.000 --> 11:51.000 So now. 11:51.000 --> 11:57.000 So I have written an expense tracker example app. 11:57.000 --> 12:00.000 You have implementations in the same window with 12:00.000 --> 12:01.000 view. 12:01.000 --> 12:04.000 React and spelled. 12:04.000 --> 12:06.000 Right. 12:06.000 --> 12:12.000 And here you can see two different windows. 12:12.000 --> 12:15.000 Having two different running to different engines. 12:15.000 --> 12:19.000 Or replicas can call them. 12:19.000 --> 12:22.000 And I can add a new category here. 12:22.000 --> 12:23.000 What is your app doing? 12:23.000 --> 12:24.000 Sorry. 12:24.000 --> 12:25.000 What is your app doing? 12:25.000 --> 12:26.000 To the expense tracker. 12:26.000 --> 12:27.000 Right. 12:27.000 --> 12:37.000 And so I can. 12:37.000 --> 12:38.000 Yeah. 12:38.000 --> 12:41.000 I think the connection is not good. 12:41.000 --> 12:42.000 So might have. 12:42.000 --> 12:43.000 Okay. 12:43.000 --> 12:44.000 Found out. 12:44.000 --> 12:45.000 Sorry for that. 12:45.000 --> 12:50.000 Here we go. 12:50.000 --> 12:51.000 So add a new category. 12:51.000 --> 12:53.000 For example, work related things. 12:53.000 --> 12:55.000 You can see it pops up. 12:56.000 --> 12:58.000 Here and in the different. 12:58.000 --> 13:02.000 In the other tab and the other frameworks. 13:02.000 --> 13:05.000 And I can expect add an expense. 13:05.000 --> 13:07.000 Let's call out. 13:07.000 --> 13:09.000 Pause. 13:09.000 --> 13:10.000 Dan. 13:10.000 --> 13:11.000 Take it. 13:11.000 --> 13:12.000 Train. 13:12.000 --> 13:13.000 Take it. 13:13.000 --> 13:15.000 Not like that. 13:15.000 --> 13:18.000 And add it to work. 13:18.000 --> 13:19.000 And here you can see. 13:19.000 --> 13:21.000 It's synchronized. 13:21.000 --> 13:22.000 We see. 13:23.000 --> 13:24.000 Great. 13:30.000 --> 13:32.000 Hello, everyone. 13:32.000 --> 13:34.000 My bad. 13:34.000 --> 13:36.000 Chit, chit, chit. 13:36.000 --> 13:38.000 You can start over with me. 13:38.000 --> 13:39.000 The other one. 13:39.000 --> 13:41.000 Want to be on your slides. 13:41.000 --> 13:42.000 Starts with this slide. 13:42.000 --> 13:43.000 This is the state show. 13:43.000 --> 13:45.000 Start with different slide. 13:45.000 --> 13:47.000 Here we go. 13:47.000 --> 13:48.000 Okay. 13:48.000 --> 13:51.000 So what's happening in the background? 13:52.000 --> 13:54.000 The object changes. 13:54.000 --> 13:55.000 Something like expense. 13:55.000 --> 13:56.000 The title is called. 13:56.000 --> 13:57.000 Within you. 13:57.000 --> 13:58.000 Post them. 13:58.000 --> 13:59.000 Trying to get here. 13:59.000 --> 14:00.000 See it. 14:00.000 --> 14:01.000 The engine. 14:01.000 --> 14:03.000 The changes send to the engine. 14:03.000 --> 14:05.000 From the orm to the. 14:05.000 --> 14:07.000 Engine running in either. 14:07.000 --> 14:08.000 Rust orn. 14:08.000 --> 14:10.000 As binary. 14:10.000 --> 14:11.000 Persist. 14:11.000 --> 14:12.000 The CRDT. 14:12.000 --> 14:14.000 And so you sit to other replicas. 14:14.000 --> 14:16.000 To other devices. 14:16.000 --> 14:17.000 There. 14:17.000 --> 14:20.000 The engine receives the changes. 14:21.000 --> 14:22.000 Decrips it. 14:22.000 --> 14:24.000 Flies it to the local replica. 14:24.000 --> 14:25.000 And up there. 14:25.000 --> 14:27.000 It's the type of object. 14:27.000 --> 14:31.000 And this makes the front end re-render automatically. 14:31.000 --> 14:33.000 Okay. 14:33.000 --> 14:35.000 So what happens. 14:35.000 --> 14:36.000 So. 14:36.000 --> 14:40.000 Here's an example of how this component looks like in a. 14:40.000 --> 14:42.000 I'm compact format here. 14:42.000 --> 14:44.000 The example for react. 14:44.000 --> 14:46.000 You either call use discrete. 14:46.000 --> 14:47.000 If you use. 14:47.000 --> 14:52.000 You're using json supporting rdf like auto major yjs. 14:52.000 --> 14:53.000 You call it. 14:53.000 --> 14:55.000 You get the duck. 14:55.000 --> 14:57.000 Expenses. 14:57.000 --> 14:59.000 Or if you're in graph mode. 14:59.000 --> 15:01.000 You have. 15:01.000 --> 15:03.000 You define a schema. 15:03.000 --> 15:05.000 I'm getting to this in the next slide. 15:05.000 --> 15:06.000 You pass the schema. 15:06.000 --> 15:07.000 And the scope. 15:07.000 --> 15:09.000 This can be either the whole. 15:09.000 --> 15:12.000 All documents or subset of documents. 15:12.000 --> 15:13.000 Or just one document. 15:13.000 --> 15:14.000 And again. 15:14.000 --> 15:16.000 I have the expenses here. 15:16.000 --> 15:19.000 And then I ran the all the expenses. 15:19.000 --> 15:20.000 And input. 15:20.000 --> 15:21.000 And if I change. 15:21.000 --> 15:23.000 Here you can see that. 15:23.000 --> 15:27.000 The component will re-render. 15:27.000 --> 15:31.000 So the thing is typing and rdf. 15:31.000 --> 15:32.000 schemas. 15:32.000 --> 15:34.000 It's a bit hard for rdf. 15:34.000 --> 15:35.000 So. 15:35.000 --> 15:36.000 What do we do? 15:36.000 --> 15:37.000 In TypeScript. 15:37.000 --> 15:39.000 This expense and expense category. 15:39.000 --> 15:40.000 Looks like this. 15:40.000 --> 15:42.000 We have a graph and a sub. 15:42.000 --> 15:43.000 And an ID. 15:43.000 --> 15:45.000 The graph is the document ID. 15:45.000 --> 15:46.000 It's an iri. 15:46.000 --> 15:47.000 And the subject. 15:47.000 --> 15:48.000 ID is an iris. 15:48.000 --> 15:49.000 Well, you have a type. 15:49.000 --> 15:51.000 And then properties like title. 15:51.000 --> 15:52.000 Total. 15:52.000 --> 15:54.000 Total price. 15:54.000 --> 15:55.000 Payments. 15:55.000 --> 15:56.000 That is different. 15:56.000 --> 15:59.000 And you have objects. 15:59.000 --> 16:01.000 With cardinality. 16:01.000 --> 16:02.000 Bigger than one. 16:02.000 --> 16:04.000 So you have a set. 16:04.000 --> 16:05.000 An rdf. 16:05.000 --> 16:06.000 You don't have ordering. 16:06.000 --> 16:09.000 So everything is usually a set. 16:09.000 --> 16:11.000 And here's the sub object. 16:11.000 --> 16:13.000 Expense category. 16:14.000 --> 16:16.000 There. 16:16.000 --> 16:19.000 This is auto generated. 16:19.000 --> 16:22.000 And this is what you actually define as a schema. 16:22.000 --> 16:26.000 You have, again, like a type. 16:26.000 --> 16:30.000 Title different properties of different data types. 16:30.000 --> 16:31.000 String float. 16:31.000 --> 16:32.000 Digger. 16:32.000 --> 16:36.000 And again, you can see the sub schema. 16:36.000 --> 16:38.000 Which is our sub object. 16:38.000 --> 16:41.000 The expense category. 16:41.000 --> 16:42.000 Okay. 16:42.000 --> 16:44.000 To sum it up. 16:44.000 --> 16:48.000 What we do is we modify a series of T's. 16:48.000 --> 16:51.000 And type script like any other object. 16:51.000 --> 16:56.000 You don't have to deal with the specifics of the certain CRD T's. 16:56.000 --> 16:58.000 We have the ORM for RDF. 16:58.000 --> 16:59.000 That's typed. 16:59.000 --> 17:03.000 And we have support for auto motion yjs as well. 17:03.000 --> 17:07.000 Type in there and schema comes soon as well. 17:07.000 --> 17:08.000 Right. 17:08.000 --> 17:10.000 Type safety for RDF. 17:11.000 --> 17:14.000 We have the reactivity and react view and spelt. 17:14.000 --> 17:16.000 Currently. 17:16.000 --> 17:19.000 And you have the live syncing with other users and devices. 17:19.000 --> 17:22.000 And you want to show us the netty app. 17:22.000 --> 17:24.000 But we want it to show. 17:24.000 --> 17:25.000 You have it here. 17:25.000 --> 17:26.000 How much time do we have? 17:26.000 --> 17:27.000 Two minutes. 17:27.000 --> 17:28.000 Okay. 17:28.000 --> 17:30.000 So that wasn't. 17:30.000 --> 17:32.000 Native apps. 17:32.000 --> 17:33.000 All right. 17:33.000 --> 17:35.000 Native apps. 17:35.000 --> 17:36.000 So we're back. 17:36.000 --> 17:39.000 This is what my. 17:39.000 --> 17:41.000 Example app looks like. 17:41.000 --> 17:46.000 You can also find it on gith.nextgraph.org. 17:46.000 --> 17:48.000 And then. 17:48.000 --> 17:49.000 Nope. 17:49.000 --> 17:51.000 That's a web browser. 17:51.000 --> 17:53.000 So. 17:53.000 --> 17:55.000 Here you see. 17:55.000 --> 17:58.000 The view from the native app. 17:58.000 --> 18:01.000 I have an expense. 18:01.000 --> 18:04.000 Most of them trained to kid. 18:04.000 --> 18:06.000 And two expense categories. 18:07.000 --> 18:09.000 And. 18:09.000 --> 18:10.000 Work. 18:10.000 --> 18:13.000 And the properties that are into as well. 18:13.000 --> 18:14.000 There's the same data. 18:14.000 --> 18:15.000 Right. 18:15.000 --> 18:16.000 Same data. 18:16.000 --> 18:17.000 It's synchronized. 18:17.000 --> 18:19.000 It's displayed with a different. 18:19.000 --> 18:20.000 Software. 18:20.000 --> 18:21.000 But it's the same data. 18:21.000 --> 18:22.000 And here it's native. 18:22.000 --> 18:24.000 It's running in a native application. 18:24.000 --> 18:26.000 Maybe you zoom out and we sit. 18:26.000 --> 18:27.000 But. 18:27.000 --> 18:28.000 Yeah. 18:28.000 --> 18:29.000 Sure. 18:29.000 --> 18:30.000 Right. 18:30.000 --> 18:32.000 What happens when you really fight. 18:32.000 --> 18:34.000 It should synchronize. 18:35.000 --> 18:37.000 Like your web app. 18:37.000 --> 18:38.000 Oh, yeah. 18:38.000 --> 18:39.000 No, no. 18:39.000 --> 18:40.000 It's still on. 18:40.000 --> 18:42.000 It's we see it's connected. 18:42.000 --> 18:43.000 Okay. 18:43.000 --> 18:45.000 It's the demo effect. 18:45.000 --> 18:46.000 What happened? 18:46.000 --> 18:47.000 What did you change? 18:47.000 --> 18:48.000 What did you change? 18:48.000 --> 18:50.000 The expense category. 18:50.000 --> 18:52.000 No. 18:52.000 --> 18:54.000 Do you want to go to wallet? 18:54.000 --> 18:56.000 In the good wallet. 18:56.000 --> 18:57.000 So find this one. 18:57.000 --> 18:58.000 Maybe the connection. 18:58.000 --> 19:01.000 This is sinking by the internet. 19:02.000 --> 19:04.000 You are in you change it from here from there. 19:04.000 --> 19:06.000 You are in live live mode. 19:06.000 --> 19:07.000 Yeah. 19:07.000 --> 19:08.000 Okay. 19:08.000 --> 19:09.000 You can close it. 19:09.000 --> 19:11.000 Open it again. 19:11.000 --> 19:12.000 Okay. 19:12.000 --> 19:13.000 And this is. 19:13.000 --> 19:14.000 Oh, yeah. 19:14.000 --> 19:15.000 We're still out there. 19:15.000 --> 19:16.000 Maybe go. 19:16.000 --> 19:17.000 Okay. 19:17.000 --> 19:18.000 Usually it works. 19:18.000 --> 19:19.000 We have some connectivity issues. 19:19.000 --> 19:20.000 Yeah. 19:20.000 --> 19:22.000 It's well this morning, of course. 19:23.000 --> 19:32.000 Thank you. 19:32.000 --> 19:34.000 All right. 19:34.000 --> 19:36.000 Thank you, Nico. 19:36.000 --> 19:37.000 I'm Lauren. 19:37.000 --> 19:39.000 We have time for a couple of questions. 19:39.000 --> 19:40.000 Okay. 19:40.000 --> 19:41.000 I'm going to try. 19:41.000 --> 19:42.000 Thank you. 19:42.000 --> 19:43.000 Thanks a lot for working on this. 19:43.000 --> 19:47.000 I've been reading of having something like this for more about five years now. 19:47.000 --> 19:50.000 Something that I'm usually like working with is like. 19:50.000 --> 19:53.000 So can I if I build an application of this? 19:53.000 --> 19:57.000 Can I say that I'm like working in a graph now for some time? 19:57.000 --> 20:02.000 And then later merge that in because it's a it's already T and I can just like work on a branch and 20:02.000 --> 20:03.000 Mount merge that in later. 20:03.000 --> 20:04.000 Yes. 20:04.000 --> 20:05.000 Is that this is work? 20:05.000 --> 20:06.000 Yes, you can. 20:06.000 --> 20:07.000 We have branches. 20:07.000 --> 20:08.000 Awesome. 20:08.000 --> 20:09.000 Thank you. 20:09.000 --> 20:10.000 Perfect. 20:10.000 --> 20:11.000 You can. 20:13.000 --> 20:15.000 So I want to ask you. 20:15.000 --> 20:17.000 Where is the merging happening? 20:17.000 --> 20:18.000 Is this enough? 20:18.000 --> 20:20.000 Where the merge happens? 20:20.000 --> 20:22.000 Is it in a thing server? 20:22.000 --> 20:24.000 Is it a thing server? 20:24.000 --> 20:26.000 Or the server does the. 20:26.000 --> 20:27.000 No, no. 20:27.000 --> 20:30.000 It's done in the client in every client that you're seeing. 20:30.000 --> 20:32.000 The client and it's done on every client. 20:32.000 --> 20:34.000 We call them an application the same way. 20:34.000 --> 20:36.000 It's deterministic. 20:36.000 --> 20:38.000 That's that's the reality thing. 20:38.000 --> 20:41.000 So the server is basically just the pubs have. 20:41.000 --> 20:42.000 Exactly. 20:42.000 --> 20:43.000 Still on for a while. 20:43.000 --> 20:45.000 And cryptid things. 20:46.000 --> 20:49.000 Thank you. 20:49.000 --> 20:55.000 I was wondering since like RDF seems to be like a first pass citizen of this. 20:55.000 --> 21:00.000 Does it have like a way to federate sparkle queries across. 21:00.000 --> 21:04.000 Documents like I don't probably want all my documents locally. 21:04.000 --> 21:07.000 If I have all my data within next graph. 21:07.000 --> 21:11.000 But like how do I reconcile this with running sparkle queries through those. 21:11.000 --> 21:12.000 Yes. 21:12.000 --> 21:16.000 So in the future you'll be able to decide exactly which document should be. 21:16.000 --> 21:21.000 In which device that you don't want to synchronize all of it in all the devices. 21:21.000 --> 21:23.000 That's the first thing. 21:23.000 --> 21:28.000 Once they are synchronized, you can make a query that encompasses all your documents. 21:28.000 --> 21:29.000 Right? 21:29.000 --> 21:32.000 You can make a query on all the database if you want to with sparkle. 21:32.000 --> 21:35.000 That's the scope he was referring to before. 21:35.000 --> 21:41.000 Now the federated queries is that when you want to query or things that are somewhere else. 21:41.000 --> 21:44.000 So it would be of another user basically. 21:44.000 --> 21:45.000 And this we will do it yes. 21:45.000 --> 21:47.000 It's quite easy to do it. 21:47.000 --> 21:49.000 We didn't find a priority for it. 21:49.000 --> 21:51.000 We wanted first to give you an SDK. 21:51.000 --> 21:53.000 You could play it with it with reactants. 21:53.000 --> 21:54.000 But it's there. 21:54.000 --> 21:56.000 It's going to be. 21:56.000 --> 21:58.000 Thanks for the great talk. 21:58.000 --> 21:59.000 Can you hear me? 21:59.000 --> 22:00.000 Is it? 22:00.000 --> 22:01.000 Yes. 22:01.000 --> 22:02.000 We are here. 22:02.000 --> 22:03.000 You and this is for the remote speakers. 22:03.000 --> 22:04.000 Good. 22:04.000 --> 22:05.000 Good. 22:05.000 --> 22:08.000 So it's a nice coincidence that you are using RDF. 22:08.000 --> 22:11.000 Because SPDX is also based on RDF. 22:11.000 --> 22:12.000 This is great. 22:12.000 --> 22:14.000 One question. 22:14.000 --> 22:16.000 What about gigabytes of RDF? 22:16.000 --> 22:20.000 So if we have very large files and very large graphs. 22:20.000 --> 22:25.000 How is this supposed to work with like a scale at a very large scale? 22:25.000 --> 22:27.000 It's the question for everything. 22:27.000 --> 22:28.000 It's like the RDF. 22:28.000 --> 22:30.000 But also the to merge the digest. 22:30.000 --> 22:31.000 It's always a question. 22:31.000 --> 22:35.000 And for the binary files, it's okay. 22:35.000 --> 22:36.000 We have streaming. 22:36.000 --> 22:38.000 For the RDF, I will add streaming. 22:38.000 --> 22:40.000 It means that okay. 22:40.000 --> 22:43.000 It's the two gigabytes of RDF. 22:43.000 --> 22:44.000 I will receive it. 22:44.000 --> 22:49.000 And I will ingest it into the local spark engine, which is oxygraph, 22:49.000 --> 22:51.000 by the way, because everything is in rest. 22:51.000 --> 22:53.000 And it will come. 22:53.000 --> 22:55.000 I can't tell you how long it will take for now. 22:55.000 --> 22:56.000 And let's try. 22:56.000 --> 22:58.000 Maybe a follow-up question. 22:58.000 --> 23:03.000 Because in the graph, in this RDF graph, everything can be connected to everything. 23:03.000 --> 23:07.000 That means that you cannot know in advance how much data do you need? 23:07.000 --> 23:10.000 In order to be able to kind of in a meaningful way, 23:10.000 --> 23:12.000 browse your current document. 23:12.000 --> 23:19.000 So in the answer, do you really think that it can be like two gigabytes of data loaded into the local cache? 23:19.000 --> 23:21.000 Because is this going to work actually, 23:21.000 --> 23:24.000 like in a responsive way for users? 23:24.000 --> 23:27.000 So if the data is present locally, it's very good. 23:27.000 --> 23:33.000 So if it needs to be fetched or federated query first, 23:33.000 --> 23:36.000 then you have to wait to receive it. 23:36.000 --> 23:37.000 We decrypt it. 23:37.000 --> 23:40.000 We materialize the state and then it's available to you. 23:40.000 --> 23:42.000 Thanks for the question. 23:42.000 --> 23:45.000 If you run out of like the remote device, the space, 23:45.000 --> 23:48.000 so you cannot think what is happening in that case. 23:48.000 --> 23:49.000 The remote device? 23:49.000 --> 23:54.000 Yeah, you have to think all your updates to all the devices and remote device run out of it. 23:54.000 --> 23:56.000 Yes, so that's what I said before. 23:56.000 --> 23:59.000 We would have the mechanism to decide on which device to synchronize what? 23:59.000 --> 24:03.000 I think we run out of time for the Q&A, right? 24:03.000 --> 24:04.000 Yeah. 24:04.000 --> 24:05.000 30 seconds. 24:05.000 --> 24:07.000 One very short question. 24:07.000 --> 24:08.000 Yes or no? 24:08.000 --> 24:09.000 Question?