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.