WEBVTT

00:00.000 --> 00:10.520
All right, we are just about to get started with our second speaker.

00:10.520 --> 00:17.160
Virgil Deville is going to present last week docs, open source collaborative documentation

00:17.160 --> 00:18.160
platform.

00:18.160 --> 00:18.880
So if you all give it a hand.

00:30.000 --> 00:42.200
That's, I still worked a lot on the kind of like the thing that I'm launching, that

00:42.200 --> 00:44.880
is supporting the presentation.

00:44.880 --> 00:49.680
So intro-duction to what is this?

00:49.680 --> 00:52.040
This is a last week docs.

00:52.040 --> 00:58.320
It's not taking up, that is being made by the French government, the German government,

00:58.400 --> 01:00.560
and the German government.

01:00.560 --> 01:03.440
It's MIT license.

01:03.440 --> 01:06.480
It works like this, you know, you create a document.

01:06.480 --> 01:14.640
You have a nice looking editor, which will probably remind you, notion, where you can type

01:14.640 --> 01:20.720
mark down and do a slash commands and add different types of blocks.

01:20.720 --> 01:25.360
It's quite useful to take notes together in real time.

01:25.360 --> 01:32.560
So if I put a QR code in here, you would be able to get in here and we would see

01:32.560 --> 01:34.360
your cursor.

01:34.360 --> 01:42.240
It's on the 12th of two great libraries, actually free, wage a yes for CRDT's, block

01:42.240 --> 01:50.480
Node.js for the nice looking editor, and prosignar for the low-level editor.

01:50.480 --> 01:56.160
It's neat that we have in the state to have a not taking up real time, that you don't have

01:56.160 --> 02:02.600
to do formatting, you can just type away, use shortcuts and not worry about how it's going

02:02.600 --> 02:03.600
to look.

02:03.600 --> 02:07.800
So here are the only formatting options or the ones that you see here.

02:07.800 --> 02:14.040
So bold, italic, a bunch of colors for text and background, and that's it.

02:14.040 --> 02:21.560
You don't choose the size of the font type and stuff like that.

02:21.560 --> 02:26.360
So I'm the product manager of this.

02:26.360 --> 02:31.440
It had a lot of success on the open source community.

02:31.440 --> 02:37.400
Someone posted it on the hacker news, and it got a lot of success, like, was on the front

02:37.400 --> 02:42.240
page for two days and that affected a lot of stars.

02:42.280 --> 02:47.120
I don't, I'm not sure why, because we are not doing something very complicated, it's just

02:47.120 --> 02:54.000
a jungle application with some permissions, and we are wrapping the two libraries I talked

02:54.000 --> 03:01.240
about before, but it became quite popular, because we made it easy to install, so a lot

03:01.240 --> 03:07.020
of people are installing it on their server, you can expect edge for nix, it's package

03:07.020 --> 03:13.900
for why you know hosts, and we are not doing that, it's the community, so thanks to them.

03:13.900 --> 03:22.540
And in the fan states, it has become a big part of how we do internal documentation and

03:22.540 --> 03:24.780
external documentation.

03:24.780 --> 03:33.780
So for example, for this tool, we do a user FAQ for the public agents who use this tool,

03:33.780 --> 03:41.100
and you'll find this, you can navigate inside the different pages, you can add media's,

03:41.100 --> 03:48.460
so it's practical to do end user documentation, and you have a little search engine for

03:48.460 --> 03:59.500
all the set pages that are inside, and it's, oh yeah, I mean French, so for example,

03:59.500 --> 04:05.380
if I go here, I can look at how to handle sub document and stuff like that, and it's very easy

04:05.380 --> 04:13.300
to use, you don't need any technical requirements to do that, and it's kind of the subject

04:13.300 --> 04:20.540
of the talk, so I'm a project manager, the developer, I used to work with it, told me like

04:20.540 --> 04:28.700
you're a minimal stack developer, I don't know how to do anything, apart HTML and CSS, and I understand

04:28.780 --> 04:35.700
the bit of git, but for me, I would contribute to open source by doing documentation, stuff

04:35.700 --> 04:40.380
like that, but it was always horrible because every time I would contribute, I would have

04:40.380 --> 04:48.380
to remember how to handle git workflow, and this was terrible, especially for this project

04:48.380 --> 04:58.260
that I'm showing you now, because the team uses the contribution requirements, got me really

04:58.340 --> 05:07.020
confused, like, they use git modules, you have to put an emoji, the size of the commit

05:07.020 --> 05:12.620
message has to be 80 characters long, if you don't have, if you put a space, if you don't

05:12.620 --> 05:18.620
put a space between here and here, the CI breaks, so for me, it was terrible, I had to learn

05:18.620 --> 05:31.700
to be based, stuff I never done before, and it was fun to learn to be based, but I'm

05:31.700 --> 05:38.420
still not going to become developer that does this for a long time, and I started to do

05:38.420 --> 05:47.420
all my documentation on last week's docs, and the purpose of the talk, if I find it again,

05:47.420 --> 05:59.700
here, yes, it's to say that maybe this is a good tool for documentation, maybe not

05:59.700 --> 06:06.020
all documentation, I mean, like technical documentation, we do it inside the GitHub repo,

06:06.020 --> 06:12.260
you use mcadorx, whatever, but you don't do technical documentation every day, like

06:12.260 --> 06:18.900
you, and it makes sense that it's stable and doesn't evolve too much, but for end

06:18.900 --> 06:24.740
user documentation or documentation that needs to evolve a lot, it's nice to have flexible

06:24.740 --> 06:30.900
tools that you can give to mortals, where you invite with an email address, they arrive

06:30.900 --> 06:35.780
on an editor, they have permission access, they can read right, they can create their own

06:35.780 --> 06:45.500
sub documents, and this is basically I think what is docs, so I classified kind of the documentation

06:45.500 --> 06:51.100
to column, the technical ones, and the one that's not really technical, you might have

06:51.100 --> 06:57.140
a video, you might have even embedded PDFs and stuff like that, and especially you might

06:57.140 --> 07:05.740
want to localize it in different languages, and this is what I wanted, I actually

07:05.740 --> 07:10.740
worked on before my talk, and I thought I would have time to prepare the better presentation,

07:10.740 --> 07:21.420
but I put my energy in the last week in launching this thing, which is just a docs application

07:21.420 --> 07:28.420
that is focused on translating the end user documentation, what you've seen before the FAQ,

07:28.420 --> 07:34.220
I do it in my everyday job, specialized for the French government instance, but I noticed

07:34.220 --> 07:38.900
that a lot of people are installing, there is no end user documentation, and I will not

07:38.900 --> 07:45.460
do end user documentation in GitHub, because I do it every day, and I need to do it fast,

07:45.460 --> 07:51.460
so I know this instance, and I thought, okay, maybe we can do this collaborative documentation

07:51.460 --> 08:03.980
how much time did I have left, and I tried to come up with a process, and I started

08:03.980 --> 08:09.620
to get a few contributions, so basically it's a docs instance, I documented the process

08:09.620 --> 08:17.940
in here, I brought the documentation in French with true everything that was French, specialized

08:17.940 --> 08:23.060
instance, and I want to try this process with a few members of the community who ask to

08:23.060 --> 08:30.420
have a place to translate the documentation, so this is what the process describes, and basically

08:30.420 --> 08:39.980
how I'm hoping it will work, is that each language will have its own page, on each page,

08:39.980 --> 08:47.340
I'm going to be able to invite an editor, and I will be the administrator of each pages,

08:47.340 --> 08:55.340
because I'm doing the main documentation, and this is the story of this guy, it's quite interesting,

08:55.340 --> 09:02.580
this is Alexei, so he has all the, I have a little change log, so on the first page, you see

09:02.580 --> 09:07.780
the last date of the documentation, you have the core section of the documentation, and then

09:07.780 --> 09:12.780
if you go inside each thing, you will see the content that you need to translate, so if I go

09:12.780 --> 09:18.020
here, now for now it's a lot of it, it's still in English, it's still in French, but this one

09:18.020 --> 09:25.020
is actually translated, and I gave this to Alexei, and what Alexei is doing, he is a guy

09:25.100 --> 09:33.060
from Ukraine, he is actually our most active translator in the docs community, if we go

09:33.060 --> 09:40.380
on the, we use code in for translations, if we go on the code in page, you will see, so

09:40.380 --> 09:48.060
this guy is doing translation to speak better French, basically, and you can't get a whole

09:48.140 --> 09:54.140
of it on the video conference, because using Ukraine and internet connection is very bad, so

09:54.140 --> 10:00.620
we only chat, and if you look at the two most translated languages on code in, you have Ukraine

10:00.620 --> 10:08.780
and full green, and you have Russian full green, so bigger plus to this Alexei guy, and I

10:08.780 --> 10:16.700
say, okay, you want to help with the Ukraine translation, so here we have in study the, translating

10:16.780 --> 10:26.060
what seems to be docs in Ukraine, I did all the languages that we have in Kradin, and the plan

10:26.060 --> 10:33.900
is to invite progressively the contributors inside the community who wants to translate this

10:33.900 --> 10:39.500
documentation based on the main version, which is English, and then look for updates and translate

10:39.500 --> 10:46.300
the rest, so I've started with my friend Alexei, I have Stefan who might be somewhere here,

10:46.380 --> 10:53.260
but from Netherlands, who will be doing the Netherlands, and of course, I think people will use AI

10:53.260 --> 11:01.580
for this, so in docs we have our own LLM gateway to do this, so for example if I go to English

11:03.740 --> 11:12.460
and we go to a page that is not translated, so for example format document, and we take this text,

11:13.340 --> 11:20.940
it's actually sending a request for translation here to our own LLM gateway in the state,

11:22.060 --> 11:28.140
and it should come back with the translation English, so now translation of text is fairly

11:28.140 --> 11:34.540
easy, it's quite well done, so you just need to review, and I'm hoping that providing a tool where

11:34.540 --> 11:40.380
you can natively do the translation with the AI, people will actually help me with the difficult part,

11:40.460 --> 11:46.940
which is this, you know, like doing the screenshots in each language is a huge hassle when you're

11:46.940 --> 11:53.020
doing user documentation, so I'm hoping by providing a flexible tool where people don't have to

11:53.020 --> 11:59.100
have the hassle of a git workflow, actually care about interfaces because they are end users,

11:59.100 --> 12:05.100
and don't spend too much time manually translating because they have AI, I'm hoping that they will

12:05.660 --> 12:12.700
redo all the screenshots, redo all the screenshots and this way we can all have a shared document

12:12.700 --> 12:23.580
portal that we can put inside of our product, and so I'm recruiting of course, if you happen to be

12:24.540 --> 12:38.460
someone that wants to translate, please go to checkout docs.plar-sweet.eu, and we have a dedicated

12:38.460 --> 12:45.820
matrix channel inside the, so we use matrix for for community communications, there is a

12:45.820 --> 12:50.780
general channel, I just created kind of like a sub channel for translation, and I'm hoping to

12:50.780 --> 12:58.220
coordinate over there, so I have sushi, I have someone for Ukrainian, but all the languages, I think it's

12:58.940 --> 13:05.900
15 languages, still need some people to, to, to, to fill the job, so we'll have administrator of

13:05.900 --> 13:12.540
languages and then editance, and I guess the last thing, yes, I want to say, is that we've been

13:12.540 --> 13:21.500
seeing a lot of people using docs as a adolescent MS, so writing the content collaboratively

13:21.500 --> 13:29.020
reviewing everything, it's nice to have real time, so I don't know if Arno you can go on this document,

13:29.020 --> 13:40.380
so you can show that it works real time, I'm going to send you the, the document, here, here,

13:40.380 --> 13:54.620
and I'm coming back here, and oh shit, I lost it, but these guys, they are using docs as a, as

13:54.620 --> 14:01.260
a adolescent MS, we have an API that is exposing the documents, the public documents, and the

14:01.260 --> 14:09.100
public sub documents, and you can just scrap the marked on and recreate your own documentation

14:09.180 --> 14:16.780
website, pulling contents that's lively edited in real time by people on docs, because this is

14:16.780 --> 14:26.380
what it's made for, if you don't want to use docs as the end user website of your documentation

14:27.420 --> 14:33.980
and maybe we can see Arno, is it you Arno, yes, okay, so this is what's nice with,

14:34.140 --> 14:39.740
wager yes, blocknot, website kit, and everything is that, conflict resolution in real time,

14:40.780 --> 14:49.500
we can work together on this, and this is pretty cool, and I guess I'm done, maybe you have some

14:49.500 --> 14:51.500
questions, but thank you for listening.

14:52.460 --> 15:01.100
Yes.

15:01.100 --> 15:05.100
Yes.

15:05.100 --> 15:13.860
How do you, how do you, how do you, how do you, so push and explore the documents in the

15:14.020 --> 15:16.020
document?

15:16.020 --> 15:24.420
So the question was how do we have users, handle conflicts and handle GitHub, the idea is that

15:24.420 --> 15:31.620
you use docs, so you don't have GitHub in the mix, is because we have CRDTs, and we have

15:31.620 --> 15:37.300
wager, we have people writing on the same document at the same time, and the conflict resolution

15:37.380 --> 15:51.380
is done for them, never, and you can use this to, as content for Annoza website, yes?

15:51.700 --> 16:00.900
My question is, as well, and explore the documentation, if it's supposed to, for some reason,

16:00.900 --> 16:08.340
for any reason, someone that's in the government, that is to be asked, but probably that, for instance,

16:08.340 --> 16:15.060
with our Mac, our editors, you can do a lot of things, but when you come to the

16:15.220 --> 16:20.100
transform, and unfortunately we do that, you may have blisters, pictures, which are split,

16:20.100 --> 16:27.780
which we do page and so on, so the question is, is it supposed to have an export feature or not,

16:27.780 --> 16:33.140
and yes, how is it kind of, there's a structure, you know, trouble?

16:33.140 --> 16:40.420
Yes, so this is the nice thing about, so, blocknote is not marked on per se, you can convert

16:40.500 --> 16:45.700
blocknote content to mark them, but there are content that is more complicated than marked

16:45.700 --> 16:52.580
on the inside, but we, as it is needed for public agents to export their document in OTT, in

16:52.580 --> 17:00.740
DocX, in PDF, so we have a client-side exporter, and you can choose your format, and it's not perfect yet,

17:00.740 --> 17:06.420
for example, tables, I think images, we are starting to do okay, we've done a bunch of fixes,

17:06.500 --> 17:14.100
tables is stuff, we do import, we are doing export as well, import is done back-and-side,

17:14.660 --> 17:20.420
but we want to do a good job at document portability, because it's very important to our users

17:20.420 --> 17:29.700
to be able to navigate around, not everyone wants to use DocX. Yes, but, you know, if we, this

17:29.780 --> 17:40.900
document is not too hard, if we export this, it should be okay, yeah, because I think there are a bunch

17:40.900 --> 17:51.860
of blocks below, yeah, the void blocks, void blocks, yeah, but they use a lot of microsoft in the state,

17:51.860 --> 18:11.460
yes, yes, yes, I do, I do, I do not think so yet, no, I don't feel so, yeah, is there an API for

18:11.460 --> 18:19.860
import and export, I don't think so, but there could be, and one question here, and I will

18:19.940 --> 18:48.580
go ahead, how does it handle users? Yes, yes, yes, so it uses, or I see, the user base is external,

18:48.740 --> 18:55.860
here it's kick-look, so I invite with the user, you come register, and if your instance is open,

18:55.860 --> 19:00.740
if you invite someone that's not already there, you will receive an invitation email, here it's close,

19:00.740 --> 19:07.540
so it won't work like this, and you can put anything, like you could put Sentinel or whatever,

19:07.700 --> 19:24.580
or open now, and here, yes, so here what I mentioned is that in the front states,

19:24.580 --> 19:35.620
there is a team that does an API for LLMs that we use, the model behind this is a mistrial

19:35.700 --> 19:44.820
lab, if I'm not mistaken, we we have many models installed, the formatting structure below is

19:44.820 --> 19:50.820
Jason, so it's a bit complex, we've noticed that small models don't work really well, if you want

19:50.820 --> 20:01.380
the, if you do an API asking there, so for example, if I say what is a recipe for a Belgian

20:01.460 --> 20:15.940
waffle, it should come back with some formatting, here, five minutes left, yes, so we've seen

20:15.940 --> 20:23.300
that you need a bigger model, small models don't work really well to provide an answer with good

20:23.380 --> 20:37.380
formatting, yes, yes, yes, it's an environment environment viable, if you don't put an API key,

20:37.380 --> 20:43.860
you won't see it's in the front end, so the question was can you disable the feature, yes,

20:44.260 --> 21:02.100
I mean, in the front states, we don't have a forge for all publications yet, and in our department,

21:02.100 --> 21:08.660
the one that everyone uses is GitHub, I'm hoping we can have something like the Germans have,

21:08.740 --> 21:15.380
they have a forge that is called opencode.de, where it's a federal forge, every public agent can

21:16.260 --> 21:23.380
push their code there, I think it even has everything, the CI and stuff, and now they even

21:23.380 --> 21:29.620
added an extension, so you can build your images securely there, I would love to have something like that,

21:29.700 --> 21:46.260
but for now, we use GitHub, and one last question maybe, yes, so how we do this is a bit

21:46.260 --> 21:55.300
dumb, so we snap shots every minute, the documents, when they're so you're right, if you're

21:55.380 --> 22:02.420
unactive for one minute, we snap shots, and this is as free, we start the document in an object

22:02.420 --> 22:10.740
storage, and it's using the versioning of the object storage, so you can restore it with a click,

22:11.460 --> 22:16.500
it would be better if we do something more intelligent, but we are in the process of it.

22:16.740 --> 22:25.940
So it's a backup, the JSON, and I actually, yes, the document is called the white doc,

22:25.940 --> 22:33.460
if you're familiar with white gs, that's what we start, and we start the media as anchors inside the

22:33.460 --> 22:41.620
documents, and I think we are done, thank you.

