 Let's start so online. I call it so it's LibreOffice online It'll so collaborate online collaborate us a lot of the work to avoid any ambiguity. I call it online There you go. Excellent What do we do? We do document spreadsheets and slides. We do collaborative editing and viewing of all sorts of things tablets and mobiles included as well and we're starting actually to use this code for Running on your mobile phone and delivering the same mobile experience We can import lots of crazy filters and things so instead of downloading your PDF and seeing it in your browser Which works really well? You can render it on your server which seems like a complete nonsense and then get images into your browser But there's some cool things we can do with that like tiling it making impossible to copy and paste You know restricting who can do things sounds kind of evil doesn't it an open conference? But anyway people want this and we can do Vizio stuff You know if all those people who weep because Vizio has been removed from them You know and I've met people close to tears because they're that low in the rung You can't afford like eight hundred dollars a year for Vizio or something. Um, we can help which is good Look at that in the browser Keynote numbers pages although these formats change randomly and are undocumented and we now only support older versions And you can put this on-premise and we integrate with anyone that wants to be integrated with so if you would like to integrate with us I had a talk earlier on how to do that, but this is quite similar see me at the end We'd love to integrate, but next to our own cloud party OC file lots of other things our fresco integrations are various places and Our architecture the way we designed it is a bet on CPUs getting cheaper and more thready and network getting More powerful so far over my career. This has been a good bet. Let's see if it continues So because we use LibreOffice, we have this very high fidelity whizzy wig editing Whizzy wig is thrown out of the window by a number of well if you look at Microsoft Office online, for example It's not a whizzy wig editor. You doesn't lay out your pages The viewing does because it uses words on the server to render your page But the editing doesn't you don't know where your footnotes are your end notes your columns You can't see where they are your page breaks are little lines and the thing And so you can't position items on the page that they basically threw away whizzy wig And that's maybe a reasonable choice. The wiki did the same thing But it's a shame to go back 20 years if you don't need to I let me just show you a little bit about that So here we have it and you know, I can type rabidly into it. That's always good Typing shouldn't be done in public, but I got it exactly right that string. So that's that's okay So so here we have a whole lot of things we can we can select text and delete it We can undo it we can do radical things like change tracking which again It's not available in word online like redlining not spare in Microsoft word online interesting We can comment and we can you know remove changes and accept them and reply to things and so on and That's why I didn't think we have any integrations that go to page. So even though that dialogue existed So what else we can do all sorts of cool stuff. So like we can format we can do rich rich control of documents and format them You know in crazy ways. So there's all sorts of ridiculous options that we can be setting and the typically aren't there in in office Productivity suites. I don't know what people think of Asian typography options and so on and actually we're quite good at this Because we're reusing the same rendering Even nasty RTL Arabic mixed Hebrew is Israeli stuff works and renders nicely I say it's pretty cool There are a number of things you can't see here But so scrolling works reasonably well because we're just flipping tiles in the client. There's no re-rendering going on here at the back end Let me just show you how the rendering works So if I press D in here I get into debugging mode and as I type you can see the tiles that are being re-rendered So those are those are ping tiles and actually I can't type very well So you can press a button and it'll type for you, which is pretty nice And it's very classically educated so it writes Latin, you know, so that's all very good, too But you can see here how it's invalidating some tiles and these guys that actually you don't need a new tile It's the same same content and and so this works pretty nicely Sadly, this is local But we're using you know Amazon data centers on the other side of the world and it works reasonably well I mean you can collaborate with you know lots of different people, of course Which is which is quite fun and this you know if more people turn up you get a drop-down and avatars and fun like that I think that's the quick demo. Let me see Yeah, and so we have all of the interoperability support of Libra office when a bug is fixed in Libra office when new features come in It's it's really easy to we get all of that goodness and hopefully make it pretty Using it is really really simple Who has got a content management system or something has documents who may does webby things like that any next-found iters They clients here you go any things perfect So you have some way to authenticate your end user in the browser, right? You have some kind of token to JWT token or something anyway There's some way that this browser and this server agree that they're trusted well, what you do is you pass this token down a web socket or another token if you're paranoid and That what inside your iframe? You simply talk to our server and this server goes and backs talk talk to your other server using that token And it has the world's most complicated API so it's a loaded document. We do a get to save a document We do a put and that's pretty much the limit or they there is a Check file info that says tell me about this guy, you know, what's his real name? What's the file name? What's the timestamp on it? Can can you give me more data? I'm the the kind of makes this experience more rich, but it's really easy You can do this in a day if you're awesome a week if you're slightly less awesome But you know and a month if you're I don't know where the least if you have to learn programming first It's probably gonna take you about a month. So anyway, do do do have a go and integrate it I don't know why I've got this here But basically we have a web server that's written in C++ We capture Libre offices and trap them in CH root jails, which is actually quite secure interestingly So people get very worried about security and so they should so we we trap our Libre offices So see we breed Libre offices in the background But we do it very efficiently our parents do all of the hard work And then the children inherit all of that stuff. It's you know, it's wonderful, isn't it? I know this this happens a lot in the world and So each instance already bootstrapped its configuration is read. It's it's understood life With a real vengeance and so you can start these things very very quickly It takes about 50 megabytes per document something like that in terms of memory After you've done that and then they live in very small CH roots with nothing in them except their own document And maybe some fonts no shell no binaries We put second BPF around that we have amazing crash testing stuff to try and stop anything escaping and so It's pretty cool Even if you don't need a collaborative editing office So you probably need thumbnails of your documents and so we have a very nice rest interface that reuses all of this We're just converting documents so you can do this curl command and pass your test file in post it out there say I want a PDF and Bang out it comes you redirect it and there's your PDF Beautiful and it's all managed and life cycle handled and if it if it fails and it's a horrendous thing it times out after 20 seconds And you know you can't screw it up. It just runs which is nice One of the things we like is a full featured office suite I've been a bit mean about my competition who who are lovely people honestly and I I know a number of people at Microsoft who are just a pleasure really a really a pleasure in fact Miguel is here somewhere who is a hero look there They're a great company. So but it's quite easy to have this bullet checking Approach to features say for example Microsoft online a spreadsheet supports borders in in cells Which is great problem is if you want a thick border on the left, but not the right Like there is no option for a thick border on the right So presumably you can do a thick outside border and then remove the borders on the adjacent cells So that it you then have the thick border you want it, right? But that's I got 15 minutes left. I only did five minutes so far. I'm nearly finished really I'll slow down I'm sorry. It seemed like a very short time 20 minutes Lots of questions. I hope you're you know write them down So so we in contrast provides, you know, just an amazing slew of functionality You know diagonal borders try and find an office suite online that supports diagonal borders You'll you'll have a I don't know what they're for actually to be honest But either way they're there in the file format, you know, there are people want them They have someone use them once and we should you know, we should honor that choice, you know And so, you know lots lots of power powerful functionality here, you know random cell protection options and you think you know It's pointless having a cell protection option until someone Comes and they can't file their time sheets because the protection isn't right and they can't remove the rows In the spreadsheet, which if you don't delete them when you submit your time sheet the online system crashes because it's written by a kid and You don't get paid which is brilliant, isn't it? So, you know, sometimes granular protections are good What else? interoperability So the current trend in interoperability is to think that using a DOM and XML is a panacea so, you know, why don't we just load the whole document into a DOM everything will be wonderful and perfect interoperability So the copy command has pretty much perfect interoperability Occasionally it fails, but if you if you load the file in and save it out again without altering it in any way Usually it's a hundred percent interoperable Unfortunately, once you start to manipulate the data it gets a bit more complicated So actually understanding that this is a field, you know field filled form and you need to tab through it and fill data In and you can't edit any of the rest of it and move it around That that requires a bit more intelligence and processing and so actually Microsoft gives up here very wisely says I don't really understand document protection In the section so I'm gonna I'm gonna give up at this point because I'll screw your document up Similarly, if you can't calculate the spreadsheet, you know, it's all very well to load it and save it back again But when someone changes a number here, you know, it's a bit of a problem I mean, I was on the open XML standardization technical committee I think it's there is no easy way to do interoperability Well, that doesn't understand the document and do it well. So you need a real implementation somewhere So I'll just show you some of the recent work that we've done to try and improve things So reducing latency is one of the big things that we've been trying to do to make it work nicely across the world So previously for reasons of flow control when you type the key it would send an invalidation You saw that rectangle was invalidated to the client's the cloud game. All right Let's ask for a new tile. It would come back. It would render time. We go back again sort of more round trips and you rewamp and You saw I guess how it was tiles now instead. We preemptively push the tile and it makes everything much quicker So you lose a lot more round trips. You have effectively one round trip to the server Plus some microseconds or so of rendering time And the problem is of course that you don't want to do too much of that We also then need to remember what you're looking at the visible area if you If you do this too much you get a producer consumer imbalance and you start filling your Filling the world with tiles that aren't being received So we only allow a few of them in flight and it sucks to do your own flow control But it really helps with latency. So there you go What else we've made our tool bar better. So the tool bar used to be gray and now it's a different kind of gray This is what's called progress you can't go laughing at that, you know What else have we done? No, it's a nicer gray color And we've also got this co-libre icon theme which is more colorful than the the monochrome one of the past We've reorganized a number of bits of this to make it look more friendly and familiar So, you know, you can click to rename your documents in here and it doesn't save as for you. I'm actually that's a slight elaboration It's not just put get check file info this say put relative something like that which takes one of your family and you know Incarcerates them happens a lot in some places. I hear anyway so a prettier icons revision history happening here last modification at a glance and Dropdowns for various things many more dialogues more column formatting More powerful data series stuff in charts csv import. There are some people who are still csv junkies, you know Yeah, I mean we know people who are rtf junkies who are still fighting the standards war before the standards war before last You know, which is quite good really like 20 20 years ago. The open document format was rich text format. Anyway Governments are particularly good at that What else shape editing so previously when you resize the shape it would show you a blue surround here of what the new size Is going to be because we can render that in the client side as an overlay We added some nice circular things because circular things are good and square things are bad. Everyone knows this It's true. You'd be amazed. Um, then we added a grab handle here So you could rotate it which was quite fun, but we also have a preview now of the image So as you scale it, maybe No, it's not visible here. I don't know why it's not visible But either way as you're scaling it you see this Overlaid transparent preview of where the object is and of course that's just pushed into the client and rendered on the client So it's very very very snappy indeed. There's no round-trip and when you finish it relays out on the server And that says the same thing with more graphical panache What else? Yes, we need someone to create a 3d cube icon that isn't high color if anyone has a mission You know you could send me a patch because it's kind of the rest of it looks quite nice and then you're like, yeah It's all looking good, isn't it? Anyway, but you can insert images and shapes and custom shapes nicely We are now blockchain powered, you know, there's a company called for rain, but it's cool and they're based in Switzerland, which is all good and so instead of saving let us get put whatever you can Get credentials from them and sign the documents and integrate into that blockchain Trivially and that's built-in so you can log in with these these wonderful things here and then you can be you know Sure that that was indeed done or at least things were done in this order at the times That actually they said they were happening and so on and so this yeah There's loads of easy to reuse code here in terms of time stamping and PDF signing and documents saving and so on. It's kind of cool Nearly at the end five minutes left, jolly good So we've done a whole lot of easier to use stuff in terms of mobile devices. So People who adopt a different approach to doing online office suites, particularly on mobile phones Typically take about 40 seconds to load the JavaScript necessary to show a UI and render a blank document Which is quite a lot of code needed to run an office suite I mean LibreOffice may be 150 meg of binary, but at least you're not downloading it to your phone and jitting it You know So so that's quite a lot of battery and power and waste and we can load these things in about five seconds Run it on the server and take into your phone and it's just there Which is which is kind of nice and of course really nothing to do when you pan and zoom It's all just the GPU flipping textures very quickly And so we have now an edit mode that makes it even leaner when you start up and so yeah Much better multi-touch for you know sizing things We try and show dialogues as is so you get the full function set on your phone Of course dialogues aren't really designed for mobile phone screen So you can pinch to zoom and flip around and use all the functionality And we're probably going to be improving this in a number of ways High DPI stuff we've done a whole chunk of work to make that prettier the great joy of high DPI is that you know you You have a 20 megapixel camera and you have a 1 megapixel screen So you can buy a bigger CPU and throw all the data away Beautifully now you can you know have a 20 megapixel camera and a 4 megapixel screen and you know the CPU Can rest easier as it throws away less data? and The display controller can then shuffle it out at high speed and power, but anyway there you go This is also progress just so you know and lots of other goodness here So the kaliber icons I mentioned scripting API support lots of scripting stuff is going on Because we want people to be able to you know add all of those things I want to put fields in I want buttons in my web app that embeds this so I can insert names or Labry catalog numbers or whatever and I can click these and I can then manipulate that the object model behind it using a Python script running in the back end inside that jail and Yes GDPR, you know I have to use the word GDPR So anyone know what it stands for? No, I'm joking joking. So so we have all this logging system inside there And it logs things like who logged in what they typed, you know, you know all that sort of stuff for debugging You don't have to have it on but it does write your name in there because you have to show it to the user So anyway, but we can now anonymize it all as a switch that you know throws all the data away as it goes out in a nice way and presumably hashes it with a salt and I don't know clever so watermarking I mentioned this earlier so you can render your PDF or your Document in such a way that the text isn't ever in the browser So since you don't need to send the document to the browser There's not necessarily any way to get the text out so you can show someone a word document You can say you can comment on it. You can you can edit it even red line it But you can't download it and you can't print it and you can't copy paste out of it and Some of these granular permissions are really really useful. It's just a few options You send to the WAPI call or maybe when you print it. It just has your name like all over it, right? Which is fine, you know give it to your friend But make sure he's really your friend and he's not gonna, you know, give it to your boss or whatever, right? So that's that's kind of fun and people like that for very secure Things. Oh, yes, brilliant. So who's heard of composable operations and operational transforms? Who has met Svante Schubert? Yeah, so I'm I didn't have much time But but here's the thing computer scientists love them. They love them. Oh, they're so abstractly beautiful The reality is the real world doesn't work like that when we when we type something in a spreadsheet in LibreOffice Sometimes we duplicate the whole sheet because we don't know what changed like if you do some complicated sorting operation We just keep what was there and have it on the undo stack We don't do a precise this move there and split it into these operations and then try and move them over other operations like so that you can do a sort with one guy and someone else changes of value and then How do you compose these two together ridiculous? These things never happen. It turns out 90% of the time one user is editing the document approximately 10% of the time Several people in a call editing the same document miniting in a meeting We do nothing to resolve conflicts. We could do a little bit for the easy cases We actually don't do anything and say far almost no one has complained like we have I haven't used a 300,000 users something like that There's the paying ones you got 10 million docker image downloads and growing like 12 12 million still no complaints about the lack of Composable operations. Okay, so maybe it could be you you know come and tell me right The problem with composable operations is that in order to compose these two operations or transform them over each other It's not a CPU time problem. There is a computational Programmer time problem. So say for every operation you do like sort of spreadsheet or insert conditional formatting You need to understand how to compose two of these operations and move them transform them over each other or You know make them of sub operations you can compose and the problem is this scales with n squared in the number of operations You have but the n squared is programmer time Not CPU time not memory Programmer time, which is probably the most expensive resource anyone has ever heard of so if you want to know why Clabber online LibreOffice online is extremely feature rich has loads of features. Yeah And Google Docs doesn't consider the n squared for the poor old Google programmers Anyway, we just bring it all into the same process and it works nicely and it scales So we sit in the same process and here's 5,000 people using it a spike in Holland in a surf drive and here's the CPU which as you can see is Yeah, there's kind of no processes in here anyway in this thing It's some two CPU systems and four CPU and you know, this is the free ram for going between 13 and 11 gig free So, you know, we can we can scale very nicely without anything complicated and that's me. Thank you for your patience Very good What's this some time for questions was that the Four minutes of questions perfect. Why don't you have four minute questions anyone? Certainly sir. Tell me It's been tried using the LibreOffice surrendering engine web assembly in the browser. The problem is it's big It's 150 meg and it does quite a lot of bootstrapping So when you load LibreOffice on your laptop, you think oh, this is a big piece of code and you're right Although it's not finished yet. So it's gonna get bigger The thing is when you when you load a Java application on your PC You have the same problem But when you run an eJB something or other the Java bootstrap is all done And so there's a huge benefit to the world generally of just doing that bootstrap once on one server and then using it for You know thousands of people so I Basically don't think it works and also if you're thinking of 150 meg of codes going through web assembly On your mobile phone, which is the other claim, you know because we did it in JavaScript. It runs everywhere It's it's just not working very well, right? You know the phone is melting through your fingers and you know and yeah So I it's possible, but so is pole vaulting blindfold. So, yeah Cool. Thank you. Good. Good question though. People do ask that a lot. Anyone else if I got 30 seconds I will be outside afterwards. So come on arrest me So that was going between 13 and whatever 16 gig free I think we say something like 50 mega documents and a gigabyte to play with and pre in it stuff