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?

