 Hello, I'm Mian Hleshovski, and I would like to tell you about how LibreOffice Online can be connected to ownCloud or nextCloud. So to get you an idea like what is ownCloud or nextCloud, I will just quickly log in. So this is the start screen of ownCloud. And basically it's a file-sharing thing where you can upload your document, share it with other users, send them the links, like how they can open and can see the contents of the documents and be involved with other people that are actually creating documents, or you can store there your own and be happy with that. Of course, LibreOffice Online, on the other hand, is just focused on editing the documents itself. So it needs some kind of document storage underneath. We have chosen ownCloud as the reference implementation of such this connector, so that is why I will be presenting here about the ownCloud and nextCloud. But of course, if you have another document storage, you can easily plug it into that. So here you have the document, you just clicked on that, and like you will see the content of the document, you can see that it is something completely stupid, but yeah, I hope you have the idea now. So if I start the presentation itself, then you are probably interested how to set it up. So the way to get there is quite easy. So first, you have to install Collabora Online on one server. This server has to be or should be a different one or a different VM than the ownCloud or nextCloud itself. This is just because so that you have better control of the data or of the infrastructure so that if you get out of resources on the VM that is dedicated to LibreOffice Online, it doesn't affect the ownCloud or nextCloud itself. The user still can access the documents, the user still can work with them, but maybe the editing will not be available for them. Of course, to make it secure, you also want to set up there SSL for the HTTPS access because the ownCloud or nextCloud instance has to communicate with the server like where you have the LibreOffice Online. Then you install Collabora Online Connector from appsowncloud.com. You may be a bit confused that there is also LibreOffice Connector there available. Sorry, but I discourage you from using that because the security, well, the way how it was implemented and it was not implemented by us, it was by some other people, the security there is not as it should be. I think that even they have their recommendation to use the Collabora Online Connector. Then you need to allow the server that serves ownCloud or nextCloud in the settings of LibreOffice Online. That is because without this, there could be other random people that would connect to your server because that server has to be publicly available and would use or misuse that server for editing their documents. You probably do not want to provide your network bandwidth and computer power to some random people that would like to edit documents in their storages somewhere else. Then as the last step, you have to set in this extension, in this Collabora Online Connector settings, you want to provide there the address of the Collabora Online Instance so that it knows how to forward the connection itself. And you are done. But you are probably interested in more details like how is it implemented. The implementation here uses BOPI protocol. The BOPI protocol is something that is implemented by Office 365 as well. It's what they are using for the connection. So in some sense, like if there is some SharePoint, whatever setup that uses Office 365 for editing, Collabora Online could be or LibreOffice Online could be actually nearly a drop-in replacement for that or maybe with just very small modifications in there. Collabora Online itself is a BOPI client, which means that from the BOPI point of view, it is the one that accepts the documents and uploads them back to the BOPI host. And BOPI host is the document storage itself, so in this case, own cloud or next cloud. BOPI itself is quite well documented. It's like you can see the URL here where you can read more about the BOPI protocol. The code, the reference implementation is on GitHub. It's own cloud-rich documents. And it itself contains from two main parts. So one is the part that provides the endpoints that allow the downloading and uploading of the documents. And the other part is JavaScript. So of course, as a provider of the documents, you somehow want to show it to the user in the end, so that's why the JavaScript is there. From the rest points, point of view, as I said, it is very easy, like, how it looks like for the consumer of that. So there's a get call that, like, is there a pointer somewhere? Is there a pointer? Yeah, yeah. Okay. So hopefully you can imagine, like the files, like the BOPI and Asterisk means that this part of the path has to start with BOPI. And from then on, like, it is like what is understood as the actual endpoint. So it can be BOPI, blah, blah, blah, or it can be just BOPI, whatever makes sense for your implementation. Then files, which means, like, that's, like, going to point some ID file that has, like, concrete ID, and content means that you are interested in the content. I will talk about the access token a bit later. For uploading back, you need to call the post call there, and again, the structure is the same as with the get. The check file info, that's there for things like knowing the size of the document. I think there's some kind of user ID as well, and all the things that we need to present to the user later, like when he or she starts doing something with the document. Security token. So, of course, like, when you start editing a document, you do not want the UI to actually ask for the credentials once again. Like, you know, some native implementation might lead to something that, like, you are working in your own cloud or next cloud, and, like, start editing a document, then, like, asking for credentials, dialogue pops up, you file it in, edit your document, it would be just a disaster from the user point of view. So there's a security code token that is actually generated for the LibreOffice Online on the own cloud or next cloud server, and it is passed securely during the creation of the iframe that contains the document and where the user actually does the editing and all that stuff. From the LibreOffice Online point of view, it can be something that is completely random. The only thing that is a condition is that, like, it has to behave nicely, like, when you use it in the URL, so it should be bound only to characters and numbers only. Another thing that comes into play before you can instantiate the iframe itself is discovery service. So in the, as I said, like, in the own cloud or next cloud administration console, you have set the URL of the server. But then the documents or various MIME types can have, like, different endpoints that could be there. So there's a small piece of XML that has to be read on the own cloud or next cloud side and that we provide from the LibreOffice Online and has to be parsed and, like, according to that, this is then transformed into the address of the iframe that is, again, loaded from the LibreOffice Online side and the document editing actually starts. So this just repeats that the connector connects there to the discovery service, creates iframe, provides the access token, and then the rest is transparent. Now LibreOffice Online or Collaboration Online took over the control over the document and the user can edit there, can do all these things that we have seen in this previous presentation here. And then only, like, when the user chooses to close the document using some exit or a button or anything, then the own cloud or next cloud is called back and the information that the editing is done is passed to that and, like, from that point of view, it can continue with some other handling that is needed there. Versioning itself, I don't know, like, if you have seen that in a short presentation. Okay. So let me show it here. So in the file menu here, you have to see revision history. So that shows you actually the history that... Well, I have some very developed version here, so I just hope that, yeah, you can see it here. So you can see here the versions that are... that are stored in the own cloud or next cloud and because, like, they provide kind of auto-safe during the document editing and then the own cloud or next cloud itself versions that, according to their standards, and, like, you as the user then can, like, move backwards and forward in this list of things. Again, this is implemented by the check file info that provides the information there. Oops. That should have been Shift-FR5. Anyway, that's all from me. So currently LibreOffice Online connector works with own cloud and next cloud, but, of course, there's always more that can be done there. So if you want to get involved, the code is there on the GitHub and we will be glad to see more patches there. So thank you. Questions? In which component are the buttons and toolbars implemented? Is it LibreOffice Online part or is it own cloud? So the toolbars and menus are implemented by LibreOffice Online itself. So that's part of the iframe that you will get via this. Like, it is possible to, like, with LibreOffice Online to do some, like, hardcore integration that uses the JavaScript itself and then you can do, like, much more advanced integration into your potential application, but that needs much more work on the integrator's point of, like, side than just, you know, like, do a few rest endpoints and load the iframe. So it could be possible to have some more minimal setup in which I don't need own cloud or something to get something running? Oh, definitely. Definitely. Like, so here I talk about own cloud and next slide because it's the reference implementation that we have, but in principle, like, anything that implements the VOPI protocol can be, can consume this because the VOPI protocol, like, defines all these rest points, rest endpoints, and also, like, how the iframe should be accessed and what parameters should be passed to that. Okay. Another question? Three, two, one. Thank you so much.