 Hello and welcome to the virtual questions and answers session on contributing to LibreOffice. I'm Ilmarin Lauhokangas. I'm working for the Document Foundation in Development Marketing. We asked for people to send in questions beforehand, and the only person who sent them was Bogdan Busea. So this session is wholly dedicated to his questions. I'll start by showing a video where I demonstrate how to binary bisect a regression bug on Windows. And it will take a few minutes. Okay, now I'm getting the right window. Okay, so I guess you're seeing my VLC window right now. So it starts by downloading Git for Windows, and this is a bit new. We usually recommend to use Siegwin, but now we switch to this because the native Git for Windows is much faster. Here I just untick some stuff that is not necessary for this bisecting work. I choose my favorite editor on Windows Notepad++ And then I pick this checkout as is commit unix line endings, because this is what is used in LibreOffice development. This video is reproducing the steps from a tutorial in our wiki. And the video will be uploaded in the wiki at a later point. The tutorial has steps for Linux and macOS as well, or wherever they need some special steps. Here I'm changing the directory to where I have this. Well, it's a virtual box shared directory. I'm downloading the Git bundle for version 6.1. And now I fast forwarded, I cloned it into a Git repository. Now I removed the bundle and now I can start the process. I'm checking out the oldest commit and opening this problematic file, which opens just fine in the oldest one. And here I check out the latest commit in the 6.1 repository. And let's see what happens. Okay, so it says general error. And it also has a behavior that I think it crashes. And here I start the bisecting process. I have sped up the video a bit in places where it takes a long time. Here we see we got the bad result. So we say git bisect bad. Then we happen to have the good result. It opens just fine. So I say git bisect good. And now I fast forward the rest of the process. And so what we are left is the blamed commit, which is there in the source SHA lines. This is what is referring to our source. The line with commit at the top is referring to this bisecting repository. And it refers to these compiled binaries. Okay, so that's that. And next I will answer the question on how to update bisecting repository, if I understood it correctly. So I will share, oops, did I share this? We'll see it again. I will share my terminal. Okay, now you see the terminal. So the process is to first to git check out on master. So you have the latest commit. And then it pull. See what happens. Okay, now it's going to pull all the latest binary commits in this unreleased binary bisect repository. But we can leave it downloading there. And then Bogdan was interested in generally the correct steps when checking new bugs and how to use some of these bug fields. So I'm going to share this browser window. So let's just check out a couple of bugs. So here we have someone complaining about the flat pack version of LibreOffice. Now if this, this is somehow specific to flat pack. We don't track flat pack issues in our boxilla. So we refer people to this GitHub repository or the flat pack package. I will remove this whiteboard needs commenting. It is also removed automatically, but just to avoid some spam. And I will write advice the reporter to open a new issue in the GitHub repository. And I changed the status to resolved, moved, kind of anticipating that this person will create the report in the other place. Okay, and then we have a draw bug. And I have tested this bug beforehand. This is actually a bug. So this is not an enhancement. I will change the severity field to minor. And it's minor because this bug is about getting to the text formatting options for several text boxes at once. And you can get there if you go through the format menu. But if you right click on your selected text boxes, there will be no text menu item in the context menu. So this is something specific to the context menu. So I will change the status to new and write reproduced to find the right words and I'll paste using this Chrome extension. I will paste my version info. I'll remove the whiteboard stuff. And then I'm just going to look for a nice meta bug. I will type context. And I'm seeing here is meta bug for context menu bugs and enhancements. So I think it's pretty safe to pick that one. And I put the meta bug number in the blocks field. And actually the summary needs some tweaking. I think that's good right on. And that's saved. You can see in the history all the fields that were changed. And then Bogdan was interested in how to search for duplicates. And here we have a calc bug, which I also tested beforehand. It is about doing some action for an object. It can be an image or a shape through the right click context menu. And then the mouse cursor will stay like this. As the reporter says it stays a grabbing hand. But for me on Linux it stays like a four pointed arrow. So we can try searching for this. Let's pick calc and try to find something. All right. In the summary contains all of the strings, image and cursor. Nothing. It's just the same bug. Then I try image context. Absolutely nothing. Let's try shape cursor. No, just the same bug. It happened to have the same words. Shape context. And we can even try unticking the open bugs indicator here. So we choose searches for closed ones as well. Nothing there. So I think we can be pretty safe or safely say that there has not been a report created for this beforehand. Whoops. I switched to the wrong tab. Okay. So let's just deal with this. I tested this also on Windows and back to 3.3.0. So I say inherited. It changed the operating system to all because of the windows testing. Then I will change. I think we could retain these also tested with the chart. I don't know if the summary could be somehow made more clear according to the background. And actually this has to be after completing an action through the right click context menu or an image. Okay, it's a pretty long summary. But anyway, the example was for doing a crop for an image. But this actually happens for any action like flipping a shape or changing the anchoring or whatever. And it's only seen on calc. And then we might go looking at the meta box. So let's type cursor. We have mouse cursor, bugs and enhancements. Sounds nice. Okay, I think that's enough. And then status to new. And then have to write some poetry in here. I'll paste my master version info. Okay, I think that's fine. So this was an example of not finding a duplicate. But I fortunately found something that we can use in the actual duplicate finding situation. So here we have quite a fresh report. Unable to type. Okay, so the summary is a bit wonky. But the point is that you're in impress. You type some text, you select the text. Then you go into the sidebar properties and focus in the font family field or the font size field. And then you hit control A. And instead of selecting the field content, it selects the whole text box content in the canvas. So this is obviously a very recent regression. And I will do some searching. So if we look at this, it talks about the sidebar. So we might try it like this. Font and sidebar. We don't find anything interesting. So actually what we need to do in this case is do a more greedy search. So only for font. Obviously we're going to find a bit more than a couple. I will sort them by the changed. We have 60 open bugs. But because this is quite obviously a fresh regression, we can look at the latest ones. So here we see immediately something interesting. Font size fields and other text boxes keep losing focus. Well, that sounds very familiar. And actually we have another one here. Font size input loses focus unexpectedly while changing font size of objects. Tabbed interface. What? So let's look at this one. It's also for seven. And create a new presentation. Select some text. Click the font size button. Type in a number. And the focus switches back to the selected text and edits it. And there the reporter says it might only be a problem with Linux. So just like this one is on Linux. And I have tested this. This only happens with the GTK3 interface. It does not happen with the KDE framework backend or the fallback X11 backend. And this one is interesting because it says that it happens with the tabbed interface. But I believe this is the exact same issue. The reporter has this video displaying the bug. Yeah, yeah, waving that mouse cursor right on. So what should we do now? We have one reported this about tabbed interface. So it's probably not very accurate because it's not limited to that one. This is the oldest report. This is from July. And this one where I started is from October. So as this older report seems to be pretty much fine. I will leave it open. And I will copy the bug ID. And let's close this newer one. Status to resolved duplicate of the older one. And let's do the same for the bug that was about the tabbed interface. So I'll remove this. And then let's attack this one. On-size-feuge and other. Just wondering if this summary is accurate. I guess so. So I'll just throw in a GTK3 at the end of the summary. I'll type GTK3 in the blocks field because it's an alias. For this meta bug. I'll write repression in the keywords. Write by bisect request in the keywords. So someone can bisect it later. And yeah. Oh, actually I should refresh this page because I did. Duplications, yeah. And operating system should be Linux, obviously. Status to new. And reproduce only with GTK3. I guess it's fine. Here you can see my duplications. Then the next topic was how to do some interesting custom searches. In Buxilla. So let's have a look. I'll just show a couple. Okay, so yeah. This custom search is very powerful. It has this show advanced features, which we will do. And searching in Buxilla can sometimes be a bit tricky. In the case when we don't want something included in the search. We should use this not checkbox in the custom search with the advanced features. So if we try it like summary should not contain the string meta. Or the meta box. Then we can search. Or maybe just add another one. Then we can say version matches regular expression. So you can use regex piece here. So we can search for a specific version or starts with six and then has point one. I have to escape the point because it's a regular expression. This pattern and now I can search. Okay, yeah we had the impress component here so we didn't get many reports. But here we can confirm. Yes, the version is 6.1. Very nice. Okay, and then another one. I'll just clear this real quick by clicking on the simple search and then back to advanced search. We could try searching by change history. So how about we do like this statistical investigation. How many bugs were changed to fixed or reports were changed to fixed between two weeks and now. So in this case we actually should not use the status for the change parameter. But the resolution and here we type changed to fixed. And between we can use relative search term here like 14 D for days. And if I used M it would be months and Y it would be years. And let's put the resolution to fixed. So we are looking at bugs that are still in the fixed status. So here we see 76 bugs were changed to fixed in the last two weeks. That's amazing. Isn't it beautiful? Okay, then we might move on from this bug category to documentation. Because Bogdan was also interested in that how to use some tools in order to work on documentation. And I thought we might look at the help content a bit. So I thought to look at some open patches from Seth Chaiklin. And here we see he has four open patches against help. And Seth is actually doing all his help editing directly in the Garrett web interface. And I can show it. Here we see he has done some work on updating the help of PDF export. Here we can see the changes that he has made. The old version is on the left. The red color indicates that something has been changed. If the shade is darker it indicates something that was removed. And here on the right side we have the change stuff in green. So he has added a note, a heading and a bunch of other stuff. So I could go into edit mode in Seth's patch. I will click edit. And then if I click this file I go into the editor. I'm not going to mess with this but I'm going to copy all of this and show you the XHP editor. This is something that Olivia Alon has developed. And it is kind of mandatory if you're doing your editing in Garrett directly. Because it has these tools for checking the correctness of the XML markup. So if we click now, no errors found anywhere. No duplicate IDs. So why is it saying something about duplicate IDs? Well all of these ID equals something. All of these values have to be unique on a single page. It doesn't matter when we're talking about across the whole help system. But if I now copy this ID so it occurs twice and say check XHP. It says found duplicated ID attributes. Oh my gosh. And it even has this render page functionality so you get a rough idea of how it will look like. Well it's pretty good. If you want to observe the current help file, you can copy this bit of the file name and the path. Then go into the online help and change the file extension to HTML. So here we see how it looks like at the moment. So the XHP editor is very convenient for people who do not want to go through the trouble of setting up Git repository on their own computer. And setting up the Garrett patch submission process. Because it allows you to really see the preview of how the stuff works and check any errors. And you can even test these different operating system specific conditions. Because we have these conditions where the keyboard shortcuts are different on Mac OS compared to Windows or Unix. So Mac OS might use command something and Windows uses control something. And there are also these conditions based on which LibreOffice application is being talked about. So the help has these internal if statements in how to change the content. Yeah. And if you want to get into this, the wiki has a lot of useful information. It has this convenient brief description of a help file. Which is summarizing the typical contents of an XML help file. And there is also this more massive reference for the whole thing. So you can see in the table of contents it has a lot of stuff. Just pages and pages of these definitions. And this is also useful if you're going to do editing in the web interface. We have this open grok search online. There you can pick help for the project. Then in the full search type whatever maybe like accessibility. Okay, it's even auto completing. And there we are searching through all the files in the help system. You can view these files. Very beautiful. Great. So yeah, I guess that's enough. That topic and I don't really have. Well actually Bogdan was also interested in the guidebook. So how can someone from outside come up with suggestions for the writer guide for example. And this could simply be an email to the documentation mailing list. So if you have some grammar mistakes or stuff that is obsolete. Just please send an email to the documentation list. And if you want to really get into it and do edits directly in some draft files. Then you should introduce yourself on the documentation list. And register on our single sign on system. And request credentials for the next cloud. Where you will be added to the documentation team. And you will get access to all the folders. Which contain these work in progress files. Then you can participate. You can join the calls. Where the documentation effort is discussed regularly. And you can join the chat channels on Telegram or IRC. Okay, so any questions? Does Bogdan have more questions for me? Bogdan is thanking me. Great, he is happy. He got so much information that he has nothing on his mind at the moment. And I don't know if we have... Okay, we have Olivia in the channel. I don't know if he has anything to add. Or if he has time to chat about anything. Yes, thank you for... Yes, this is Olivia speaking. Yes, thank you for presenting and pushing for using the help. It's important, yes, to... Let's say... You saw the help editor and probably you say, well, that's a bit clumsy. But it deserves a little bit more development. And it's pure PHP with some knowledge of XTML. So if anybody wants to really to stretch their fingers on PHP, it's very short editor. We use code mirror for the edition and very simple transformation to get it rendered. And there is a lot of things to do. We have not yet fully tweaked it, but it's an open project. Whoever wants to spend some time in developing this editor is absolutely welcome. That's it. Right, and obviously, I mean, Seth Chaiklin has done dozens of patches for help. So it's really a proof that you can use this web editing workflow quite well and the XHB editor. It works even for more complicated stuff. I don't know, Haiko had some pretty ambitious questions. Show how to find code pointers. Well, I'm not really sure how I would approach that. I mean... That's a good question. Yeah, because, I mean, in general, you could just say that you're dealing with some part of the application, and it usually has some user interface. You should pick some unique string that you are seeing in the interface somewhere along the process. And then you can grep through the whole LibreOffice code base. You can use the OpenGrock interface, but it's usually maybe more quicker to do it on your local machine. Just grep for those strings that you find. And then you have to explore the code, like maybe working your way downwards in the hierarchy to find stuff that is responsible for these things that you're investigating. Does that make sense? Yeah, I think that's the way to go. You look for the string in the dialogue, for instance, and then you find the UI file, then you look for the CX file link to that UI file, and then you can already set a break point there and work from there. Yeah, and Christian has also a good point. You can do searches in other places. You can search in Buxilla, and you can also search through the Git commit message history. So that's also a good place to find stuff related to the topic. You just have to use your imagination to find the right keywords. And there you will see actual minimal code changes. You don't have to look at massive amounts of text. You can see what was changed exactly related to some topic. Yeah, so I don't know if no one has anything else to add or ask, then I think we might close the session. I think we used quite a bit of this available time. Yeah, I just wanted to say thank you. It was really interesting and very productive. I think when I started, I would have loved to see a presentation like this. At least you have something to get your feet wet. Yeah, and I'm actually thinking that I should do this like live streaming of bug triaging regularly and invite these new people that I'm training to attend these sessions, like maybe an hour of bug triaging at the time, have to pick the right time for the time zone, maybe early in my morning, so some West Coast Americans can join and whatever.