WEBVTT

00:00.000 --> 00:10.000
Yes, it's just a fun stuff.

00:10.000 --> 00:13.000
I'm really happy to have play more.

00:13.000 --> 00:15.000
Play more.

00:15.000 --> 00:18.000
Play more.

00:18.000 --> 00:21.000
Play more.

00:21.000 --> 00:25.000
I'm very happy to hear about it.

00:25.000 --> 00:26.000
Thank you.

00:26.000 --> 00:27.000
Welcome to my call.

00:27.000 --> 00:31.000
Does everyone hear me well?

00:31.000 --> 00:37.000
At always this question of what happens when you design and implement the entire stack?

00:37.000 --> 00:45.000
Because I have this obsession about operating systems from when I was really young.

00:45.000 --> 00:49.000
So I started building like operating systems like visual by basic.

00:49.000 --> 00:54.000
But no, I got a bit better at it and no, I built them in C++, I guess.

00:54.000 --> 00:57.000
So quick information about me.

00:57.000 --> 01:00.000
As I said, my name is Kenos.

01:00.000 --> 01:03.000
By day, I mostly work on browser engine.

01:03.000 --> 01:06.000
But by night, I like to act on the operating system.

01:06.000 --> 01:08.000
My website is SMNX.sh.

01:08.000 --> 01:13.000
But everything was in the QR code and I will show it again at the end of the slide.

01:13.000 --> 01:16.000
So what are we talking about today?

01:16.000 --> 01:22.000
We are going to talk about my OBE operating system called SKIFTSOS.

01:22.000 --> 01:25.000
It's a game to be this kind of general purpose.

01:25.000 --> 01:29.000
So desktop environment, operating system.

01:29.000 --> 01:37.000
And to build on my phone number, any feature, what I will mean, reach C++ framework.

01:37.000 --> 01:41.000
And obviously I hit POS 6 and I will fight against it.

01:41.000 --> 01:43.000
So what are the goals of this project?

01:43.000 --> 01:46.000
Mostly it's about having fun and learning.

01:46.000 --> 01:53.000
But maybe do a bit of research and try some new up.

01:53.000 --> 01:55.000
So what is the current state of the project?

01:55.000 --> 01:57.000
Is a mainly really only stage.

01:57.000 --> 02:02.000
Most components are mostly proof of concept, meaning that I've basically written

02:02.000 --> 02:06.000
like the 10% of the code that provide like the 30% of the features.

02:06.000 --> 02:11.000
It's a total around 100,000 line of code.

02:11.000 --> 02:15.000
And it features a full desktop.

02:15.000 --> 02:22.000
And so from now on, this talk will follow the good process of the operating system.

02:22.000 --> 02:30.000
And we'll stop at each stages and we will discuss what each of the components and what they do and what they work.

02:30.000 --> 02:36.000
So I have included the build stage in it because building an operating system is already kind of complicated.

02:36.000 --> 02:43.000
So I will talk about the end of from the platform framework to the operating system.

02:43.000 --> 02:48.000
Or we under that then in this system and finally what happened during the run time of the operating system.

02:48.000 --> 02:53.000
So during the build time we'll talk about the build system called cut kit.

02:53.000 --> 02:55.000
So what is cut kit?

02:55.000 --> 03:03.000
Is this kind of cargo inspired build system and package manager for C++?

03:03.000 --> 03:06.000
It's a brutally designed for C++ modules.

03:07.000 --> 03:10.000
And it will mean like it's battery included.

03:10.000 --> 03:14.000
Meaning it will support all the lifecycle of your software.

03:14.000 --> 03:20.000
Meaning it can do linting, fusing, profiling and obviously building your project.

03:20.000 --> 03:24.000
And what is the main idea between a kit is the kit component.

03:24.000 --> 03:29.000
A kit component is like a loose bag of code and data and a manifest.

03:29.000 --> 03:32.000
The describe some piece of the operating system.

03:32.000 --> 03:41.000
For example here I have a component called karmciss.skift which is the kift OS implementation of the.

03:41.000 --> 03:46.000
Karm system framework meaning it's the absorption over all the system APIs.

03:46.000 --> 03:50.000
And to describe this component we use these gis owners structures.

03:50.000 --> 03:55.000
So on the top we have like the name of the component what kind of component in it here it's library.

03:55.000 --> 04:01.000
And then we have like this tiny predicate that tell or this component will enable only if it's here.

04:01.000 --> 04:04.000
Only if it's in the system is skift.

04:04.000 --> 04:08.000
But as you can see so you can it's kind of a white list kind of thing.

04:08.000 --> 04:13.000
Then it will tell what is required. For example here it will require the silver and time.

04:13.000 --> 04:17.000
And if we remove any it will provide a karmciss.imple.

04:17.000 --> 04:19.000
So the implementation of karmciss.

04:19.000 --> 04:21.000
And we can have like multiple implementation.

04:21.000 --> 04:28.000
For example we can have like karmciss.possics that will abstract.possics under karmciss.

04:28.000 --> 04:40.000
Okay so since we started to see a come true kutik let's continue it's calm because calm is really at the bottom at the foundation of the whole operating system.

04:40.000 --> 04:57.000
So what is calm is it's try to be like this big general purpose of library kind of like a cute or like the dotnet framework meaning that it will try to support everything like from a basic data structures up to a full GUI applications.

04:57.000 --> 05:13.000
And and it's split mostly into into two parts the freestanding part of the library which which mean like it's this part of the library that doesn't require any operating system that can be shared amount all the other components.

05:13.000 --> 05:21.000
And mostly all state part that require the operating system mostly like for doing real libraries and you eyes and stuff.

05:21.000 --> 05:27.000
And it takes inspiration again from rust go and see sharp I see the question coming about first.

05:27.000 --> 05:36.000
Yeah. So and it's not written really in C++ it's written in C++ but it's really like this calm flavor C++.

05:36.000 --> 05:44.000
So you know the meme like C++ with C with classes me I prefer like see with lambda modules and coroutines.

05:44.000 --> 05:49.000
We don't use exception because since we want the framework to work at a really low level.

05:49.000 --> 05:57.000
Well, except for now not available so we use a we use a monadic error and the link with a result type and a trauma crop.

05:57.000 --> 06:02.000
And we make use of all the clank safety check we can use.

06:02.000 --> 06:10.000
For example, we use a clank lifetime bound to take that reference doesn't include the object that it's it's been owned for by.

06:10.000 --> 06:21.000
And we use a WV unsafe buffer usage that is kind like unsafe for C++ meaning you cannot use pointer or pointers anywhere in the operating system.

06:21.000 --> 06:26.000
It can only be done in like some kind of unsafe block kind of thing.

06:26.000 --> 06:32.000
And so this is what an yellow world in calm looks like so this is just a yellow world in use of space.

06:32.000 --> 06:35.000
So you can see we have like beautiful C++ modules.

06:35.000 --> 06:45.000
And another really nice specificity of calm is that it's fully async by default meaning that your entry point is a asynchronous task.

06:45.000 --> 06:52.000
And this asynchronous task take a two object that is a system context and a constellation token.

06:52.000 --> 07:03.000
This constellation token kind of work like six term in physics meaning that it will get three girls and try to console every downstream task.

07:03.000 --> 07:08.000
When, for example, the user ask the comment, you have killed this, I don't want it.

07:08.000 --> 07:12.000
It's it's spinning or it's bugging or something.

07:12.000 --> 07:23.000
And here I just like a basic yellow world application so it just does a UI run async and then we pass it just a UI label with a yellow world.

07:23.000 --> 07:28.000
And it's kind of a swift UI slash slash.

07:28.000 --> 07:34.000
Just not compose inspire your library we might see a bit more after.

07:34.000 --> 07:39.000
And obviously since we're in the macro corner of the room we might care more about RPC.

07:39.000 --> 07:43.000
For now we don't really use an idea language.

07:43.000 --> 07:49.000
We use these C++ structs where you just declare like your message.

07:49.000 --> 07:55.000
Then you in this message we have a type that represent the response and then we have the parameters.

07:55.000 --> 08:07.000
And we use the quite limited not for too long capabilities reflection of capabilities of C++ to try to generate code around this.

08:07.000 --> 08:12.000
And although we use this is that you just have to create an IPC client.

08:12.000 --> 08:16.000
Tell it to connect to some kind of IPC endpoint.

08:16.000 --> 08:21.000
For example here it's Trattachel which is or UI server.

08:21.000 --> 08:28.000
And then you can just call it using client.call async and all RPC are asynchronous.

08:28.000 --> 08:34.000
So it will just return some premise that can be awaited and then we can continue.

08:34.000 --> 08:40.000
And obviously no exception we use again this kind of weird macro call code try.

08:40.000 --> 08:46.000
That kind of it's a specialization for a corrupting that's not too much of a detail right now.

08:47.000 --> 08:50.000
So now we saw the base of the framework.

08:50.000 --> 08:52.000
Let's talk about the bootloader.

08:52.000 --> 08:56.000
So the bootloader is not really it's a simple RFI bootloader.

08:56.000 --> 08:59.000
And it usually will follow my slides.

08:59.000 --> 09:03.000
So it's a simple RFI bootloader in kind of work like a system reboot.

09:03.000 --> 09:12.000
Basically just chain load like a RFI executable or it can load a new RFI and then jump into it.

09:12.000 --> 09:15.000
Which will be your kernel.

09:15.000 --> 09:19.000
It has its own tiny boot protocol called N over and over.

09:19.000 --> 09:25.000
Which is basically just a memory map with some added attributes.

09:25.000 --> 09:27.000
For example you can have like a range of memory.

09:27.000 --> 09:34.000
And to this one of the memory that attach some metadata like this is a framework for and this is the size.

09:34.000 --> 09:36.000
But it's quite limited in this way.

09:36.000 --> 09:37.000
Oh yeah.

09:37.000 --> 09:44.000
And finally the bootloader use the exactly the same UI library as the rest of the opening system meaning that you get this.

09:44.000 --> 09:48.000
All this beautifully vector.

09:48.000 --> 09:52.000
Beautiful vector graphic with sopidsalontializate font and such.

09:52.000 --> 09:53.000
So it's really nice.

09:53.000 --> 09:54.000
Okay.

09:54.000 --> 09:55.000
So we saw the bootloader.

09:55.000 --> 10:00.000
So the bootloader will load a new component called the earth microphone.

10:00.000 --> 10:02.000
So what is the earth microphone?

10:02.000 --> 10:06.000
It's what some people might call a pragmatic microphone.

10:06.000 --> 10:10.000
Meaning that you don't strive for academic purity in it.

10:10.000 --> 10:13.000
It's quite small and simple.

10:13.000 --> 10:14.000
I think it's good for learning.

10:14.000 --> 10:16.000
I guess because it's pretty simple.

10:16.000 --> 10:17.000
And but it's implemented everything.

10:17.000 --> 10:19.000
A microphone should do.

10:19.000 --> 10:22.000
And it's a care of core kernel responsibilities.

10:22.000 --> 10:25.000
Which by this I mean IPC preemption memory management.

10:25.000 --> 10:27.000
And I occur dispatch.

10:27.000 --> 10:29.000
And at that we quite simple object model.

10:29.000 --> 10:31.000
I want to describe all of them.

10:31.000 --> 10:32.000
We'll be quite boring.

10:32.000 --> 10:33.000
I guess.

10:33.000 --> 10:35.000
And it's around 25 to school.

10:35.000 --> 10:38.000
Some people say it's better to have less or more.

10:38.000 --> 10:39.000
Okay.

10:40.000 --> 10:44.000
To get a bit more of the value for the code in the kernel.

10:44.000 --> 10:47.000
Let's look at the send.

10:47.000 --> 10:52.000
It's called meaning the Cisco that it's used to send an RPC message.

10:52.000 --> 10:58.000
And as you can see, it's written in a really idiomatic C++.

10:58.000 --> 11:03.000
And we use C++ to make this code quite safer.

11:03.000 --> 11:05.000
For example, here we have a buffer.

11:05.000 --> 11:07.000
That comes from user space.

11:07.000 --> 11:14.000
And every buffer and data that comes from user space is wrapped in this user slide type.

11:14.000 --> 11:16.000
And you cannot access this type.

11:16.000 --> 11:22.000
Up until you have like kind of difference differentiated it with the width function.

11:22.000 --> 11:25.000
And this width function takes another space.

11:25.000 --> 11:31.000
And at the bottom it takes everything you want to access.

11:31.000 --> 11:34.000
And with make sure that everything is map correctly.

11:34.000 --> 11:39.000
And that the user space cannot like move data around or do nasty stuff.

11:39.000 --> 11:41.000
You're used for memory.

11:41.000 --> 11:46.000
And then in the body of the function we see that each task is attached a domain.

11:46.000 --> 11:50.000
And this domain will try to get a channel based on the capabilities.

11:50.000 --> 11:58.000
And then we use this channel to send a message and some capabilities with it.

11:58.000 --> 12:04.000
So that's what everything for the Earth microconol.

12:04.000 --> 12:08.000
Now the next step is the Stratas service layer.

12:08.000 --> 12:11.000
So now we have the exit head of the kernel space and the level of itself.

12:11.000 --> 12:16.000
And now we try to enter the system level stuff.

12:16.000 --> 12:19.000
So Stratas is kind of a loose bag of services.

12:19.000 --> 12:24.000
And when we enter Stratas we enter through Stratas Siem.

12:24.000 --> 12:26.000
The Stratas component manager.

12:26.000 --> 12:32.000
The Stratas component manager is loaded by Earth or microconol as the force executable.

12:32.000 --> 12:38.000
And it will then directly delegate to a process called Strataiini, which is our init system.

12:38.000 --> 12:43.000
That will then read the bunch of manifest and spawn a bunch of services.

12:43.000 --> 12:45.000
But what are those services?

12:45.000 --> 12:48.000
So at the bottom we have Stratas component manager as we say.

12:48.000 --> 12:54.000
And then we have Stratas device that it's for now kind of a big service at all.

12:54.000 --> 12:58.000
All of our device driver.

12:58.000 --> 13:01.000
We might change that later, but right now it's like this.

13:01.000 --> 13:08.000
Then we have the Stratas file system, which all of our virtual file system and all we access it.

13:08.000 --> 13:13.000
Then we have Strataiini put that take your raw HID event from the Stratas device.

13:13.000 --> 13:18.000
And then time then we do something that the UI can better understand.

13:18.000 --> 13:21.000
It's kind of like I-bus kind of thing.

13:21.000 --> 13:25.000
And then we have Stratas file that is for user interface.

13:25.000 --> 13:29.000
But to discuss it, I prefer going into the next chapter.

13:29.000 --> 13:31.000
Then we have application on top.

13:31.000 --> 13:36.000
So the next chapter is about the ideal desktop environment.

13:36.000 --> 13:44.000
And what is ideal is this kind of general purpose like user interface.

13:44.000 --> 13:47.000
It's built on a custom display protocol.

13:47.000 --> 13:50.000
And like it's kind of like way learned, but way simpler.

13:50.000 --> 13:52.000
And it has what we call another tattoo UI.

13:52.000 --> 13:55.000
Meaning that this UI can scale from like a smartwatch.

13:55.000 --> 13:58.000
Up until like a full desktop environment.

13:58.000 --> 14:00.000
And it will and all the have will be the same.

14:00.000 --> 14:06.000
And they just like scale on based on what the device is capable of.

14:06.000 --> 14:14.000
As we say with the butler, it has the same vector based on the pixel at tiers and with the beautiful fonts.

14:14.000 --> 14:18.000
As the rest of the operating system.

14:18.000 --> 14:23.000
Okay, so that's what it for the general architecture of the operating system.

14:23.000 --> 14:25.000
Well, not all of it.

14:25.000 --> 14:33.000
Because all we will know is that operating system are just bootloader for browser engines.

14:33.000 --> 14:38.000
So, skip as it's own browser engine, that's called V.

14:38.000 --> 14:43.000
And V is not really part of the general project.

14:43.000 --> 14:49.000
It's kind of more like my daytime work that I've ported back to the operating system as a fun project.

14:49.000 --> 14:50.000
I guess.

14:50.000 --> 14:54.000
And it's like a full browser engine, meaning that it has like HTML and CSS.

14:54.000 --> 14:58.000
It can render like some web pages I would show them during the demo.

14:58.000 --> 15:01.000
We don't have Gs for now.

15:01.000 --> 15:03.000
And I think it's pretty fast.

15:03.000 --> 15:05.000
So the more time.

15:05.000 --> 15:19.000
So I will use obviously a cute kid to boot my operating system.

15:19.000 --> 15:23.000
We'll do a bunch of ninja invocation.

15:23.000 --> 15:25.000
And we have like.

15:25.000 --> 15:28.000
Yeah, I don't, don't look at the time.

15:28.000 --> 15:31.000
I didn't have the time to implement RCC.

15:32.000 --> 15:35.000
Okay, I can, I can just look at my display, I guess.

15:35.000 --> 15:38.000
I want to full screen it.

15:38.000 --> 15:41.000
No, it's not this.

15:41.000 --> 15:44.000
Okay, so it does like a normal UI.

15:44.000 --> 15:46.000
We will expect like a normal brain system.

15:46.000 --> 15:47.000
So I can unlock it.

15:47.000 --> 15:49.000
And let's show a bit of some application.

15:49.000 --> 15:54.000
So, first of all, we can look at, I don't know, like, we have like,

15:54.000 --> 15:57.000
a calculator stuff.

15:57.000 --> 15:59.000
It does math, obviously.

15:59.000 --> 16:02.000
But you can like switch in like into tablet mode.

16:02.000 --> 16:06.000
And then you just like add up to UI for the new form factor.

16:06.000 --> 16:08.000
And you can switch easily like this.

16:08.000 --> 16:10.000
And then I can close it.

16:10.000 --> 16:11.000
I don't think fancy here.

16:11.000 --> 16:14.000
Then we can look at the web browser.

16:14.000 --> 16:18.000
So I have a, I took some, some abstract of website.

16:18.000 --> 16:20.000
Because we don't have a network stack yet.

16:20.000 --> 16:23.000
But we can look at the homepage of the internet, I guess.

16:23.000 --> 16:28.000
I don't know, not this one, this one.

16:28.000 --> 16:31.000
Yes. And okay, I'll go back to Google.

16:31.000 --> 16:33.000
Because maybe it will be a bit more interesting.

16:33.000 --> 16:35.000
But maybe I know it doesn't work.

16:35.000 --> 16:36.000
Okay, I'm not precise.

16:36.000 --> 16:37.000
Okay, it's okay.

16:37.000 --> 16:39.000
But you can see that the browser is kind of capable.

16:39.000 --> 16:41.000
We don't have like the logo, things are not aligned.

16:41.000 --> 16:43.000
But it's quite nice.

16:43.000 --> 16:44.000
Okay.

16:44.000 --> 16:48.000
And so maybe I can show you another thing.

16:49.000 --> 16:51.000
And it crashed, I guess.

16:51.000 --> 16:52.000
Okay.

16:52.000 --> 16:54.000
Okay.

16:54.000 --> 16:56.000
Sorry about that.

17:00.000 --> 17:02.000
Okay, we're back.

17:02.000 --> 17:03.000
We're so back.

17:03.000 --> 17:05.000
Okay.

17:05.000 --> 17:06.000
Okay.

17:06.000 --> 17:10.000
And obviously, it can run doom, I guess.

17:10.000 --> 17:11.000
Yeah.

17:11.000 --> 17:15.000
Ah, in fact, you will go faster if I go into like tablet mode

17:15.000 --> 17:17.000
because it doesn't show the rest of the UI.

17:17.000 --> 17:20.000
Yes, because we don't have like a GPU acceleration,

17:20.000 --> 17:22.000
it will finish on the CPU as well.

17:22.000 --> 17:24.000
But I can play a bit of doom.

17:24.000 --> 17:28.000
I'm not sure if I'm good at it, so I should be good at it.

17:28.000 --> 17:31.000
Like all the old men here will be,

17:31.000 --> 17:33.000
will be screaming, I guess.

17:33.000 --> 17:37.000
I can kill bodies and some stuff.

17:37.000 --> 17:40.000
Yeah, it does the thing.

17:40.000 --> 17:42.000
You have like a audio.

17:42.000 --> 17:45.000
No, we don't have audio yet.

17:46.000 --> 17:49.000
Audio will be pretty funny.

17:49.000 --> 17:53.000
Well, to be fair, Cam does support audio.

17:53.000 --> 17:55.000
We have like basic audio stuff.

17:55.000 --> 17:57.000
But I didn't hook it up into,

17:57.000 --> 17:59.000
no, we don't do it there.

17:59.000 --> 18:01.000
I won't spoil people.

18:01.000 --> 18:02.000
Mm.

18:02.000 --> 18:03.000
Mm.

18:03.000 --> 18:04.000
Mm.

18:04.000 --> 18:05.000
No.

18:05.000 --> 18:07.000
I lost, I was playing.

18:07.000 --> 18:09.000
Okay.

18:09.000 --> 18:11.000
So we have like the frameworks,

18:11.000 --> 18:13.000
superty, meaning if I run it,

18:13.000 --> 18:15.000
if I run a Cam on Linux,

18:15.000 --> 18:17.000
I will get like audio and stuff.

18:17.000 --> 18:21.000
But in Schiff, I don't have like

18:21.000 --> 18:23.000
audio card or driver.

18:23.000 --> 18:25.000
Okay, then I'm done.

18:25.000 --> 18:26.000
My this.

18:26.000 --> 18:27.000
Okay.

18:27.000 --> 18:29.000
Those are things, those are things.

18:29.000 --> 18:31.000
No, it's not the SDL version.

18:31.000 --> 18:34.000
It's a port called Pure Doom,

18:34.000 --> 18:36.000
that it meant to be easily ported.

18:36.000 --> 18:39.000
We don't have like a for party software running,

18:40.000 --> 18:41.000
I said that the start of the call

18:41.000 --> 18:42.000
I will not support politics,

18:42.000 --> 18:44.000
at least directly.

18:44.000 --> 18:47.000
So it's a bit harder to support software.

18:47.000 --> 18:48.000
Okay.

18:48.000 --> 18:49.000
I will show you another demo,

18:49.000 --> 18:52.000
because I still use that everything can,

18:52.000 --> 18:54.000
can,

18:54.000 --> 18:56.000
it's based on the Cam.

18:56.000 --> 19:00.000
And Cam can be ported to any operating system.

19:00.000 --> 19:02.000
And do you know another operating system?

19:02.000 --> 19:05.000
It's called UFI.

19:05.000 --> 19:08.000
And let's say,

19:08.000 --> 19:10.000
it just sounds like,

19:10.000 --> 19:12.000
where it is.

19:12.000 --> 19:14.000
Hmm.

19:14.000 --> 19:15.000
I think I have some time,

19:15.000 --> 19:16.000
I can,

19:16.000 --> 19:17.000
I don't have to rush,

19:17.000 --> 19:18.000
but let's say,

19:18.000 --> 19:20.000
replace like the name of the bootloader,

19:20.000 --> 19:22.000
but another software called Ver,

19:22.000 --> 19:24.000
was a,

19:24.000 --> 19:27.000
browser.main.

19:27.000 --> 19:28.000
I guess it's,

19:28.000 --> 19:29.000
it's funny,

19:29.000 --> 19:31.000
let's say if it works.

19:31.000 --> 19:33.000
Hmm.

19:33.000 --> 19:34.000
I,

19:34.000 --> 19:35.000
I,

19:35.000 --> 19:37.000
I'm not in the right direction.

19:38.000 --> 19:42.000
It's right.

19:42.000 --> 19:44.000
I feel like,

19:44.000 --> 19:45.000
pre-built it,

19:45.000 --> 19:46.000
it's pretty fast.

19:46.000 --> 19:47.000
C++ module,

19:47.000 --> 19:48.000
baby, I guess.

19:48.000 --> 19:52.000
Sorry,

19:52.000 --> 19:53.000
what?

19:53.000 --> 19:54.000
I do,

19:54.000 --> 19:55.000
I did just before,

19:55.000 --> 19:56.000
so,

19:56.000 --> 19:58.000
okay.

19:58.000 --> 19:59.000
Yeah,

19:59.000 --> 20:00.000
it's,

20:00.000 --> 20:01.000
it's kind of ruined,

20:01.000 --> 20:02.000
the time you have to draw,

20:02.000 --> 20:04.000
okay, yes.

20:05.000 --> 20:07.000
Ah, okay,

20:07.000 --> 20:10.000
it's coming.

20:10.000 --> 20:11.000
Yeah,

20:11.000 --> 20:12.000
browser in the,

20:12.000 --> 20:13.000
in the Wi,

20:13.000 --> 20:16.000
and I think I will go back to my slides now.

20:16.000 --> 20:19.000
Okay,

20:19.000 --> 20:20.000
so,

20:20.000 --> 20:21.000
beyond.

20:21.000 --> 20:22.000
I kind of want,

20:22.000 --> 20:23.000
full,

20:23.000 --> 20:24.000
virtual support,

20:24.000 --> 20:25.000
because,

20:25.000 --> 20:26.000
since virtual has,

20:26.000 --> 20:27.000
like,

20:27.000 --> 20:28.000
every device class,

20:28.000 --> 20:29.000
it will mean that we can,

20:29.000 --> 20:31.000
like, build the rest of the,

20:31.000 --> 20:34.000
operating system without being,

20:34.000 --> 20:35.000
for,

20:35.000 --> 20:36.000
having,

20:36.000 --> 20:37.000
like, the first step is,

20:37.000 --> 20:38.000
like,

20:38.000 --> 20:39.000
porting the NVIDIA driver.

20:39.000 --> 20:40.000
So,

20:40.000 --> 20:41.000
we'll be simple,

20:41.000 --> 20:42.000
a networking,

20:42.000 --> 20:43.000
obviously,

20:43.000 --> 20:44.000
on the disk of file system,

20:44.000 --> 20:45.000
I've,

20:45.000 --> 20:46.000
like, my high on,

20:46.000 --> 20:47.000
like,

20:47.000 --> 20:48.000
GFS,

20:48.000 --> 20:49.000
because it's quite simple,

20:49.000 --> 20:50.000
and seems interesting,

20:50.000 --> 20:51.000
some server,

20:51.000 --> 20:52.000
I don't remember what to talk about this.

20:52.000 --> 20:53.000
Namespacing,

20:53.000 --> 20:54.000
because right now,

20:54.000 --> 20:55.000
everything is,

20:55.000 --> 20:56.000
like, in this one big,

20:56.000 --> 20:57.000
namespace,

20:57.000 --> 20:58.000
but I think it's just a,

20:58.000 --> 21:00.000
a,

21:00.000 --> 21:01.000
as a freelancier,

21:01.000 --> 21:02.000
such in the book,

21:02.000 --> 21:03.000
well,

21:03.000 --> 21:04.000
I, I I I thought,

21:04.000 --> 21:05.000
is it already,

21:05.000 --> 21:06.000
Well,

21:06.000 --> 21:08.000
it's actually like a real idea.

21:08.000 --> 21:09.000
Like, you know,

21:09.000 --> 21:12.000
you know,

21:12.000 --> 21:13.000
Like you need to pour on the people that try to rise,

21:13.000 --> 21:14.000
there,

21:14.000 --> 21:15.000
uh,

21:15.000 --> 21:16.000
there be used on the server,

21:16.000 --> 21:17.000
I think they will love it so,

21:17.000 --> 21:19.000
that's about it for my toll.

21:19.000 --> 21:21.000
So I have some special things.

21:21.000 --> 21:23.000
I just want to thanks Matilda,

21:23.000 --> 21:25.000
because it's my girlfriend and she

21:25.000 --> 21:27.000
sort of forced me to do this tool,

21:27.000 --> 21:28.000
but I kind of join,

21:28.000 --> 21:29.000
Andre,

21:29.000 --> 21:37.480
I also want to thank Lu here, which is my coworker and with her, I'm working on the

21:37.480 --> 21:43.080
browser engine and I want to thank Jordan because it worked a lot of cute kit and also

21:43.080 --> 21:48.600
all of the DVC Discord server and OSD Discord server because what's fun to show my stuff

21:48.600 --> 21:52.760
there and get their feedback and stuff. And obviously all of you for watching this talk.

21:52.760 --> 21:53.760
Thank you.

22:00.000 --> 22:04.000
Thank you.

22:09.000 --> 22:11.000
Mostly 36.

22:11.000 --> 22:12.000
Oh yes.

22:12.000 --> 22:14.000
Which architecture do it's fun?

22:14.000 --> 22:15.000
It's fun.

22:15.000 --> 22:16.000
Mostly on X86.

22:16.000 --> 22:19.000
I think you can just like boot kind of the operating system.

22:19.000 --> 22:22.000
You like reach 5, but not yet.

22:24.000 --> 22:26.000
And it doesn't run on real hardware.

22:26.000 --> 22:30.000
I don't see why it will not seem to use.

22:30.000 --> 22:34.000
We might not have like keyboard interface and mouse because we don't have a USB stack.

22:34.000 --> 22:38.000
And we rely on the PS2 fold back so they can do.

22:38.000 --> 22:41.000
So we will not have like a real hardware.

22:41.000 --> 22:43.000
Maybe you can have like the boot screen working.

22:43.000 --> 22:44.000
Okay.

22:44.000 --> 22:48.000
So I didn't like and get it on real hardware if I have PS2.

22:48.000 --> 22:49.000
Sorry.

22:49.000 --> 22:51.000
I didn't have PS2 in my hardware.

22:51.000 --> 22:55.000
So the question was if you have PS2 on your hardware, it will work.

22:55.000 --> 22:56.000
I think.

22:56.000 --> 22:58.000
Except on the mind over.

22:58.000 --> 22:59.000
Sure.

22:59.000 --> 23:01.000
Okay.

23:01.000 --> 23:05.000
You mentioned that the Windows server has custom protocol.

23:05.000 --> 23:06.000
Yes.

23:06.000 --> 23:09.000
Do clients sign rendering as it is used today?

23:09.000 --> 23:10.000
Yes.

23:10.000 --> 23:11.000
It's a fully client-sized render.

23:11.000 --> 23:15.000
As you can see, Doom doesn't have like the bar on top because I didn't had the time to

23:15.000 --> 23:18.000
think it down and leave some space right.

23:21.000 --> 23:22.000
Question?

23:22.000 --> 23:23.000
Yes.

23:23.000 --> 23:24.000
And that was the UFI.

23:24.000 --> 23:26.000
So the question was.

23:26.000 --> 23:28.000
Is this the UFI from before?

23:28.000 --> 23:29.000
Yes.

23:29.000 --> 23:32.000
It was using GOP to access the frame buffer.

23:34.000 --> 23:38.000
What security mechanisms does your microcode support?

23:38.000 --> 23:42.000
Do you have capabilities or anything like that?

23:42.000 --> 23:49.000
So the question was what are the security measures in the microconel?

23:49.000 --> 23:56.000
The only security is like whatever is guaranteed by having the processes isolated in different

23:56.000 --> 23:57.000
pitch tables.

23:57.000 --> 24:08.000
And the capabilities, we have like a handle table to everything that the each task can access.

24:08.000 --> 24:10.000
Each task has like a domain.

24:10.000 --> 24:13.000
They can like indexing to find pointers to other objects.

24:13.000 --> 24:15.000
It's pretty simple.

24:15.000 --> 24:21.000
And then a domain can be like there like they can kind of represent a tree.

24:21.000 --> 24:23.000
So you can index into the domain of another task.

24:23.000 --> 24:26.000
If you have a capabilities to the domain of this task.

24:26.000 --> 24:30.000
So this way you can like prepare the environment for another task and then spawn it.

24:30.000 --> 24:33.000
Which is pretty simple or text book stuff, I guess.

24:34.000 --> 24:36.000
Yes.

24:44.000 --> 24:45.000
Oh yes.

24:45.000 --> 24:46.000
Okay.

24:46.000 --> 24:48.000
So the question was those the UFI library will run on Linux.

24:48.000 --> 24:49.000
And yes it works.

24:49.000 --> 24:50.000
It works everywhere.

24:50.000 --> 24:53.000
Because I can like a suite quickly.

24:57.000 --> 25:00.000
I can since I have a Linux I will have internet.

25:00.000 --> 25:02.000
So I cannot show my website also.

25:03.000 --> 25:05.000
I did the P.

25:05.000 --> 25:08.000
I cannot type them to stress away.

25:08.000 --> 25:11.000
So I will just I.

25:11.000 --> 25:12.000
Okay.

25:12.000 --> 25:13.000
I like it.

25:13.000 --> 25:14.000
Okay.

25:14.000 --> 25:15.000
It doesn't work.

25:15.000 --> 25:16.000
I don't know.

25:16.000 --> 25:17.000
Okay.

25:17.000 --> 25:18.000
Okay.

25:18.000 --> 25:19.000
You see, it's just work on Linux.

25:19.000 --> 25:21.000
And yeah.

25:23.000 --> 25:24.000
Okay.

25:24.000 --> 25:30.000
The same question that I want to ask like what's the code you managed to state.

25:31.000 --> 25:32.000
Okay.

25:32.000 --> 25:35.000
So the question is how does a state management not work.

25:35.000 --> 25:39.000
So it's this like really hype and trendy way of doing it.

25:39.000 --> 25:40.000
So it's very easy.

25:40.000 --> 25:42.000
And then the place will be UI.

25:42.000 --> 25:43.000
Yes.

25:43.000 --> 25:46.000
It's mostly like a helm architecture.

25:46.000 --> 25:49.000
Which one are we like this funds in here.

25:49.000 --> 25:51.000
I don't want to show me it.

25:51.000 --> 25:52.000
Okay.

25:52.000 --> 25:53.000
Okay.

25:53.000 --> 25:55.000
The people.

25:55.000 --> 25:57.000
Does I have the.

25:57.000 --> 25:58.000
Contrary.

25:58.000 --> 25:59.000
Yes.

25:59.000 --> 26:02.000
I just wanted like you just implement like this a basic state system.

26:02.000 --> 26:04.000
And then you have like messages.

26:04.000 --> 26:08.000
And then you have like a reducer that applied the message under state at the right time.

26:08.000 --> 26:09.000
So it's pretty modern.

26:09.000 --> 26:13.000
Like it's so kind of inspired by a react and reduce kind of thing.

26:13.000 --> 26:16.000
And all the libraries in this same vein.

26:16.000 --> 26:35.000
So the question is.

26:35.000 --> 26:36.000
No idea.

26:36.000 --> 26:37.000
There's a send a question.

26:37.000 --> 26:38.000
So.

26:38.000 --> 26:39.000
Okay.

26:40.000 --> 26:49.000
Okay.

26:49.000 --> 26:50.000
Okay.

26:50.000 --> 26:51.000
Okay.

26:51.000 --> 26:52.000
Okay.

26:52.000 --> 26:54.000
The question correctly.

26:54.000 --> 26:57.000
Can you define your own component for the library?

26:57.000 --> 26:59.000
Oh, yes.

26:59.000 --> 27:00.000
It's just a class.

27:00.000 --> 27:01.000
You have to subclass.

27:01.000 --> 27:04.000
And then you can do this is for like low level stuff.

27:04.000 --> 27:08.000
And then you can like compose them together and ask them to build them together.

27:08.000 --> 27:14.000
So for for example, I've like this is like the simple counter application for your own

27:14.000 --> 27:15.000
The back.

27:15.000 --> 27:17.000
So we don't you might not see it well.

27:17.000 --> 27:18.000
So maybe.

27:18.000 --> 27:20.000
But it just like.

27:20.000 --> 27:23.000
I don't know to to describe it.

27:23.000 --> 27:26.000
But you can assemble stuff like you will do in react.

27:26.000 --> 27:31.000
And if you have to do like a low level like event routine or painting stuff, you can just

27:31.000 --> 27:33.000
subclass the UI node class.

27:33.000 --> 27:35.000
And you can do whatever you want in this.

27:35.000 --> 27:37.000
It's not like there is no.

27:38.000 --> 27:39.000
Second class first class.

27:39.000 --> 27:41.000
You got always in first class.

27:41.000 --> 27:44.000
So stuff.

27:52.000 --> 27:53.000
I mean, the same.

28:00.000 --> 28:02.000
We don't use a need.

28:02.000 --> 28:07.500
We don't use the ellipsi, well, we have like a basic ellipsi because the compiler requires it

28:07.500 --> 28:11.400
So it's just like some basic string function, but it's really simple

28:18.900 --> 28:25.400
Right now we well do use some kind of some of the classic APIs, but right now no

28:25.400 --> 28:31.580
But I think it will be kind of complicated, since everything is like using this C++

28:31.580 --> 28:37.100
Corrupting so you will need to find a way to translate like asynchronous code into synchronous one

28:37.100 --> 28:41.400
I don't see a blocker, but we didn't work on it yet

28:41.400 --> 29:00.700
I don't know my brain can only read the comics on a mess, so it's probably because of cool something I use

