 Welcome to the lightning room talks, lightning talks room. So please welcome Ludovic Dubost. I was going to talk to you about CripPad. So hello, everybody. So this is a talk about CripPad. Actually, it's more a demo than a talk. The idea is to show the product. So I'm very glad that there was a talk about real-time editing before. I won't talk too much about real-time editing here. We basically built a real-time editing module a few years ago. And we realized that we could encrypt data using that real-time editing module. And we decided to build a product that would encrypt all the data. So I'm a CEO of X-Wiki SIS. It's an open source company, 40 people. And we're working mainly on the X-Wiki open source software, which is a collaboration software. It's a company owned by its employees. We've been doing exclusively open source. The CripPad project is a project that was launched as part of a research project, namely on real-time editing. And we realized we could encrypt. And so we decided to focus on encrypted real-time collaboration. Currently, the CripPad project is three full-time engineer inside the X-Wiki SIS company and contributors outside. So why CripPad? So this is a Google search of, we value your privacy. And actually, now when I read, we value your privacy, I say, I think, not really. And when I think about the phrase, we value your privacy, is value. Yeah, actually, our privacy is worth a lot because that's what's actually happening. We're getting our privacy being sold. And so it's very indeed valuable. But we cannot trust today when we see a website that tells us that they value our privacy because there's so many examples that it actually didn't happen. And so when we think about it, we don't want to be people that say that we value your privacy. We want to be people that actually find a way to prove it or to guarantee it to you. And so we thought, can we actually enforce users' privacy using encryption instead of just saying we do? And so we're trying to build that CripPad alternative collaboration tools to Google Drive Dropbox or many other collaboration tool guided by this privacy principle. And so I'll go now to the demo. So how does CripPad actually work? And how can you use CripPad to work and while having your data protected? So actually, if you go to CripPad.fr or to any CripPad instance, here I'm on a local instance on my computer. Didn't really trust the network that things would work well enough. So I have a local CripPad instance. Actually, you can install it in a couple of minutes. It's a Node.js application. And even not logged in, I can start working on encrypted documents. So if I click here, I create an encrypted document based on CK Editor here. And what happened here is that the channel was created to our server with a channel ID and an encryption key. The encryption key never leaves the computer. It's actually in this URL here after the dash. And what is after the dash is never sent to the server. It stays on your computer in the HTTP protocol. And so here, we have an encryption key which encrypts everything that is being sent to the server. Here, I can type. So I can type anything I want. I can actually take this URL, give it to somebody else. Security, if I give this URL out, I give the access to my content so there is some danger here. And the other person can also type. I can see what the other person is doing. And so I have real-time editing. It's working similarly to what we've seen just before for YGS. Data is being sent to the server. The server is dumb about the collaboration aspect. It's just storing the data that is encrypted. And the other user is retrieving the data and then doing the synchronization magic to make sure that if there's concurrent editing, it works. The next thing I can do is that since I received this pad here on a session where I'm actually logged in, I created an account on that session, I can actually store that pad in my drive. So I say store here and say hello. And what happens here is that I have a second real-time collaboration session with my drive content. And it's basically a session with a JSON document which represents the list of pads that I have in my drive. So if I go to this drive now, I can actually see this document hello that showed up. It happened in real-time. So I made the change. I changed the name of the pad in one browser window and the drive received that change and updated the name of the pad. And here I have a drive. I have folders there. I can actually create new folders. Test. I can move things around in my drive. And this all happens in real-time if I have another session on the same drive, I will see the changes right away. The next thing that happens is that I want to show in my demo is that I can subscribe here. I say sign up and I will create an account. Fuzz them for and I won't tell you my password. What's important on Crip Pad here is that neither the username, neither the password will ever leave my computer at no moment. And this is actually something crazy when we think about we're sending our username and passwords to everybody. Like every website we're registering on, we're giving our username and password. And on Crip Pad, we actually found ways to have you do things and have an account without ever doing that. So what happens here is that a key is created and my account is actually the set of data that corresponds to that key on the server and I have an account. So at this point here, now I have an account. And what's interesting is that my user here knows I have an account. I'm Fuzz them for now. I can click and I can say now we're friends. And actually I received a notification. I want to be friend with you except all this happens through encryption. So there was a message sent to the mailbox of the user using the public key of the user. It was sent to the mailbox of the other person. The mailbox was retrieved in real time and I got informed on the other side that I got an invitation. I accept the invitation and now we're connected. What's interesting is that when I'm connected, so what can happen here is that I can create a Kanban. So let me take a Kanban here. This is another type of pad that we have. So we have about 10 types of pads. We have 10 different types of pads in Crip pad because the real time engine we have actually works with kind of almost any module. And this Kanban here which is real time too so I can make changes to the Kanban. I can actually now share it. And so I say share. And so instead of giving the link to the other person and relying on another channel to transmit the information of the pad to the other user, I can actually do it securely. And here, oops, I say let me share this pad with FOSDM4. And FOSDM4 here receives the notification. And here we have transmitted the key of the pad securely between the two users and now we have a real time pad which we can play with. Okay, I can change the color here. And we have the pad working out. We have also a chat. So next to this we can chat. Okay, so we have a few things like that. We can have more pads. So we have a whiteboard. We have code pads with lots of features. And we have a sheet. So we can also actually work with sheet. Before going slightly more, showing more of what we do with office documents. So it's a bit hard with a user interface here. We, what we did is, oops, if I find the Cripp Pad demo here. We have had the chance to receive a funding from NLNet and for which we build the Cripp Pad Teams feature. So I wanted to thank NLNet for that funding first and show what that Teams feature here is here. And so the Teams feature is that I can go to Teams and here I can create a team. I already created the team. And a team has its own drive in its own chat and we can invite people in that team. So here, for example, I can invite FOSDM4. There is also a process in Teams to invite somebody that has no account initially. So we're making a one-time link for him and he can then come and accept the invitation. And here, now I received a notification here to be invited to FOSDM team. And now I'm invited to the team. I can open the team. And here I can see that I'm a read-only user of the team drive. But actually I can upgrade here the credentials and my drive became an editable drive. It actually also works the other way. And any changes in these drives, everybody has them because it's a team drive. To finish the demo, the last part of the demo I want to show is some things around Excel and future things that we're building. So the first thing is cheats. Here I have a cheat, which actually I will start here. I will use this one. And we have integrated only-office JavaScript code inside CripPad. Only-office is the only tool that exists today that supports a large set of all-the-office formats, all in JavaScript, so without relying on anything on the server. And having this in JavaScript allowed us to build it inside CripPad and connect it to our encryption engine. And we have also, so we have an Excel sheet here with graphs, for example. So if I say this, I have my graph. This is also connected to real-time. So if I have this sheet on another tab, I can also see the changes in real-time. And since last week, we also support importing and exporting Excel files. So here I can take a file here. Actually, that's good. Being cool. So I take an Excel file. I need to close the other one. So that's the complexity of the demo. So we need to be alone in the session to do an import. And so this is actually working in WebAssembly because in only-office, the import-export code was actually C code. The conversion tool was in C. And we did work where we ported the whole thing to WebAssembly so that we have a conversion tool in WebAssembly. So here, so this is not yet working in Firefox for a technical reason. But normally, starting mid-February, in the next version of Firefox, it should work because Firefox will have finished its implementation of shared buffers in WebAssembly. So here, I have my my pad. And I have my graph with script pad. And my Excel file that was loaded. I can also export it in Excel. And this is demo effect. Oh, it worked. This was another one. So here, we have my file exported to Excel and open in Excel. To finish, this is a prototype yet because as part of the same work, we also supported adding images inside Office pad, inside Excel. And this is actually a script pad. OK, let me reload just to have it. So this is also a script pad, which is working with a PowerPoint document, so a slide share, a slide tool, which is not yet currently supported in script pad, but is something we work on. So we plan to release this this year. And we needed support of images here. And actually, the support of images is that actually I can here ask for an image. It will go to my script drive to get the image. So I get the images from my script drive that I can add in my only Office presentation documents. And same thing here. Well, I cannot do it with Firefox here. But we also have PowerPoint export that also works in this specific case. And the latest thing I'm going to show is that we're also working on mobile application. And this is a prototype of a mobile application that would be similar to Google Photos. So you have your photos on your mobile phone and you're automatically uploading them to your script pad instance. And so here I can see my this are actually the images I have inside my script drive and that contains my photos. Actually, it didn't work in the demo. But if people want to see it, I can show it to them. So thank you. I think we are out of time, unfortunately. If you have questions and want to see more, I will be very happy to show it outside. Thank you very much.