 Okay. Hey guys. This is another talk. This is about using LibreOffice not as a standalone application but in various ways connected to other systems or extended with plugins or embedded somewhere or running on a server. So it's using LibreOffice as a part of a larger system or extending LibreOffice was something to customize it to your to your needs. This is Samuel. You know him. He's been having a talk just yet. I'm Torsten. We both work for CIB. CIB does lots of things among them. LibreOffice but also other stuff like PDF processing and document generation and cloud stuff like DMS storage and processing OCR. Lots of things that people need to do with documents and LibreOffice is an obvious part of that offering because of course LibreOffice deals with documents as well. So and coming from from that angle the that there's various that there are various areas that have CIB as a company works on integrating LibreOffice. So we will come from a from from a perspective here that we actually use that both inside the company and customers. So hopefully we can give you a little bit of insight into this whole LibreOffice as a piece of the puzzle or LibreOffice as a Swiss Army knife tool box thing to use for anything that you need to do with documents or document processing. So wonderful windows. It just just works you know. It adapts to the screen. It looks slightly skewed but just slightly I don't know. Okay so just a little bit of a pitch. Why would that matter? I mean a few I mean I don't know how many of you are using LibreOffice in your company or as a user or are you all is there anyone here like Joss Wright. I mean anyone here who's really integrating LibreOffice into into systems. Christoph yes I know excellent. So I mean so probably it's a bit old for Athens to most of you but for the sake of the audience that will watch the video. It's really cool to have something like LibreOffice. So it's just me sorry magic hands. Okay right so it's just wonderful to have something like LibreOffice and it will be stupid not to use that and so I mean if you look at this this is a future open-source survey LibreOffice turns out to be even before the Linux kernel and I mean the Linux kernel is the poster child of reusing that everywhere and running everywhere so LibreOffice should really be that as well. Take it and run it everywhere and use it for anything that you need to do when it comes to document processing, document rendering, document conversion. Again it feels a little bit for you it might feel a little bit like hello sorry right so it's it's really a trend and I hope to to write this trend for much longer and it's really encouraging to see what people are doing with LibreOffice all over the place and I think it's it's not the end of it but just the beginning that we're seeing here. So that's better. Right so come on so here we go. Where was I? Right so yeah that's an industry trend and again you know that but maybe for the sake of the audience out there. What I see LibreOffice and what we see LibreOffice is really a Swiss Army knife not only when it comes to the number of document formats that are supported but also in the way that you can integrate it, extend it so it's really the number of extension points and the way to interact with it the number of language bindings that are existing for LibreOffice is just staggeringly large and there's almost no reason not to use that so for every language for every platform that's relevant for every document format you'll probably find some support in LibreOffice. So that gets me to the first part of call of course when you when you want to integrate something is you need to somehow hack code to do something with LibreOffice so this is the the programmability aspect of the integration story and so one cornerstone of that and out there in the in the industry Java it's really really really really popular and it's especially in an enterprise context it's still the platform and the language of choice so there's a wonderful plug-in for Eclipse that was developed by a colleague of mine during Sousa Time, Cedric Bostona, lots of contributions from other people and that really screen lines the process of developing extensions and you know applications for LibreOffice and I got recently fixed and much improved by Samuel there's a blog link here there's it's hosted so Eclipse is this sort of extension repository like LibreOffice as well but you can point it to extra reposts and so we set up one at the LibreOffice site to host it so you can just add that to Eclipse and then it will update whenever there's a new version okay yeah we already saw a little bit of the Eclipse plug-in and my last talk but the focus there was on extension development now I want to get a little bit more into all the features of the Eclipse plug-in yeah as you can see it's wizard-based extension development we didn't see the wizard wizards yet we will have a look at them so you don't need to create the IDL files by hand all the services and interfaces and lots of stuff where it helps yeah deploy on press of a button and debug that's what we already saw yeah so we'll go over to the demo okay okay I think I'll double the screen so while we wait for Windows to get its act together I don't know so again the question perhaps to all of you so who ever wrote an extension for LibreOffice this one it's quite a number of people that's like 10 15 people with which language should you use java basic python javascript wow nice so so if you would do that again would you pick the same language or something else how's how's the python experience these days okay ish yeah I would get to that who's still happy with basic core still happy with basic you should probably if it's if it's more than I don't know 2000 lines you should probably stop for basic or no so what's your personal limit we get distracted now the question was what are my limitations with basic it's not so much the line count but it's more if I try to do much integration stuff or not and it's all within the LibreOffice components that the work happens okay so Samuel seems to be ready let's have the demo okay so first of all if you want to start we go to file new and want some other type and then there are the types of project that you can generate an extension project that's what we already have seen you know client application that is if you want to connect from an application to an existing LibreOffice instance so it's not in LibreOffice but to connect from it externally and you are e-based this is something something I don't really understand it's like you can use you know to build your own applications that's right I think Stefan you might know better we'll see that it's probably the C++ runtime stuff is it so what is this your e-based application what is the purpose of it oh yes you can have applications stand-alone applications that use the your ease so you can for example have an application that you doesn't need to be an extension to LibreOffice it can also be a standalone application that then connects or it does not even connect to LibreOffice so so you can build your own application on the you know on the you know infrastructure okay okay so that's probably that one probably not no okay yeah most used projects would be the extensions and the you know clients yeah during the wizards you can create you know interfaces and services but you can also create them afterwards so we go through the wizard first project name this is our LibreOffice conference extension okay the work space extension this is some package name we can choose programming language there is only Java supported at the moment there were some efforts to also make a C++ plugin but that has been dropped because of lack of maintenance and yeah so if you haven't configured your LibreOffice path and SDK path yet you could do it here we have already done it and you could specify other source directory layouts separate source folder or IDL folder okay next step this is not the Java version you use in your extension but it's the Java version you tell the skeleton creator from LibreOffice for which Java it should be created there was a Java 1.4 option that has been dropped in LibreOffice so there is only Java 1.5 compatibility okay then you yeah and I mean the sticking point really is that if you leave everything at the defaults you can you click three times and you have something that that should work right okay then you can include base classes for tests we leave that on and have a look at it how that looks afterwards yeah then okay there is a default service name with an interface you should be able to show the types but that doesn't work currently and I don't know why so if someone has some interest in looking up that bug help is always welcome the LoEclipse plugin is on GitHub under the LibreOffice organization I think I think I even have it in my browser open yeah we sort of adopted it so it was kind of I think it was on source forge somehow lingering maybe and so we just adopted it okay yeah so you can submit issues and pull requests whatever you want okay we'll go next and then yeah what's interesting you can add member functions to your to the services so this is my method return type this even works void this is argument one type let's say string okay in and out return type okay you can add additional interfaces that should be inherited published that is just like you can publish it if you want others to use your interface but probably you want if you create an extension you don't want that okay there is our extension so this arrow lock is by the way not enabled by default you can show it if you go to window show view arrow lock that is quite helpful sometimes when there are errors there's quite a bit of logging by the eclipse plugin you can see what it all does it compiles the rdr files merge merge the types generates the class files from the types and makes the skeleton and now imagine you have to do that you come to the project get to have been tasked by your boss to to quickly create an extension and you have to do that manually so I think it's quite helpful okay this is a bug that is in LibreOffice by the way somehow the generator puts slashes where it should put points for the Java package it's on my list to write a bug report for that okay so this is the service this is the method we created and now what I will do I can stick a breakpoint in here um how much should I go into detail do you have any more after oh yeah I have some slides but I think especially this this debugging um is quite interesting okay I think that's even the major okay we print the argument here argument one stick a breakpoint and then I probably need to close this um okay so we uh want to deploy it we create a new debug configuration or run configuration LibreOffice application um select the project there is only one the others are from my former experiments give it a name okay now it has been deployed hopefully we check in the extension manager it's not activated yet okay yeah this is shown by default when there's no description but that doesn't matter now okay so now if we want to um instantiate this service we can just make a macro this is my service my service equals create uno service and then we take the name from here and then we call the method my service dot my method and we have a string argument okay then we run this and eclipse switches to debug mode and we are here and have our string some string yeah that's very helpful okay that is what's the extension wizard and what you can do I mean that's the kind of um developer experience that that's especially java um people are used to and um now it's I mean it's you can of course do that manually um you can just uh give the the jerry arguments and tools options so that it connects to your debugger and waits for it to connect and then but it's um it's nice to have because there's so many moving parts um to have that in in one extension need to open it again I close the presentation go to recent files now thanks for the debug okay so I don't have much time left but um but I'd like to highlight so there's there's the um the IDE side of the of the of the challenge to really streamline developer experience um and then there's the um how to make java you know api more palatable to to people who are used to statically typed interfaces so there's one project it's called noir Libre um initially developed by iron um there's um kind of that's also in the LibreOffice GitHub repo by now uh it's wrappers around you know api it's used by a number of projects um including two open source ones which is new accounting and therapy uh new accounting well it's accounting software therapy is a uh doctor's uh office um patient management system um and noir focuses mostly on um embedding LibreOffice as a java bean so um you build an application around it and you have LibreOffice running in the middle as part of the the user interface um another one um is uh jack so that's also wrapper um around rather arcane or for for people not used to arcane um api but it's more focused on extensions like running inside uh LibreOffice lots of uh further resources here um obvious uh further work is extend things like noir Libre because it's just a small fraction of that that's currently nicely wrapped um have more training materials so um thanks to um city of munich there's excellent materials that need to be somehow reviewed perhaps translated um then the question star basic so that that's what was one of the reason I was asking who's still using that so the um let's say developer experience is a bit old school these days with the built-in IDE so question is if people are using that still on the larger scale if it would make sense to look into um or scope uh what it would take to give any of the existing IDEs like eclipse uh star basic support uh versus the the general question whether star basic is for smaller things than the IDE might be okay and if you want to do anything serious then just take use python or java python itself um is um up and coming I think so you can with IDE support you can develop uh quite nicely with it it's a lot less nicely integrated yet so there's um quite a bit of integration work missing to make that really nice okay so some examples if I still have the time so the the prominent one is volmox which is java based developed by um essentially city of munich with a bit of help from from others here there um which is um really mail merge template management system on steroids um targeted to to public office um this is again java based extensions I don't know is uh you know that martin is that there's an extension but is there also a uh standalone uh java unopart for it because I know there's this toolbar which is outside the krissoff you would call that details okay so I think we are almost out of time what is that hmm okay so volmox then um well there's another example for um that we're working on for a customer Samuel did that largely so this is just connecting liberal office to an existing dms so it was just translating from one system to another with a bit of ui for round trapping metadata etc then there's um macros like really star basic macros for um routine tasks somehow there's a slight automating set um that's an example from the city of munich um where there's just a csv import into into writer documents um so yeah just to to give you some examples of what cib is doing there so if you have any integration work to do any challenges there we're here to help you other than that of course we're also trying to make the experience there nice and wonderful so that you can do that yourself um I hope that we could show that um that indeed well it's it might not be perfect yet I mean there were a few glitches but um it's getting there okay so with that thanks so much for your attention are there any questions sorry this might be the basic question but I didn't really understand uh what's the exact purpose of this extension for connecting to internal dms uh because as far as I know Librov supports some general type connections such as you know fresco whatever c m i s and so so what's that yeah that was um a very custom document management system with very special features it was for the courts in um not australia in austria um yeah and so they needed a custom solution it was not working with the existing protocols yeah so it in this case it was just easier to to write cast to customize Librov versus um um re-implementing or customizing the dms um just more economic maybe one last question if we have the time if there's any okay thanks so much enjoy