 OK, zelo vrlo, če je pravda. Všom je Andraš Temač, vzelo je kola Bora, ki najbolj je zelo v zelo v koudu, v libere ofici, kola Bora online, ali je da vzelo vzelo za vsev, na desetopu, v libere ofici. Zelo je to vzelo, konfiguracij, ljube obvridenje v svoj nama provingne ročno nije splahalne selektivne oblerje. Nisim situacije je začela učin, ali lahko mali nekaj progrežilo, kako nemer zelo, da je kar, ki naredil, da zelo odključiraj, da je zelo všeč zelo. The goal is to customizate prezistent settings of LibreOffice, in which can be many. So there are around 20,000 different settings. LibreOffice can bring almost anything from the position of the windows vsega, jezna, rečen, dokument. Zato vsega vsega jezna, da se skupajte in za vsega vsega vsega vsega, na najmaj šešeljnje, je zelo, da ne bi se vsega vsega vsega vsega, različno se zelo, da se vsega vsega vsega vsega. je tako veliko importance povali da je početnik polisji in čל se početi kako je teglavne zaplade in kako je, da bomo ovo. Zato bravno, da bo vzvoje nousah ta vse, in so ne bo vse začbeni. Posledno tsem puno lahko prišel, kako je tvoj konfiguracija לא�unist panel, if we want. We can set paths to the templates to a network share. We can describe the security settings, set the company name, and so on, set the default fonts. Whatever is configurable in LibreOffice, it's possible to manage centrally. So LibreOffice configuration architecture was designed so that it's possible. So it can have several layers. Typically we have three layers. One is the application layer, which contains the defaults. These are hardwired in the program files directory. So it comes with the installation. The second is an administrative layer, which we will want to configure. And it is read-only for normal users. And on the top of that, there is the user configuration layer. It's in the user profile, which is a read-write directory for the user. So when we have those layers, when we set something down below, and then overwrite it on a higher layer, the highest layer wins always unless we lock down the setting in a lower layer. So we need to talk about a bit the actual configuration back-ends where these configurations are stored. So first of all, there are the XML files, because LibreOffice is a platform independent solution. So this is the main configuration back-end that exists. These XML files are the same for all supported platforms. However, there are some system-dependent back-ends, which help the integration in a specific system. Windows, Linux, macOS. So, for example, the system locale is read from these system-dependent back-ends, also the accessibility, and on some platforms, even the username. Recently, for Linux, the deconv back-end was added, which helps the Linux administration. The Windows registry back-end was added around three years ago. Obviously, it's only available on Windows, but it's quite important for the Windows administrators, because usually Windows applications store their settings in Windows registry. So I was not sure about whether my talk will be in the developer session or this migration session. So I added some technical details to the slides, but we can skip them, of course. So this is the source file, where this registry back-end is implemented. It's quite short, and it has a very simplistic approach. So we don't bother to parse the Windows registry, which is difficult. We just simply read the registry on startup, write a temporary XML file to the disk, and let the config manager read it, and include it into the configuration tree. For this reason, we added another layer between the administrative layer and the user layer in the configuration layers. It's handled in the fundamental.ini in the LibreOffices installation directory. So it points to this solution, and it activates this temporary file reading. And after we read and parse this temporary file, we delete it, so the user will not notice anything. So it can read from the slides that we put the registry, we read the configuration values from a specific registry location. We read from the local machine and from the current user hives as well, and we read from these policies structure. And it's important because to this tree, we can write centrally with the group policy management tools. For example, from Windows server, we can create group policy objects for specific group of computers or users, and push those policies down to the computers or computer groups or user groups, and those settings will be applied for them when they log into the computer, and then when they start a LibreOffice, they will have the configured settings. So it's a little bit tricky how to find the settings, what we need to write into the registry. So one option is to read the expert config page or change the setting on the UI and find the registry modifications and so on. And so it's not for the average user, but luckily, Collabora maintains group policy administrative template, which contains around 100 important settings, and it can be extended, of course, anytime, so we added one or two more in the last weeks, and it can be downloaded, and it can be used either for LibreOffice or for CollaboraOffice, it doesn't matter, it's all the same. So there is a link for this on the slide. Later you can download it, check it. So I'd like to show two examples how this thing works. So I'd like to demonstrate that the registry backend actually works. The one is, we will set the company name to, for example, corporation, and my second example is that we will hide the tools, options, LibreOffice advanced panel. So let's see how we do this. So when I start LibreOffice or CollaboraOffice in this case, we can see that the company name here is empty at the moment, and we have the advanced panel here. Let's close LibreOffice and apply the registry settings. So I will show you these two files, it contains more or less the same that we had on the slides, so it's not, I'm not cheating. Okay, let's start CollaboraOffice again and see what happened. So we have the company name, which the user cannot modify very good, and we don't have the advanced panel here anymore. So we effectively disabled it, and the user cannot do nasty things in the corporate environment. Okay, but these registry keys are not very convenient to handle, so I want to show you the ADMX template as well, how to set up settings with that. So let me start the group policy editor here. I can edit only the local policy, obviously on Windows server, you can create group policies as well. So for example, here is the administrative template, okay, I forgot to mention, first I copied the administrative template files into the three slash windows slash policy definitions, and the language file to the EN-US directory. So I did it before the presentation. And now, for example, we can set, let's say, security setting. For example, security warnings when creating PDF. Here I enable this policy and let's have this checkbox checked and let's finalize this setting. I press OK, then we see that the policy is enabled. And then I have to run, oops, it's too small, I'm sorry, somehow it's not expected, but I will run the GP update command, which will run anyway when the user logs in. Okay, GP update, you see that the policies has been updated. Now I start again, Collabora office, and let's see what happened. Here in the security options, I can see that when creating PDF files checkbox is checked and there is the key beside the checkbox, which shows that this setting is logged. Okay, so it works. So as you can see, we have quite a few options here that we can set centrally. However, feel free, everyone, to suggest new settings or send patches to this ADMX file or send localizations. We have French and Italian localizations so far. And thanks to Marina Latini from today, we can even use PO files to translate this ADMX template. So it's even easier than to edit the XML. So as you see, for each setting, there is a little description and usually the string from the UI is copied there. So it's easy to translate with the LibreOffice translation memory. And finally, I'd like to talk a little bit about the issues with this. So it's not everything as nice as it could be. And I suggested easy hacks to improve the LibreOffice user interface. The problem is that when we log down a setting in the central configuration management solution, it would be nice if the user couldn't modify it and it would be nice if the user could see that the setting is actually logged. So they wouldn't try. So I have five cases. The first case, when we have the UI element disabled, it's great. And there is a little key icon next to the element, which shows that we logged the setting. So this is the ideal case. This is what we put into the marketing materials. And this is what I presented you in this little demo. The second case, when the element is disabled, however, the user has no idea why what happened. They cannot edit it, but the log icon is not there. It's still acceptable, but it would be better. We also have cases when the user can edit the lockdown value, however, it has no effect. It's also good, we can accept this result, but it would be better if they couldn't edit it because they had the feeling that they changed something, but actually they didn't. OK, there are also cases, unfortunately, where the user can effectively override the lockdown value. This is a problem. Unfortunately, there is no recipe for finding all of these cases, so we need to find them one by one. And of course, I'd like to receive bug reports because there are so many settings on the UI. I can go through all of them. And the first case, when the user changes the setting and then presses the OK button, LibreOffice crashes, because the underlying configuration manager detects that the user tried to write the read-only configuration value and then assertion is failed. Yesterday I fixed one more case, so there is some progress. When we find these cases, we can quite easily fix them, but I need help from the community to find these cases because every panel, every configuration dialog follows different methods. Let me say. They use a different naming convention and a different way to read the settings. There is one modern recommended way to do the things, and there is an easy hack for that. I showed the bug number. However, still there are a lot of cases when the old code with some ad hoc solution doesn't take into account that configuration values can be actually plugged down. This is my last slide, the call for action. This is what we need to do to improve the situation, so the framework is there, but LibreOffice UI is not always capable of handling the situation. Thanks for your attention. If you have any questions, please.