 This is not me. I'm standing in for Boobley today. Unfortunately, Boobley couldn't come. It's an unlucky situation here at Fostum if you have kids. So we're trying for a number of years to get at least some self-help room here, but it's all kind of complicated. So this year Boobley said, I'm not going to look after my kid on the dirty corridors, and she stayed home and sent me. So all the errors and mistakes are mine, and the good stuff is from Boobley. We're working for CIB. This is our company. And this talk is about accessibility, mostly for developers. But I think it's a topic broad enough, and there's so much to do that I think there should be something for everybody to take away. First of all, accessibility. Who knows what that is in this context? Anyone? Stefan, I know you know it. So, well, let's check Wikipedia. In the context of software, it's mostly used for technology, or some part of a program that is there to make a computer or a technical device usable or easier usable by a person with a disability or impairment. And these days, I'm actually talking about disabilities. Well, we try to avoid that, so we rather talk about accessible software or accessible rooms or accessible restrooms or toilets or something. So that's accessibility in this context. What this is all about is that doing something that is accessible in software land these days is not particularly hard. So the problem is rather not that it's hard to do. The problem is rather that people are not aware of it, what to look for, what not to do or rather what to do. And you don't have to have any disabilities to be able to do something, to check something, to make something accessible. And this is more or less a pet talk to encourage all of you, first of all, to tell you how to do it and then encourage you to do stuff that is accessible from the get go and that people need to write bugs about and then laboriously fix it afterwards. So, yeah, why don't we do it in the first place? So first of all, at least that's true for me. I'm mostly not aware of the things. So since I am not impaired, my vision is not impaired. I don't know, my motor skills are not impaired. I tend not to notice if I do something, especially in the user interface that is not accessible. So this is awareness. I need to know what to look for. Second problem is there's always too little time. So either if you're a volunteer and it's already, I don't know, 2 o'clock in the morning and you just want this patch merged or if you are on a contract then it's always too little time, too little money and too much to do. And user experience and accessibility tend to be secondary concerns. And that's sad and it doesn't have to be like that. And third problem and that's kind of ties into this awareness issue is that development teams tend not to be particularly diverse. So again, people are not, tend not to be aware of what they are doing now. Now, but let's change that. So let's make people aware. So we all can do something. This is a little motivational image here. I really love those. So you can, all of us, we can all test for accessibility things or problems. I will talk about that a bit later, what to do. What else can we do? We can file bugs if we find something so that development becomes aware of it. We can fix quite a number of easy things directly in Glade, which is the UI editor for LibreOffice. And last but not least, of course, if we're hacking, then we can also tackle perhaps the more challenging problems that are only fixable if you touch code. Good. So that's the how to. What to do? Four simple steps to get quite a long way towards something that is usable for most people in need of accessible software. Magnifying glass. So you can, and you're usually in your desktop environment on Linux or on Windows, you can increase the font size for the user interface. Do that and check if things still look okay. Nothing is cut off. Everything is somehow, even if you need to scroll a bit or if you need to move things a bit around, but it's still that you can get to the user interface controls that nothing is hidden, nothing is cut off. There were a number of very obvious bugs, like really absolutely bleedingly obvious. For example in Calc, those sheet menus, those tapped sheet names, they were just not scaling with the font size. There was a hard limit there. So if you scaled the font above, I don't know, 15 or 16 point, it would just be not reacting anymore. So the rest of the user interface would scale, but not that one. Same story with menus. If you make your font, your user interface font large enough, suddenly the menu wouldn't fit the screen anymore. So if you want to change the font back while you're out of luck because tools, options, you can't access it anymore. There was another fix that went in to 6.0 so that you get this expander icon, so you can just click on that and get the rest of the menu still displayed. All of that is like bloody obvious, but you have to actually scale up the UI font to notice that. Keyboard navigation. Keyboard navigation is a very, very, very good example for something that benefits everybody. I mean, at least it benefits me and I guess many other people who really don't like to push the mouse around all day and rely on keyboard. So making sure that LibreOffice is keyboard accessible is great for power users, is great for hackers, and is also great for people with accessibility needs. How to do that? First of all, we need to make sure that the controls have either the control itself or the control label has a mnemonic label so that you can press out and this label character and then you can get to that control. And it's also, when you do that, you get something for free which is proper screen reader output because the screen reader, if you do those labels, control labels correctly, and then we'll get to that in the next slide, but if you do that correctly, the screen reader notices, oh, this is a label for this rather complex list box here and it tells you what this list box is. And if you don't set this label properly, then the screen reader will read some weird gobbledygook internal names. But, well, again, it's something that you can test by using a screen reader if you don't want to do that. The next thing is just check if the mnemonic labels are all set. Parts of that, I think there might be another talk about that parts of that can be automated so you can have something like a regression testing script that kind of makes sure that user interface elements follow a number of constraints. But it's also something that you can just be aware of. Like, if you do UI, just be aware of it. Make sure if you put a label there, that gets the mnemonic character and then it gets this association with the actual control. So, yes, how to do that? So, it's a good example of something that is not really accessible enough. So, what should have happened is... So, oh yeah, well, this is probably because let me use a 6.0. So, now I press... If you can see that from behind, if I'm pressing Alt, I'm now getting those mnemonic characters here. So, if I now add the E, I get the second entry box down, highlighted. So, it's easy to do. Just if you're hacking UI, check if this actually works. Second thing to do, if you're doing that, make sure that this association is correctly set up. So, for that, we need Glade. We need to get it to the foreground. And for that, maybe I need to... So, this is a LibreOffice dialog that I've loaded here. It's an Impress dialog slide transition panel. And highlighted here is this a bit bigger control that has to label this one here. So, those two should be associated with each other. So, what you need to do for the label is, first of all, click this use underline that enables this feature with the mnemonic character. And then you need to associate that with the actual complex UI control. And this is the sound list. And you get some selection here from... So, if this is correctly set here, but if it wouldn't be, you can click on this edit button and you get this selection box with all the controls in that dialog. And then you pick the right one and set it there. And then it's associated in Glade. And then you save it and send a patch to Garrett. Good. And that's what I mentioned. So, there's going to be some work there to check that automatically. The thing is, you can check automatically, but you can't really fix that automatically. That's still some manual work there to fix it up. But it's a known problem and it's going to be worked on. Next one is to navigate UI between... Not only in a single dialog, but if you have the full LibreOffice UI. So, the trick is always press F6. So, now you see the menu bar is highlighted. I press it again. Now it's the first toolbar. Now the second toolbar. Third. And now I think I'm in the... Yes, now I'm in the document. So, make sure that this is a functioning cycle so that in the end you end up there at the beginning. There's a button in press when you have the slight layout panel open, you get stuck there. So, you can enter, but you can never leave. Like Hotel California, which is a nice place to be, but maybe not for a blind person who then can't get the cursor out again. So, just again, being aware of that, just play with that. If you notice it doesn't work, file a bug, or if you're a hacker, go fix it. Time-wise. So, yeah, this is some F6. When you are in those toolbars or in the document, inside that, it's like inside the dialog so you can tap travel between the controls. Check if every widget accepts the keyboard focus so that you can type something there. And probably more important, if you change things, does the order of traversal still make sense? Or is the focus jumping all over the place? Okay, this is more for the hackers. So, if you're hacking a user interface, make sure you set the right flags on your controls, on your windows. So, for a control, for something that can accept keyboard input, make sure you have to stop flags that, for something that is a control container, like the outer container of a control, make sure the style of control flag is set. And for something that is a bit more complex, like, for example, a list box that itself contains controls again, like the extension manager has this rather complex list box where you have this enable-disable buttons in per entry. So, those complex controls that need tap traveling, focus traveling inside, they need this child dialog control flag. Yeah, this is the number of assorted bugs here that part of them were fixed, part of them are still there. I mentioned this problem with the Impress side panel where you can get stuck with your F6. And yeah, the last one, let's maybe skip that in favor of questions. Of course, non-textual content, like document content, should better be accessible as well. So, that means for pictures, for videos, some useful alternative text, some label that a user knows what that should be. And there's a good example, news score extension, does it wonderfully. The default that we have in writer is not so great because when you insert a picture, you're not getting prompted even. It won't be pretty easy to prompt the user when it's inserting an image anyway. Preset perhaps with a file name so that people can click it away if they don't care so much, but at least give the option there. Okay, I think we're running pretty much out of time. So, the answer to questions is not no, but it's a funny picture. So, let's open for questions quickly. Anyone? In addition to what we said, you do not have to say yes or no. The design team worked on a guideline for the sidebar to tell this expert sidebar how to travel through the sidebar, which has a lot of controls, and you don't want to press tap, tap, tap to go from first control to something on the end. It is a complex thing. Can you send me a link to that? So, those slides have annotations, they have notes, and I'm going to insert that link there, and I'm going to upload the slides after this talk to the FOSTA pages so you can find it there from the program, from the DevFoom program, and I'm going to add that link. Thank you. Yes? So, the question is, are there any good screen readers to be used for development? I think NVDA would be a very good screen reader, I suspect. But that's not, I'm not the expert here. Maybe someone from the audience can recommend something here. So, the answer was Orca on Linux. Orca, yes. And NVDA on Windows and VoiceOver on Mac, which just comes with the operating system. Okay, sorry, we're out of time. Happy to answer questions outside or later. Thank you so much.