Max: This is the interview with Simon Long of the Raspberry Pi Foundation who is mainly responsible for Raspbian the desktop OS.
Simon: That’s right.
Max: Many applications like VeraCrypt release binaries for the Raspberry Pi platform specifically, but in this case not even ARMv6 binaries – just ARMv7. I was wondering whether there’s a specific technical reason for this, targetting the Pi specifically, why not just do generic ARMv7 binaries.
Simon: So I don’t know anything about the specific case you mentioned there. In terms of targetting the Pi specifically, I am aware that Debian standard ARM hard float versions do not make the best use of the Pi. They are not particularly optimized for our platform, is my understanding. I have not tried running anything that we have not built specifically using dedicated Pi build systems built on the Pi or built on cross compile environments designed for the Pi. But I am led to believe that things need to be specifically built for it rather than just using standard Debian hard float stuff. I am not familiar with the technical details of why it needs to be the case, but I suspect it’s to do with the optimisations for the hardware. Certainly in case of obvious things where people wish to use parts of VideoCore, a standard Debian ARM hard float build will not make any use of that. So you will not get the best performance which you could get out of the device.
Max: You mean things like for instance these NEON SIMD optimisations?
Simon: No – the NEON stuff ought to work, because that’s on the ARM side of the device. It’s more specifically the Video Core side of the device, of which the video acceleration is probably the most important part. There are also things like the pixel processing units in the VideoCore IV which allow you to do parallel operations. You aren’t getting any of that optimization if you are not specifically targeting our platform.
Max: So essentially an ARM platform is not like the same as a different platform?
Simon: The ARM core itself is the same, but the peripherals will be different. One of the peripherals in our case is VideoCore which provides video and multimedia acceleration. So if you write for a generic ARM platform, you will not make the best use of that. To give you a good example: Chromium. Every time a new Chromium release happens, we have a guy who works on integrating our video hardware acceleration in it. If you use Chromium to play YouTube or whatever on the platform, you get the benefit of acceleration for that. If you took just the standard Chromium ARM build, you wouldn’t. It’s mostly for things like video acceleration.
Max: Do you have an automated procedure in place for doing that?
Simon: No – it’s a hard thing to automate. The code changes significantly, certainly in the case of Chromium. In a lot of the cases it’s about taking the same patches as you put on the last version and applying them to the new version. But as you know, whenever you try and merge patches between versions, they don’t always go in cleanly. It’s a varying amount of work to put in depending on how much churn there’s been in the base code, but it’s not, unfortunately, an automated process. It is a case of the guy who works on this and has to look at what has changed between Chromium 65 and 67 and see how this affects these patches. It’s a huge code base and it will change. Whereas the patches are relatively small, the lines they get patched on to can be significantly different between versions from the Chromium side.
Max: To sum it up, the idea is, because the Pi is – relatively speaking – still less powerful than a desktop PC, to really use the hardware as long as possible and to optimize the binaries for it.
Max: Let’s switch to the topic of the Raspberry Pi desktop. What are the main goals and ideas behind it?
Simon: The main goals and ideas behind it … when I started, my first day at Pi Eben and I sat down, with Raspbian running LXDE, and he said can you make this any better. I played with it for a bit, and thought – well yes, it certainly is possible to make it better. Whether I knew how to make it better was the question because I had never used Linux before at that point, so I had quite a learning curve.
Max: You actually never used Linux before?
Simon: I had booted Linux a couple of times experimentally, but I had never written code for Linux, I’ve never really used it for more than ten minutes, [before starting the work at Raspberry Pi].
Max: Was one of the reasons that you didn’t use Linux the desktop environment? The confusing way it is arranged?
Simon: I’ve used Ubuntu, I’ve used Knoppix.
Max: Knoppix – actually by a German engineer.
Simon: Yeah, I’ve used both of those and I had found the desktop environment not intuitive on either of them. I still don’t find Ubuntu’s desktop environment intuitive. It always takes me ten minutes to try and remember where they’ve hidden the terminal. Things like that. I feel that a lot of Linux applications are not written with usability as a priority. They’re written to be easy to write rather than to be easy to use. Which is understandable, given that no one is getting paid for that. But I felt on looking at LXDE, as it was then, that there was a lot of scope to make this much more user friendly than it was, and certainly, I think, given the two platforms that I had most experience on that point, which were Windows and Mac, there seemed to me to be a major gap in usability between LXDE and either of those. If you want a stated aim for it, it would be to make the Raspberry Pi Desktop as easy to use as either Windows or Mac. Ideally as Mac, because that’s my preferred platform. In terms of making it easy I think the most important things were to add consistency. I think the trouble with LXDE is that it is a collection of components from different problems that have all been poured together. So you’ve got a window manager from one place, and you’ve got a file manager from somewhere else, and you’ve got a taskbar from somewhere else. And it didn’t really – to me – work as an integrated set of things. If I wanted to change the system font, I had to change it in three places to take effect everywhere. And this is an ongoing process. In the new release you’ve probably seen the startup wizard.
Simon: I’ve already had criticism on blog comments from people who say you shouldn’t use a startup wizard, because that discourages people from looking at the setup [configuration files].
Max: I’ve actually seen that comment. The reason is sort of like – ‘We did it the hard way …’
Simon: Exactly. This is my whole frustration with people who [think like this]. It’s “I had to suffer, so today’s users have to suffer.” To me this misunderstands the purpose of Pi. The purpose of Pi has always been to provide an environment where people can learn about computing. And if you’re talking about learning about computing, to me, that is learning how to program a computer. It is not learning how to configure a Linux desktop. Because one of those is a useful skill that you can use: once you learn how to program, whole careers are open to you. And that’s what we are established to do. Learning how to configure a Linux desktop – yes it’s useful, if you need to configure Linux desktops. It’s not what Pi exists to teach people to do. And so, from my point of view, I want to get the desktop environment out of the way, so that people can just start programming. That’s a main aim of what I’m doing: if people want to change their desktop background, or make their font bigger so that they can read stuff, they shouldn’t be having to dig about in twelve configuration files to do this. That should be easy to do.
Max: Absolutely. The reason I use Windows on my desktop is that I just can’t be bothered to … for instance I have a multi monitor setup … I have a rough idea how to do it on Linux, but I would have to edit configuration files, and put a lot of time into it.
Simon: Again, coming at Linux as someone who has not used it very much before, the more I discovered about how you had to make these configuration changes, the more horrified I became at the mess that people are being expected to deal with. This is why the first thing I did was to write an application which changed all your system settings for you. That seemed to me to be the big thing like, why had no one done this before? Why was it still acceptable that you had to open four different configuration [files] to get the thing to look right? It’s making it all feel like one environment. That’s always been my goal with the Desktop, it needs to get to a point where like on a Mac, you don’t even think about the Desktop. The Desktop just works. And if you want to change the background picture, or make the font bigger, or want to launch an application, it’s obvious how you do all those things. To me LXDE – while it provided a great foundation to work on – and there’s no way I’m denigrating the work of the creators of LXDE, they’ve done some fantastic stuff underneath it – just needed to have just that little bit of care and attention on the top of it. That is what I provided to make it into an experience which is nice to use. That’s always my focus – it’s making it nice to use, with a specific focus whenever I can on making it nice to use for people who have not used a computer very much before, or certainly never used a Linux system before. It’s making it familiar and more intuitive.
Max: Are there actually any copyright or design issues, for instance like the menu bar on the top in MacOS? Where you have to be careful?
Simon: I am not aware of anything, no. This all goes back to the days of Xerox PARC and the original desktop. The desktop metaphor is well established and no one owns it. I wouldn’t dream of for example taking Apple’s icons. I think Apple’s icons are things of beauty. Have you tried zooming in on them? They have huge amounts of hidden detail that you never see. If you look at things like the mail icon on a Mac, if you zoom it, you can see it’s got a postmark saying “Welcome to Cupertino” and things like this. They put so much effort into things like that. There’s no way I’m going to put Apple icons on our system, that clearly would be a copyright infringement. And also we want to establish our own visual identity, that is why we have commissioned our own icons, that is why I have redesigned what our windows look like, why we chose our color set. And none of that is cribbed from anyone else. That’s all my own ideas as to what the design should look like. I think in terms of the general concept of a windows environment that has menus and taskbars, etc. – that’s pretty much in the public domain. The copyright issues are if you start stealing people’s resources, effectively. And we’re not going to do that. I don’t want to make a copy of MacOS. MacOS has some very good ideas behind it. But this needs to be something that is recognizably Raspberry Pi. At least recognizably different from MacOS. In the same way that it needs to be recognizably as usable as MacOS.
When I first started, the only branding we’d put into the operating system was that we had a Raspberry on the desktop. Apart from that it was LXDE – we’d done nothing else to it, because we hadn’t had the people to work on it. It’s like Steve Jobs used to say – fonts are really important, typography is important. It’s things like that when you try and create a visual image that represents your brand. To sound a little bit pretentious about it. It’s making something that people look at, and go “oh, that’s the Pi Desktop”.
Max: Speaking of typography, what kind of system font do you use as a default?
Simon: It’s a public domain font from Google called “Roboto”. I’ve had to do a little bit of work on it. It’s an interesting question if you’re a font geek. It was almost the first thing I did, literally on day one, because the default font of LXDE is ugly – and I know you can make a huge difference …
Max: Do you know what it was?
Simon: I can’t remember – it was very hideous. You can make a huge difference to the way anything is perceived just by changing fonts. Just change a document, from a serif font to a sans-serif font, the whole document looks like a different thing. It’s one of the most crucial things to do – Steve Jobs was absolutely right about this – if you get the font right, a lot of things get better immediately. So, the first thing I did, was literally go through all the free fonts I could find – obviously there’s millions of fonts in the world – but you know. I needed to be something that’s free [to use], something which I could understand how to get into Linux. I just went through dozens of fonts, and as soon as I hit on Roboto – I was like, yeah, that’s it, that looks how I want it to look. Fortunately it was public domain, so we could use it. The trouble was – so we installed the Roboto package, and then a few months later we did a system update, and the font was still Roboto, but the font had changed. And it didn’t came anywhere near as good. Google had done something to the metrics of the font. I looked it and went Eugh! – that’s not what I wanted. So actually, what we have is an old version of Roboto, that’s got it’s own package. I call it Piboto, just to distinguish it from Roboto. I can’t keep following the Roboto package, because it has changed the font and I don’t like the new one.
Max: That’s actually a quite unpleasant surprise, I’d say. Because you expect fonts to stay the same.
Simon: It didn’t. They changed it. And they changed it to the point where I said “no we’re not following this, we’re going take our own version of this now, and we’re going to stick on my version”.
Max: Especially on very small screens – like Adafruit 2,8” screens – you have to have a special font.
Simon: Yes, the smaller point sizes – you need to have a font which is designed to work in situations like that. So we’re on this old version of Piboto, as it’s called, and one of the other things that’s interesting – if you’re a font geek – talking about consistency. Fonts obviously have different weights in Linux – light and thin, medium and heavy, and bold, etc. And some applications – this is actually a GTK 2 vs GTK 3 thing … ; I am very pro GTK 2, I am really quite anti GTK 3. I think they’ve made some really bad decisions in GTK 3. Things like if you run a GTK 3 application under sudo, it looks different from the way it looks if you don’t, because of the way they’re pulling theming information into it. So if you run under sudo, you don’t get the user’s original GTK 3 theme, you get the root GTK 3 theme. Which may not be the same. Things like that. If you’re trying to be consistent, GTK 3 is not as good as GTK 2. And this is the point I was making about GTK 3 – in terms of what’s bad about it in terms of fonts, is that its handling of font weights is not good.
The system font we use is Piboto Light. Again, I want the Light version, because the Light version looks nicer than the normal version. There are some applications – for example, Chromium I believe is a GTK 3 application – whereby you set the font to be Piboto Light, and it throws away the Light, it just gives you Piboto. I think this is a GTK 3 thing, where some of it’s font weight handling is not done very well. And this again, I think gets into their sudo and non-sudo stuff, there’s some stuff in there which is not done properly. I’ve actually raised bugs against [this] – and they go: “no, it’s supposed to work like this, it’s fine”. I’ve got to work around this, because it doesn’t do what I want it to do.
Max: How do you deal with it?
Simon: The way I fixed the font issue with everything, is that there is our font, which is usually called Piboto, is now called Piboto LT, because it’s the light weight. Now people can’t break it, because if you choose our font, it’s the right weight all the time.
Max: With Piboto LT there’s just one weight, just the light weight.
Simon: You can bold it – it still includes the bold and the italic versions. But the regular one is the Light one. It’s the only way I can get everything to look consistent. With choosing fonts, I think the weight is as important as the font itself, because changing weight can change the appearance of the font hugely. I’ve spent many happy hours playing with FontForge, creating my version of the font, which now means that everything does look consistent. This is one of the changes in the most recent release, it’s that now Chromium is actually using the same font as everything else, whereas before it wasn’t. Before it was using Piboto in a normal weight, as opposed to the Light weight.
Max: I think this is some of the things people notice – it seems a bit off – at least subliminally.
Simon: Subliminally is a good way of looking at it – I always thought that something wasn’t quite right about Chromium. But I’d look at the settings, and the settings would say they have the Light font. And as soon as I made these changes – that was what was wrong with Chromium. Chromium now looks right. Chromium now matches everything else. It’s one of these things – if you don’t fix it the first time you notice it – you get used to it. And you then think, well it’s just the way it is.
Getting Chromium to work was such a big step in the first place. Chromium was difficult, getting it to work properly with the window manager and to look nice in the window manager. One of my big hates is applications which want to look the way they want to look, rather than the way the system wants them to look. And Chromium is one where it tries to use it’s own colors for window bars, and things like this. It doesn’t play nicely with window managers. I spent a lot of time when we put it in, trying to make it actually look nice.
There’s an anecdote about that. We got Chromium in the system. And Eben uses Chrome on other systems. I don’t use Chrome, because I’m a Mac user, I use Safari.
Max: Is there Chrome for …
Simon: There’s Chrome for Mac, I wouldn’t recommend it because it does exactly what I said then – it looks like a Google application on a Mac, rather than looking like an Apple application on the Mac. Eben is used to using Chrome. And Chrome colors its border, so you have tabs and you have a particular colored background – and Eben was used to this, because he used it on a Mac. I looked into it, and it doesn’t fit with the rest of our applications, it needs to change. I was playing around with various color combinations, and I turned on the option to use the frames from Openbox – the LXDE window manager – with Chromium. Because by default, you loose the window frame. Having a window frame, Eben said “that doesn’t look right with a window frame, that doesn’t look like Chrome anymore”. I said, “trust me, this is going to be right. But it needs to have the frame. Because it needs to match everything else.” And Eben was sort of tutting and muttering, “you’re making a big mistake – you mustn’t do that” I said “trust me, this will be right in the end”. The issue was that you had Chromium’s colors inside our window frame. I needed to work out how to recolor the window that Chromium gives you – the background behind the tabs. I needed to make that match the color we used. It took me a few days of fiddling about to try and find out where the setting was, and I changed the setting. Eben walked over to my desk after I’ve done this, and I said “Just have a look at Chromium now. ” He looked at it and he went: “That’s fine” I said ” I told you it would be fine “. It’s about consistency. It’s about making it look the way you expect it to look. What Eben had seen, was something that didn’t look like Chrome and didn’t look like us.
Max: Something entirely different, then?
Simon: Yeah, so that looked wrong. But I knew that to get it right you have to get colors and fonts right. And as soon as you get the colors right, and it matches, Eben went “Oh it’s fine.”- “Yeah, I told you it would be. It’s because it now looks like us. You’re used to it looking like Chrome and what you were seeing is this awkward stage in the middle where I hadn’t finished it.” But this is why things like the window manager are important. It’s a very important way to give you a consistent look and feel. So applications that don’t play nicely with the window manager annoy me, because the window manager is there for a reason.
Max: That’s one of the things that annoy me about the Linux desktop – the consistency as you say. There’s I think the GTK, then there’s KDE desktop environment …
Simon: And the thing about the GTK is – if anyone says they’re writing an application for us, what they should base it on, my answer is base it on GTK 2, because I’ve spent a lot of time making our GTK 2 theme work nicely. It looks the way I want it to look. Every time GNOME released a new GTK 3, they fiddled with the GTK 3 theme. And I’ve spent weeks trying to make the themes match. So that a GTK 3 application looks like a GTK 2 application on us. And everytime GNOME changed stuff. As I said GTK 3 doesn’t seem to do theming quite as well as GTK 2 did. GNOME seem to have moved towards having a theme that is hardwired into it, and you are really encouraged not to change it, whereas with GTK 2 you always had the theme that you wanted. I have created effectively a GTK 3 theme which shadows our GTK 2 theme. And every now and then GNOME do something in GTK 3 that I cannot replicate in GTK 2. Or that clashes badly with our theme. And then I have to go through this phase of trying to make the two look as similar as possible, because people notice that this application looks slightly different. You don’t necessarily notice it explicitly, but subliminally and it doesn’t feel quite right.
Max: It’s a real challenge, isn’t it. That’s something which you wouldn’t have to do on a Mac or Windows.
Simon: No, because there’s just the one toolkit, right. And the other thing which comes into it recently is Qt. Because the new PDF viewer – when we introduced that this time – I mean Xpdf is so old and dated, we needed to get rid of it. It was one of the things on my list on day one, we need to get a new PDF viewer, I finally got around to doing it. And I went through and I tried every PDF viewer that would install on Raspberry Pi. I’m looking at things in terms of look and feel, how does it perform, does it do – because the interface of Xpdf is a list of pages down the side, rather than being able to continue to scroll through pages, it’s things like that. And it needed to feel like a modern PDF viewer. And the best candidate was Qpdf viewer, which is a Qt application. So it didn’t look like anything else on the platform. So my next challenge was, I need to make the Qt theming look as much as our GTK theming as possible. And that was several weeks of work. Again, because I’ve built this application that changes things like window settings and window’s appearance settings. So that has to be customized to make sure that it changes the [Qt configuration files as well], if you change stuff in there. I’m still frustrated – I’ve managed to get them to look pretty much identical. The one thing that I can’t do is autoshortcuts. So when you hold down the Alt key, the underscores appear on the menu shortcuts. Qt doesn’t support that. I did actually spent a couple of days going through the Qt code working out – I added this to LibreOffice. LibreOffice didn’t have this, until I added it to it.
Max: What is LibreOffice actually based on.
Simon: LibreOffice is it’s own, completely different toolkit. And it didn’t support this autoaccelerator highlighting, so the LibreOffice code that does that was written by me. Because I decided that we needed it. And I upstreamed it. And they said, “Oh, this is against an old version – can you do it against the new version.” And I said: “No, I really don’t have time to do that. Here it is, do what you want with it – it’s for us rather than for you.” And within about a week someone else in LibreOffice had grabbed this code that they had been waiting for someone to write and pulled it up on to the [recent] version. It seemed that I’d done the thing that people had been waiting for for a while, which is quite a nice feeling. I looked into doing the same thing for Qt, it would be a nightmare to add it. The hooks don’t exist to do it – the messages to tell you where the key is being pressed. I spent a few days looking at it and decided, I was just going to have to live without it. That’s the main visual difference between Qpdf viewer and other stuff on the platform – it’s got underscores underneath all its accelerators all the time and you can’t turn it off. At some point we might reshell the whole thing in GTK but it’s a big job.
Max: How much work would it be, actually, to rewrite Qpdf viewer in GTK?
Simon: I don’t know to be honest. It’s something Eben asked me to consider doing. The actual rendering of PDFs is all done by a third party library. So that’s fine – it’s just recreating the entire shell around it. And the shell isn’t hugely complicated. You’ve got a toolbar, you’ve got some buttons, you’ve got some menus. It’s very much going to depend on things like, how many preference dialogues are there in there, ’cause you’d have to remake each of those.
Max: Essentially you would have to go and rewrite the whole interface.
Simon: Yes, rewrite the whole thing. There’s no way you could do it with an automated process, you’d have to do it by hand. So yeah, I think it would be too big a piece of work. But it would be nice, just to get rid of the underscores. (laughs). Do we want to spend three months of me fiddling with this, to get rid of the underscores? Probably not, there are probably better things that I could spend my time on.
Max: Does it actually have tabbed reading?
Simon: I think it does, I’m not sure – I’ve never turned it on.
Max: Another thing – I have personally struggled with Linux PDF viewers with filling in PDF forms. It’s a thing which is important for office work, like governments.
Simon: Yeah I know. I have to check it, I never tried it.
Max: That particular feature seems hard to do.
Simon: I’ll have a look at it – it’s a good question.
Max: Getting back to the Raspbian Desktop. What other issues are you planning to fix?
Simon: Now I’ve been working on it for nearly four years. I think I’ve got most of it the way I would like it to be. I think what we’re now looking into doing is customize some more icons. Icons are a very big job – a single icon requires a lot of work. You’ve got to make sure that it works at all the different sizes, you’re doing all this [massaging] at individual pixel level at each of the twelve sizes. So all of our system icons are done, I think our next step is going to be the toolbar icons. We currently use a fallback theme, so they come from – I think it’s a GNOME fallback theme we use at the moment. And we’re going to do things like look at the toolbars in LibreOffice and in the text editor and in the PDF viewer, so that those actually start coming into line with our look and feel.
Max: Because LibreOffice uses their own icons …
Simon: There’s a standard set of icons that are defined for desktop environments. Things like cut and paste, and file and copy, they’re all standards. There are multiple icon themes, which all have their own interpretations of those, LibreOffice then add some of their own on top of that. They use the icon theme for a lot of them. So you already got the issue there that you have two designers working on icons and they look different – and again this is a thing we’re trying to avoid. We’re trying to make all the icons look like they came from the same place. Because all of Apple’s icons look like they came from the same place. Mostly. It’s just trying to get visual consistency. So, toolbar icons are I think the next area we’re going to look at. In terms of overall look and feel, I think we’re almost at a point where people have gotten used to the way it looks. What I’d consider doing in the future is what Apple did when they moved from whichever version of MacOS that it was – Apple had a fairly major UI change.
Max: They used to do this natural material thing, and then they moved away …
Simon: They had a font change. I think when they moved from cats to mountains they changed the font.
Max: Didn’t they use Helvetica?
Simon: No this is not the system font. I can’t remember. They made a change with the font, and they made several UI tweaks. They weren’t big, but it kind of moved a UI design that was by that point ten years old or thereabouts, and it sort of suddenly moved up a bit.
Max: A refreshed design.
Simon: Exactly. I have no intention of changing our overall look and feel, because I think it’s pretty good as it is, but we are considering maybe we will do a similar sort of thing – to show that we’ve done a new version when we move to Buster [note by transcriber: next version of Debian]. One of the things that’s slightly frustrating is that when we moved from Jessie to Stretch, no one really noticed. (laughs) Because there’s no visual difference – they look exactly the same. “Oh, we’ve got Stretch now – great. What’s the difference? Well it looks the same.”
Max: Maybe you could do some different background pictures?
Simon: The background pictures are lovely – they’re done by a guy here who does a lot of photography. And they are gorgeous. As soon as we saw them, Eben and I sat down, and we looked through and the one with the road – we said that’s going to be the backdrop. And as much as I love the picture, I’ve seen it a lot now. And it’s funny – it’s one of the things whenever I see a picture of a Raspberry Pi Jam or a Code Club, it’s just my desktop design – it’s a wonderful thing to see that people are using it. But they’ve always got the same desktop picture. And it’s like: we’ve put a lot of other ones in, try some of the other ones … ! That’s another thing which we might refresh for the new [release]. I did actually write stuff to randomly change the desktop background on boot, it was one of the things someone suggested, but I sort of got distracted by something else after I finished it, so I never actually enabled it. That’s a good point – I will turn it on in case people want it. Some of the other pictures are lovely.
In terms of overall look and feel I’m happy with it. The other thing that we’re looking into doing is, on day one I had a list of applications that I wanted to have as standard in the image. And we’ve now got to the point – things like having an office suite, having email, having a nice PDF viewer, obviously all the programming tools that we have, a nice text editor, but one of those that is still missing is a multimedia player in the GUI. And actually the reason we haven’t launched one of those yet, is that we wanted to have the same hardware acceleration as we do for video playback in Chromium, etc. It’s been on my list to do literally since day one. We are now actually working on it – I can’t promise a date on which it is going to appear, but it is actually in progress and I hope to see it fairly soon. It’s the one thing I feel which we’re missing. It’s based on VLC.
Max: That would be absolutely fantastic. It’s one of the best players. There’s no ads in it.
Simon: It’s a good product. It plays everything. I use it at home, I use it on my Mac. It was the obvious thing to use. They were [already starting to enable hardware acceleration in the code].
That’s I think the last application, that I really wanted to see that we haven’t put in. The PDF viewer being updated, with that in there, we have a feature set which is comparable to what you get out of the box on Windows or Mac. Which is where I wanted to get to. So the stuff that people expect to find in a computer nowadays. I wanted to make sure that we had all of that. And of course the other thing that we’ve now introduced with the last release is the recommended software application, which again is something which I wanted to do fairly early on. Because adding and removing software, if you’re an experienced user and you know [how to use] apt, that’s fine. I did add a GUI add and remove program fairly early on, which was quite a lot of work on to tidy up, I can’t remember what it’s called. The UI was a bit of a nightmare when I first looked at [it]. Again I did this thing where I looked at all the packages that are out there to find the one that fits us best in look and feel, but [hardly anyone] uses it. Because there’s just such a huge number of programs in it, and there’s no information as to which are the good ones, and there’s no information as to what they might actually do. And in fact you can do system updates and things in it. But again, no one uses it for it, everyone uses the command line. Which is fine. But I felt that – many years ago, before I started, we had the Pi Store and things like that, and that sort of died.
Max: What was the reason for the Pi Store dying actually?
Simon: I think people just stopped supporting it. I don’t know if there ever was much on it. I think it was provided by a third party, and it just stopped being supported. I don’t think it was a conscious decision …
Max: It never really took off …?
Simon: No, I think. People are used to App stores on platforms like mobile devices and indeed on the Mac and Windows nowadays – and one of the things that Eben always said, is that the whole download package is partly about the desktop, and partly about curation of software. About providing software that we think is good. And up until now the only way we’ve been able to do it is to put it all into the image, because people won’t find it otherwise. And so the image has just been creeping bigger and bigger and bigger, as people provide us software. And it’s great that people provide us this software – I don’t want to discourage people from doing that – some of the stuff we’ve had is free to our users that other people have to pay for. It’s fantastic.
Max: The Wolfram stuff …?
Simon: The Wolfram stuff. RealVNC. This is commercial software, that Pi users get for free. And we’re very grateful to the companies in question for doing so. But the only way we could get this software to people is, “OK we’ll add it to the image”. And the image now is creeping up – the image is now 1.75 GB. It’s big. I know a lot of people think that “yeah, we have fast broadband now. So who cares.” But I can remember when downloading a gigabyte took me three or four hours.
Max: Also some of the countries the Raspberry Pi foundation wants to go to don’t have that kind of broadband.
Simon: Precisely. So I feel that is too big. The Recommended Software’s intention was to bring down the size of the downloaded image, bring down the number of things in the menus, just and try and declutter things a bit. Why still letting people know, “Hey, there are these great applications – they’re free, it’s easy to install them. Why don’t you give them a try”. But without making everyone download them all the time, which always struck me as being slightly unfair: “you must download everything we say you must.”
So yeah, I think that’s a good place to be – that we have effectively our own little app store with the advantage that all the apps are free.
Max: It’s actually very important as well for people who are new. Linux – it does work a bit differently than on Windows. On Windows you download the installer, and run it. I think the way Linux does it is actually much more clever, with the package manager.
Simon: It is much easier. apt is great, but again one of my aims is, that people shouldn’t have to use a terminal. Again [old Linux users go]: “Why aren’t you teaching people to use the terminal?” – Well they shouldn’t have to use a terminal, they’re not used to using a terminal. The terminal is there, if you want to use it, that’s why it’s on the taskbar, because it’s a useful thing. But to someone who’s only ever seen a Mac or Windows PC the idea that they suddenly have to start typing stuff in to install programs – no. They can get on to that later. One of the design goals was always – people shouldn’t have to see what happens inside a terminal. It should all just be point and click.
Max: You just want an easy onboarding.
Simon: Exactly. It’s all there and under the hood, if they want to play with it. If you want to understand how a Linux system is configured, or the X desktop is configured, go and look at my application that changes the config files. Because that shows you, where the files are, what you need to do them, what the lines in the files that are important are. I think, that my C is probably not the greatest learning tool in the world, but if you can read my C, you can see – that’s a good place to go. So how do you change the system font – “oh, there’s a function here if you want to change the system font – what does that do”?
If you get to the point where you’re learning to program you want to read some example code. I try to write code that is reasonably readable. You can have a look at that and then learn from it. It’s almost a tool that helps people to learn how to configure a Linux desktop – in addition to a way of doing it in itself.
Max: One of the things you mention before was Buster, the upcoming Debian release. What kind of changes do you expect from it in general and for the Raspberry Pi specifically?
Simon: I’ve not looked a huge amount at Buster. We had a big change when we mooved from Wheezy to Jessie, because of systemd.
Max: I think that was very important for boot speed.
Simon: Yes, the boot speed made a huge difference. I’ve not looked in huge depth at Buster, but I’m not aware of any such similar huge changes. Buster seems to be more evolutionary than revolutionary under the hood. I think with all of this stuff – [as I said] most people didn’t notice the change between Jessie and Stretch. I don’t think there will be any huge changes from the user point of view in Buster. The changes I think will mostly be evolutionary between applications. But I’ve not done a huge amount of investigation yet. Just to give you an idea – Buster isn’t likely to freeze until Q1 next year, it’s likely to become the stable version roundabout Q2 next year. When we did Jessie, we were quite a long way behind. I think our Jessie release was around 6 months after Debian’s. Stretch we were much closer, I think we were two months after Debian’s. And I want to be in the same [sort of time span this time]. So I’m going to start looking at Buster first half of the start of next year. I’m going to start looking at what we need to port to Buster. From my point of view a lot of the stuff is trying to make sure theming still works, making sure everything still looks right, making sure the config stuff hasn’t changed. While LXDE hasn’t a huge amount of churn in it, because it isn’t under a huge amount of active development, but there will still be changes. And there will be a new GTK 3, and I can tell now without even looking at it that I will probably spend a month just trying to make everything work properly under GTK 3 still. Half the functions will all have changed, and there will be different things … I’ve been there before. I want to be in a position where we will be able to go live with our own version of Buster fairly soon after Debian, within a month or so. We’ve now got the experience of doing that a couple of times under our belts, so we know how it goes. So yeah, we will hopefully be doing Buster relatively soon after Debian next year.
Max: We spoke about consistency, we spoke about an easy way to access packages, curated packages, for delivering a good set of default packages. What else do you feel is lacking in a modern Linux desktop environment?
Simon: One other thing to mention is the Startup Wizard obviously. It was something we wanted to do and try to make the actual process of turning on for the first time a little bit [easier] for people to get set up.
Max: I believe you have a link to launch the recommended applications at the end of the Startup Wizard?
Simon: We don’t have it at present, but it was something we considered doing. The Startup Wizard was an interesting thing to do, because it actually grew out of the requirement to set a country for WiFi. For 5 GHz. We couldn’t certify our wireless hardware without this – you have to force the user to select a WiFi country if you want to get WiFi certification. And we played with various ways of doing this. None of them were particularly ideal from the user point of view. And we also have things like – a lot of Pi users never change the password. We’ve done various things over the course of the last few years to try and increase security – so that there is no gaping open hole in the Pi, thereby people can’t SSH in using a default password, etc. It annoys me that we have to do that. It annoys me that people wish to do criminal things, but that’s life. In an ideal world we wouldn’t have had to do it. It’s a shame that we have. We’ve always tried to keep a balance between not upsetting the users too much by making the security too obnoxious and also not having the potential for people’s Pis to be taken over and used for malicious purposes. I think whenever we’ve made a change I’ve monitored closely the comments on the forums afterwards. And as long as half of them are saying “you’ve gone too far”, and half of them are saying “you haven’t gone far enough”, then we did the right thing. Cause they’re never all going to say “hey, you did exactly the right thing.” You’re never going to keep everyone happy, certainly with things like security. So we wanted to try and find a way of – again without forcing it down people’s [throats] – “Would you like to change your password.” This is something someone else had suggested.
I was playing with the Linux localization code – ways of setting the keyboard and setting up things like that. Again, that’s hugely complicated for a user, a user who has not seen something like this before. And I started to think, maybe we can just combine a lot of this stuff in one place. The Startup Wizard kind of grew out of that. The first part of it was my going through and sorting out, “OK, what is the minimum number of things I can ask a user to set, which will mean that at the end of the day they’ve got working WiFi, they’ve got the right language, their keyboard is right, that sort of stuff. And what’s the minimum number of controls I can give them to do that.” What’s resulted from that is something that in some ways is fairly restrictive – and I knew we were going to get complaints about this – [for example if] I’m in Japan but want to use my Pi in English, and I can’t. Well I know you can’t, but I said upfront – and we have not taken away any of the old configuration tools, they’re still all there – but again, this is for the majority of the users who have a straightforward use case, they now just say, “I’m in this country, I’m using my Pi in this language that they use in this country and my timezone is this city in this country.” And they don’t have to see the huge morass of other stuff, which otherwise they would have to wade through.
I got things wrong in it – an amusing thing which happened: there is no automated mapping in Linux between country and keyboard code. A lot of keyboards do just use the country code as their name, a lot of them don’t. And I didn’t notice how widespread the issue was with there not being a one to one mapping. So when we launched this, the first time I knew of this was when someone in Argentina complained that he was typing on his keyboard now and it was coming out in Arabic. And I went and looked at it, and saw that “OK, you’re quite right – because Argentina has a country code of AR, there’s no AR keyboard, there’s an ARA keyboard which is used by every country in the middle east. OK, we need to fix that.” Someone actually pointed [out to] me that there is no database in Debian itself, the only place where there’s a database for that is in the Debian installer. Someone helpfully pointed me to it. That’s what I spent last week doing, pulling that database [and adding it]. So, keyboards in the next release should be more accurate. That’s the sort of thing that you only really discover when you push the thing out and tens of thousands of people around the world start using it, and start telling about the problems they’re having. With all of this, I knew there is no way to get it out and have it perfect first time. In cases like this, it’s really helpful to get the bug reports back. They help you see the bits you’ve missed.
Obviously we’re in the UK. I can’t test the German language translations of stuff. Because I can’t read German, well I can read French, I can read some German. Localization in Linux is actually a huge problem – since you were asking about problems. Not that I think that I can fix it, but I think I can make tweaks to make it better. Support for localization is not as good as it should be. I’ll give you another example. There’s an application called Zenity. And Zenity is used to create GTK dialogues from shell scripts. You can say to it “create me a password dialogue, or create me a listbox or something like that.” And Zenity will then create a control the user can interact with done in GTK, so it matches stuff. And we use this for a few things. I noticed that in some of these Zenity dialogues, I’ve switched the system to German, and half the text in the Zenity dialogue box would turn into German, and half of it would stay in English. I went through Zenity’s localizations databases, and there were German translations and French translations for all the strings in there. I couldn’t work out why stuff wasn’t being translated, so I spent a few hours going through the code. And it turned out, in the version of Zenity that ships with Stretch, half the translation strings are broken. So the code will never translate the strings properly.
Max: How come they’re broken?
Simon: I think what had happened, was that people had been trying to move from one system of doing things to another system of doing things and had gone halfway through it. But no one had noticed. It seems odd to me, that I didn’t have at any point a German Pi user come to me and say: “Well, hang on: why is only half of the stuff in the box in English, half of the stuff in German?”
Max: I think users are used to the computer not working.
Simon: This is exactly the point. Certainly with Linux – I have a colleague sitting next to me who is a dyed in the wool Linux enthusiast, he wouldn’t touch a Mac or Windows machine if you forced him to – he’s part Ukrainian and he quite often tests in different languages. I said, “have you ever noticed that these dialogue boxes have half the text in Ukrainian and half in English?” And he said: “well, that’s just the way it works.” And I went “no, it shouldn’t be!” That is now is fixed. In the latest version of Zenity, someone noticed that this is broken. So now we’re shipping the buster version of Zenity on top of Stretch. We’ve done a backport to make it work. But it’s things like that. Localization is very easy to get wrong. Sometimes people will submit pull requests on our code. If people submit pull requests for bug fixes and things like that, I’m very happy to take them. When people are creative and decide, I’m going to write this new thing for you – then invariably [I will find] that they haven’t put the localization support into it, and things like that. Because they don’t think to do it. They just do it in their own language. The people who thought about the localization support in Linux – it’s actually a pretty good system, it works very well. And there are lots of tools to help you do it right. But again, as you say – people don’t tend to complain when it doesn’t work. They just accept, “well this doesn’t work”. There’s no reason why that shouldn’t work very well – because [Linux has ] a way to do it. So that’s one of the things that I’d like to see done better in the future. We’re trying to make improvements [here]. I think Pi already works very well in English. It annoys me when I look at our menu – I do switch it to other languages for testing sometimes – three quarters of it has been translated into German or French, and there’s stuff – four or five things – that obviously haven’t been. That just stands to me as – that’s annoying and I would like to be done better. There are some automated websites that help you to do translations, and people pointed out to me that you just put your code in there, and people come along and translate it for free. I’d like to set something like that up. It’s on the list of the things to do ….
Max: … but you’ve got to balance your priorities.
Simon: Exactly. But I think in terms of the Linux desktop, the internationalization support, it would be nice if it would be better. We as a company cannot go out and get all this stuff translated. We rely on users to provide us with translations. And the mechanism by which users can provide translations at the moment is awkward – it’s doing pull requests in GitHub. A comparatively small number of people are able to do that, whereas a comparatively large number of people are able to translate one of our applications into a different language. So that’s something I’d like to us to do better in the future.
Overall the Linux desktop we ship I think is pretty good, I think we’re kind of where I want to be. There are no huge changes that I want to make to it at this stage, I think most of the things that I looked up on day one and [noted down as] bad, [are now fixed].
Max: You’ve got a feeling of achievement, …
Simon: One of the things I like do is to put in a card with Wheezy as it was on day one, and one as we have it now – and – that’s a different computer. And, yeah, I do feel very proud of it. In terms of my career, the Desktop is the thing I feel most proud of having worked on, because 95 % of it is my own work. I can actually look at it and say: I did the design work, I did the implementation work, I wrote the code, I built the packages. I work with one colleague, who does a lot of the creation of images, and some of the underlying Linux stuff, and I work with a graphic designer who’s done some icon design. But I kind of feel, the Desktop is my baby, this is the thing that I’ve created. And I’m really proud of it – I feel I’ve got [a right] to be – I feel the experience in using a Pi is now comparable to using a Windows machine or a Mac, and that’s where we wanted be.
Max: That’s important to make the Pi more friendly and accessible, as a platform for everyone.
Simon: Exactly. Eben always said he wants the Pi to be a general purpose computer. And the Desktop is an important part of that. We’re now at the point where the Desktop is not going to hold it back from being a general purpose computer. And I think LXDE, four years ago, that would have provided a barrier to entry for some people. The Desktop is what I’m most proud of having achieved – and that’s a good place to be.
Max: How do you actually get inspiration for the work which you are doing? Feelings, ideas, …
Simon: Inspiration is mostly coming from me looking at something and going: “God, that’s really annoying. I must be able to do it better. ” It’s not so much positive inspiration, it’s frustration with bits that don’t work as well as they could do. It sounds like a very negative way of viewing it. But: I sit and think, “Oh God, is that really the best way of doing that?” Then I sit and think, I could do this, I could do that.
I don’t tend to look at how other things do things. I tend to look at – what’s the shortest sequence of moves I can do to get to the point where I want to be? What’s the least number of things I want to make the user do, to achieve what they want to do. And that’s kind of the thing that you want to do.
Max: Cutting out, rather than adding …
Simon: Yeah, it’s taking stuff out rather than adding steps. Many years ago I did some work on phone user interface design. Actually it was with Microsoft. I worked for a contract R&D firm, and we were working on the first video phone that was going to be launched on the market. I went to meet Microsoft’s GUI design team in Seattle – it was 1999 thereabout, and Microsoft was not regarded as being cutting edge in terms of UI design. If you want an example of bad design, you use one of Microsoft’s, rather than Apple’s which were good. Of course they’re a lot better nowadays. And they had a list of guidelines for UI design. It baffled me – because they were such good guidelines for how to design an UI – and Microsoft were producing such bad UIs. “You’ve got these brilliant guidelines, what the hell is going wrong between these guidelines and the final product?”
But one of the most important things, which stuck with me, and which I keep to nowadays is that – let me get this right – “offering the user options is no substitute for making the right decision upfront.”
It’s a very easy thing to do to say: “Well I don’t know whether we should do it like this or like this, so let’s put a box in and let the user choose.” I saw this many times, indeed in my previous career in UI design, when I worked for contract R&D, there was always this tendency, “oh well, we don’t know what the user is going to want to do here, so let’s give them the choice. Let’s make it customizable here, so they could do whatever they want.” My example here is always the compact disc player. When CD players first came out, you could program which tracks you wanted to play. For example first the track 1, then track 5 and then track 3, and then track 4. And everyone did this for the first twenty minutes they owned a CD player. And they never touched it again. If you buy a CD player [today] – on the last three to four CD players I’ve owned, you can’t program them anymore, because they realized that no one wanted to do it. They were giving users this functionality that a tiny number of users ever used, but it was on there for everyone. It’s the same sort of thing – if I make it right upfront, I don’t have to defer that decision to users because I can’t make the decision. One of the aspects of UI design that’s important is kind of having the courage to go: I think this is the way you do it. I think this is the way that is best for everyone. And you will never be right every time. And you have to accept that sometimes you’ll get such bad feedback from the users that you think: OK, that was wrong, I should have done it the other way.
And it’s happened a couple of times on the Pi. I’ve removed the clock settings. “You’ve taken the clock settings away!!!” “OK, I’ll put them back.” It’s trying to put yourself in the mindset, of OK, what’s an average person is using this for, what do they actually want to do, what are they actually trying to achieve, where do they want to get to. How can I help them get there, without sticking lots of decisions in their way. How do you want to do that? Would you like to do this or that? They don’t care about this intermediate thing, they want to be over here. And it’s how they get there. How do I get them there as quickly as possible? That’s sort of the priority that it is about – it’s about, let’s make the right decision for you, just rather than making users make the decision themselves. It does sound a little bit dictatorial, it is like “I know what’s best for you.”, but on the other hand, that’s what usability design is about – it’s about having a feeling of what is best for people.
Max: So that things work intuitively without the user having to invest lots of time into learning how the thing works.
Simon: Yes. To talk a little bit about the theory of UI design, there are various text books on UI design, but the best one is called “The psychology of everyday things”, which now I think has been renamed. If anyone wants to learn UI design, “The psychology of everyday things” is the only book you need to read.
Max: It has a teapot with a handle in the wrong way on it on the cover?
Simon: That’s the one, that’s the book. One of the things it explains, is that in your brain you make a map of how something works. And as long as the mental map matches the thing in front of you, and they behave in the same way, then you can intuitively use it. And in some cases it’s as simple as an actual map. If I go left from here, I want to see the screen shift to the left. I don’t want to press the left button, and have the screen suddenly scroll up. It’s stuff like that. It’s making stuff in your mind work like the computer, and make the thing on the computer work like the thing in the real world. And if you can do that, that’s how you get things to be intuitive. It’s making things work users expect them to work. And nowadays users understand the paradigm of computers. They understand, I move a mouse to move the cursor, I press a button. You don’t have to teach people that, whereas thirty years ago no one would have known any of that. That bit is established, so don’t fiddle with that unnecessarily, because it doesn’t help. Just try and be consistent. If you’ve got a button on the window then make it look like a button. This is where Apple I think went horribly wrong with one of their last iOS redesigns, they’re trying to make the screen look nicer, and in the process they took all the buttons away. So now you’ve just got words. Now everyone has learned, that a button looks just like a word. But when they first did it, people were like: “where have all the buttons gone?”. You can appreciate the simplicity of the design, because they look lovely, but from a usability point of view, it wasn’t a great idea.
Max: There’s no hinting anymore that these are buttons.
Simon: Exactly. It’s things like that – if something is a button, make it look like a button. Don’t make it look like something else. You do what people expect. And of course you can do the opposite. You do things that people don’t expect. And if you do things that people don’t expect, they notice them. So if you want to draw someone’s attention to something, do something they didn’t expect. The obvious example of that is bringing up a dialogue box – you’ve changed the screen, they will have to notice that. It’s working with the user’s expectations as to what is going to happen and you can either use that to make them feel comfortable and familiar, or you can use it to draw their attention to something [you want them to be able] to know. The psychology behind I think is quite interesting. I think this is where a lot of Linux programmers don’t think in those terms.
Max: I think it’s mostly about just doing something that works.
Simon: Exactly, yeah. It’s almost that it works to the mental map they’ve got. But the mental map they’ve got is not in the minds of users. So the fact that it makes sense to them, because that’s how the database behind it works – that’s kind of the problem. Managing the database is my problem, I need to do that. The users shouldn’t have to worry about that. I need to present the database to users in a fashion that makes sense to their model of reality, rather than the computer’s model of things inside it.
Max: I know what you mean, right. Sometimes there’s applications where you take several steps, one after another, but they put all the steps in one dialogue. You get confused.
Simon: You find when you are developing software, you start up by throwing everything at the screen – I need to do this thing, I need to do [that] thing, I need to do [that] thing. You throw it at the screen. And then what you should do is go back and look at it again, and say “OK, is that the best way I can do that? Is that the most easy way to do it? No of course it’s not – you don’t need to use that, I can hide this button because no one ever needs to see that.” And I think with a lot of Linux development they get to the point where it’s all on the screen working, and it’s done. And they don’t do the final step – of, how do I polish this so that it looks nice to users.
Max: That’s what people notice about Linux – it’s more rough.
Simon: Exactly. It doesn’t get the polish. And I’m doing polishing. That’s basically what my job is – there’s some things I’ve written from scratch. But, as I said earlier, without the authors of LXDE, I would have had nothing to work with, so all credit for what they have done, and their work is fantastic. But some of it just didn’t have that 5 % of polish. That’s what it takes to make this go from being a good piece of software to a great user experience.
Max: According to the Pareto principle these 5 % actually take 80 % of the time …
Simon: It can take a lot of time, but yeah …
Max: What’s actually the most surprising feedback you ever got from users?
Simon: Surprising feedback … I think the stuff I’m surprised by is when people are incredibly complimentary. I think, because every now and then someone will say something like, you know – there’s a couple of blog comments at the moment about, how fantastic the Desktop has [become], how it’s become a real computer, this should be the standard for computing, … it’s when people say things like that, that surprises me. Because I think what I’m doing is good, but at the end of the day I’m one bloke sitting in the office with one computer, who four years ago never used Linux.
Max: Which is an advantage maybe.
Simon: Yes! I haven’t accepted that it’s all broken. There must be a way to make it better. And I think that sort of feedback is still quite surprising to me. The feedback I’m not surprised by is when I change something and people go: “No, you shouldn’t have done that”. People are very resistant to change. And sometimes I think that is right. Sometimes – again it’s this experience of not knowing the way Linux does this, but I will say: “Actually it’s not right what we’re doing, we should do it like this, surely.” And then you find that everyone has gotten used to the way Linux does it, and so changing it, even if it might be better this way, is not the right thing to do.
Max: There is a bias when you get feedback in the forums – it’s more your engaged users, it’s not regular kids.
Simon: Exactly. Whenever feedback is very very positive, it tends to come from the new users, I think.
I have been called hideous things, not in our forums. When we actually did the Pixel launch – when we first called it Pixel [the transcriber: the Raspbian Desktop], it was on the forums of the Register (it’s a tech website). The comments on there were fairly outspoken. And one of them laid into me, brutally, in terms of like – I think he called me a half bit.
Max: Half bit?
Simon: Half wit is a fairly standard term of abuse, he made it more computery by calling me half bit. He explained that “putting a whole name on what is a reskinning of LXDE was blowing my role out of all proportion. It had taken this long to do this little.” You know. To some extent, I can see his point – if you looked from LXDE to Pixel, the fundamental functionality was exactly the same. But what I’d done, is that I’d applied the polish. And the polish makes a big difference. But not to him, because – I think he made the comment, “The only purpose of the desktop is to have something to put on your terminal windows.” You really aren’t my target market, he says: “why have you put a big taskbar on the top? That’s taking up some of the space I could have put terminal windows in.” You really are not my target market here. This is not for you. If what you want is a big screen of terminal windows, there are many other places in the Linux world you can get that, don’t come here. You’re not going to make everyone happy with what you’re doing. But it’s when you see feedback from people who actually clearly understand what you’re trying to do, and clearly actually appreciate [it]. It’s when you see gratitude and a level of understanding of what you’re doing. To contrast with people who clearly don’t understand what you’re trying to do. Don’t understand how much work has gone into it in some cases. Because you’re not doing what they want. It’s those messages you get when people say: “You’ve made this so much nicer to use than it was previously. And all the changes are positive.” It’s when you get those, that you feel what you’re doing is worthwhile. And again – I’m not perfect, I make mistakes. Stuff goes out with bugs, stuff goes out with usability decisions that may not be perfect. But we’re all trying to make this as good a product as it can be. The Desktop is my baby, I want it to be as good as it can be, that’s what I live to do at the moment, basically. It’s the most rewarding job I’ve had in 25 years of engineering.
Max: That’s actually wonderful, to be in a place where you feel happy to do what you’re doing.
Simon: I’ve spent – before I was here, I spent nine years in a job where I had to drag myself out of bed every morning to go in, cause I loathed what I was doing. And here I get up every morning enthusiastic about going to the office to do what I’m gonna do. I’ve almost forgotten you could have a job like that. I sort of thought that doesn’t happen. I genuinely come in every morning and I enjoy what I do. And I think that helps a great deal, because I care about the product. This product is almost an extension of me. This is the operating system that I – even on a purely selfish level – this is the operating system I want to use. When I first started at Pi I did all my work on the Mac. I wrote code on the Mac, I downloaded it to the Pi. I now do all my work on the Pi. I use my Mac for email and web browsing, and that’s about it. I use Geany on the Pi for all the code development, I sit typing at my Pi …
Max: You use Model 3 B+?
Simon: Oh yes, it’s the fastest one. But yeah, and similarly with the x86 version – that’s the operating system that Eben runs on his Mac, and that sort of buy into it is really nice.
It’s not really so much a feedback thing … it’s when I see photos or video of people in Africa, and they’ve got a classroom setup with Pi’s and everyone is running my desktop. Seeing that the thing I designed is being used in all this places, it’s amazing.
I did a lot of UI design in my first ten years in my career in contract R&D, but it was all for fairly specialized products. So you never really got to see them being used out in the real world. But with this … Eben will go to CNN or somewhere, and they had Pi’s on the screens on the wall. He just likes to take photos of places he’s seen the desktop being used. He brings them back and says: “look at this, they’re using it here”.
It’s still a thrill to see it. Kind of pinch myself, am I dreaming, that these people are using the thing I designed. It’s an incredible feeling. It makes it worthwhile, even if I didn’t enjoy doing it – which I do.
Max: Speaking of the x86 version, what are the plans for it? Are you planning to make a kind of alternative Linux distribution for everyone to use?
Simon: We will continue doing x86 releases as much as possible in sync with Raspbian releases. Keeping the two products as similar as possible from a user point of view. The main difference between the two is that there are some free applications which we have on the Pi, we can’t have on x86. I don’t think it’s a question of having plans as such for it. Again, you get people saying, that as far as they’re concerned it’s the best desktop / the best Linux distribution. I’m not intending to take on Ubuntu or Debian or whatever. It’s trying to make things nicer, and if people are going to have a nicer experience on their laptop as well as on their Pi, then that’s absolutely great. We intend to continue producing it, it’s now a fairly automated process to produce x86 builds alongside the ARM builds, so yeah, we’re going to continue putting it out there. Its intention was to enable people with lower powered – because it’s based on Debian – it’s intention was to make people with lower powered old computers be able to use it. I think it’s a pretty decent Linux distribution in it’s own right nowadays. Again, it’s Debian with our skin on top of it – don’t get me wrong, it’s not all our work, it’s mostly Debian, with the polish on top of it.
Max: Do you have numbers how far it has spread?
Simon: We probably have download numbers for how many copies were downloaded. I think in terms of Pi desktop users it’s probably 95 % Raspbian. As for the x86 versions – we released it as an experiment. It was almost a joke, because Eben and I were sitting and chatting in the office. We got to the place where we were quite pleased with the way the desktop was going. And he went: “Wouldn’t it be great, if I could get this on my laptop? I’d like this on my laptop.” And I started thinking about this. I went home, and I was bored one Saturday at home. And I thought – I wonder if we can do that. There must be an LXDE version of Debian, and I downloaded the LXDE version of Debian. I then spent about two hours, trying to get persistence to work on it. Having created an image that would boot on my Mac at home, with persistence based on the LXDE image. And I got that working, and I thought, let’s see what I can do. I think by that evening I had the Raspberry Pi desktop running on that USB stick. I brought it in, Eben had been at a conference over the weekend and he came in on the Monday, and I told him: “have a look at this”. I plugged the USB stick into my Mac, and booted it into the desktop. And he went: “Wow, you did it. Are you going to ship it, then?” I said: “If you think we should.”
It literally came out of an off-the cuff remark of Eben, and me being bored at home, and thinking: how hard can it be, I’ll have a go. It turned out it wasn’t actually that difficult.
Max: It’s actually interesting that such a major thing – you’ll think that it will take a lot of time, but it doesn’t, but other things – like the qPDF …
Simon: Yeah, it takes ages. The only thing that took as a long time on the x86 image was actually trying to get one which booted on as many platforms as possible, because we have a lot of issues with certain models of Mac. We had two difficult platforms, which were: my Mac mini at home, and Eben’s MacBook. And we wanted it to work on both of them. My Mac in the office, which was a different generation of MacBook – everything worked on it, every image would boot on it. But it took us ages to try and fiddle with the low-level Debian BIOS stuff and imaging, and we spent a couple of weeks playing with that. A lot of it I did at home on weekends, trying multiple things in terms of the creation of the Debian image. To get it to boot. Eventually we found a way to create an image that would boot on both my Mac at home, and Eben’s Macbook. That’s the one we’re shipping, because it works on the two reference cases. I think we had issues because Debian actually split the live image and the installable image – those were two different things. And the installable image worked on far more platforms than the live image did. But we were at the time based on the live image. So we had kind of bring those two together, to have something that was both installable and booted on as many things as possible. And that was the difficult bit about it, in theory we shouldn’t have had to do that – Debian should already have done that for us. But actually getting our desktop on it was a relatively quick process. The process was up and running within a day.
Max: You have everything in it, like the wizard as well?
Simon: The one we just released has everything in it – the startup wizard, the preferred apps, the only difference are as I said things like Mathematica, which we can’t ship. Everything else should be – every GUI change that we make to the ARM version …
Max: That’s automatic as well. One thing I wanted to ask you is about the package updates, because that’s something which some users don’t know how to do. Is there any plans to do automatic package updates? Security specifically.
Simon: There’s an automatic updater in the wizard. The first time you run the startup wizard, [Raspbian is updated] so you know you’ve got the latest and greatest at that point. Making updates automatic is a difficult thing, because for every person who is not updating their system, because they don’t know they should – and who you probably want to help – you have another one who is not updating their system because they know if they update their system this package over here is going to break. And that application is going to stop working. And it’s one of these areas where I’m quite cagey about making a change, because – mentioning security: it’s like when we made these security changes. The thing I live in fear of is breaking stuff. If someone finds their Pi worked yesterday, and it doesn’t work today, and it’s my fault that it’s changed because they pulled down an update – that’s my nightmare scenario. A couple of times, where we put bad packages on the repo, that I hadn’t adequately tested – and it invariably happens when I go on holiday. I go on holiday. And I find, the second day of my holiday, there’s bug reports coming in – for a package we shipped.
Max: Do you actually sit down and fix these bugs? You can’t live with the guilty conscience?
Simon: I tend to be at home anyway. I have spent the first week of various holidays fixing bugs from home, and trying to get the system sorted out, because – yeah, I do feel guilty about that. I don’t like breaking stuff for people. My worry about automatic updates is that through no fault of our own in some cases, stuff will break. Because – the whole Debian dependency issues, it’s very easy for a package to go up to a new version, and we don’t have the relevant backport to run it, and so that package which worked yesterday now doesn’t work today.
I wouldn’t want to do it automatically. Until I could be sure that it wasn’t ever going to break anything for anyone, I wouldn’t want to do it automatically.
Max: And for security critical stuff?
Simon: Even for security critical stuff. It’s a difficult decision. Microsoft did their Creator’s update on Windows 10, whenever it was – last year? My Ethernet stopped working on my Windows PC. That’s inexcusable. My networking worked before I did this update, and now it doesn’t. As a reasonably tech-savvy user it took me two hours to get my computer [running again].
Max: Especially when you don’t get networking.
Simon: Exactly, it’s quite hard to do a diagnosis without the advice of the Internet. So I’m cagey about it. It is one of the things we have looked [into] – some form of GUI tool to do updates. In fact you can do system updates through the existing add/remove programs tool. Looking at the design of that tool, it actually runs that as a separate application. There’s no reason why I couldn’t pull that out as a separate application. And maybe checking for updates on boot and things like that. It’s all doable, and we are getting to a point where this is the sort of thing we will start looking at.
Max: It’s actually something which is really great about Linux compared to Windows. Your computer doesn’t force you to do these updates. That’s something I really really hate about Windows. And it shut downs – imagine doing a presentation, and it shuts down. That’s where you’ve got to draw the line. As we discussed before you’ve got to make decisions for users, but you can’t force the user to stop working on the computer when he doesn’t want to.
Simon: It always upsets users if you break stuff for them. Even if you do it with the best intentions. There are also some iOS applications which I write – there’s a crossword solver application. And every now and then I push out updates, and I remember I pushed one out that broke on a certain version of iOS that I hadn’t tested it on. And you get a flurry of users who are furious that it’s broken, and you get a flurry of other users who are probably more tech-savvy, who go “just to let you know this is broken.” I spent a week at Christmas fixing my iOS application a couple of years ago. It was Apple who had broken stuff, not me, but I had to find a workaround for it. You almost feel more guilty about the users who are nice about it, who go “yeah, I understand this is difficult.” – “no, I will get you a fix by tomorrow!”. – it’s always hard. Updates are a tricky thing, and it’s very easy to break stuff.
One of the things that Apple do, which I think is inexcusable is – on iOS, they download one and a half Gbytes worth of image update, when I move from iOS 10 to iOS 11. They auto download it as soon as you’re connected to WiFi, in the background, without asking you. You want to use one and a half Gbytes of my bandwidth, you ask me first. That’s inexcusable. I actually registered a bug, and said: this is downloading data of a huge size. They said: no – it’s a security update, you have to have it, therefore we have to do everything to get you on the platform. I said: no you don’t, people have to pay for their data. There are people who have a monthly data cap. They’ve got five iPhones in the house, all downloading. It’s things like that – you’ve got to strike a sensible balance. At the moment we don’t do things in terms of forcing updates, or even advising updates. It would probably be good if we did, but I’ve not made a new decision of what we will do about that as of yet.
Max: Have you actually thought about having a kind of notification area?
Simon: We do have notification stuff. The LXDE notification stuff is not great actually, it puts windows up at the corner of the screen. But anytime we have an application which uses those, I tend to rewrite the application, because they don’t look good. But it’s certainly possible to run something at startup, to see if there are any updates, and put a dialogue box on the screen. There are things we could do, but it’s probably in an area we will start looking at, just because we got to the bottom of the more obvious stuff to do.
Max: What are the things which make developing for you easier, and what makes it harder? The kind of tools you use.
Simon: Geany is great. As I said, I do most of my developing on the Pi nowadays.
Max: Does it also do code hinting?
Simon: Yes. Geany does pretty much everything. Things like the way it pulls out function names for you, and easily lets you find things like that is really good. I now miss that when I use other editors, actually. [Other tools I use:] Glade – which is the tool for GTK window design. I use that a lot, although I’ve had to build the old version from source, because they are now only supporting the new version which only supports GTK 3, “no, I want the old version, please, ’cause I can develop for GTK 2 with the old version!”
There are a couple of tools which are useful for my work. There’s a tool called “A Widget Factory”. AWF. That is basically just a screen with all the GTK widgets on it. And I have two version of it, a GTK 3 one and a GTK 2 version. So I try to keep my theme in sync between the two, I use those. It’s a really good way of seeing – they don’t look the same.
Max: Do you actually have two Pi’s next to each other, one running GTK …
Simon: No, ’cause I can run that application in two or three modes, so I just have two windows on the screen. My goal with the theme is to make the windows look the same. So you can do it on the same platform. That’s quite useful. Git and GitHub are marvellous. I’d be completely stuck without GitHub. I think GitHub is great.
Max: Internal documentation, do you do it in-line with the source?
Simon: Mostly yes. I just comment the code. I don’t do a huge amount of external documentation. We have people working on documentation independently of me. My intention is to write stuff that is obvious enough to use that they can work it out without me telling them how to do it. I try and use helpful variable names, helpful function names, comments where it’s not obvious, what the code is doing, mostly as notes to me as much as anything else.
Other things that are useful – one of the things that frustrates me is that Linux doesn’t have a really good diff tool, in terms of a nice graphic diff tool. The one I use is meld, which is the best I found, but it’s not as good as things like “Beyond Compare” on the PC, which is really good. I found myself moving Pi code on to the Mac, so that I can use the diff tool in Xcode in it. There’s some functions of Xcode I use a lot. I think it’s most of the tools I use for development, stuff I use on a daily basis. That’s probably about it, I think. And in terms of stuff that makes life easy – nicely structured code is always good. I always try to write code from the point of view that I may have to go back and do something else with it. Doing it right the first time always helps.
Max: Do you know this two systems theory, when you build the first system you better throw it away?
Simon: Yes. I’ve done that in the past. Particularly when you’re less experienced. It’s one of the things, I find now when I go back and look at some applications I wrote in the first year, for the Pi, I go back and I go “oh, why did I do that? Oh, that was bad.” If I find those, I fix them nowadays. I probably might find, that in four years’ time I look back at the stuff I’m writing now, [I will feel the same]. All software development is a learning process. You get better as you get along, you get better the more you do. The more you understand your art.
GTK is one of the things, the more you learn the little foibles of it, the more you use it, the better you can make it behave. GTK itself is a very useful tool. As a UI designer it’s very helpful to have constraints. GTK is great from that point of view. Any UI toolkit is kind of great – I don’t have an empty screen and have to decide how this window is going to look. I know how this window is going to look, because it’s going to look like all the other windows. I know how the buttons are going to look, because they are going to look like all the other buttons.
Max: So you focus on the application itself?
Simon: Yeah. Rather than the window dressing. It’s good, that it’s separate. Because all that stuff I can do in the theme. If I want to make all my applications look nicer, I can change the theme. If I want to make the application work better, I don’t have to worry about making it look nicer.
Max: As a user, I prefer applications to be predictable, to look the same. Do you know WinAMP? It doesn’t look like a Windows application.
Simon: Oh yeah, it doesn’t look like a Windows application. Those tiny little … Yeah. And we have a few developers who’ve written apps for us, who want to make their own thing that looks different from everything else. And [I go whenever they do it]: “don’t do it”. I understand the desire to do it. I understand the desire to make the thing look like, “this is mine”. It is branding, it is the same way we’re branding the desktop. But it’s often not helpful to users. As much as anything that’s my argument, because you want the environment consistent. And someone who wants to do their own thing is not being helpful in terms of creating consistency.
Max: I think that’s really the idea behind it, isn’t it, that you want to put your own name on it.
Simon: Yeah, exactly. A couple of others who produce stuff for Pi do that. That’s fine, I try to dissuade them from doing it, but at the end of the day, if they develop for us, I can’t go “no, you shall do this!”
Max: “The tenth commandment.”
Max: What inspires you to develop?
Simon: What inspires me? Making it better. Is this as good as it can be? And if not, how can I make it better? It’s making the user experience one that I enjoy as a user. I want to sit there and find this a pleasant experience for me. If it’s a pleasant experience for me, I hope it’s a pleasant experience for other people. That’s what design is. If you speak to any industrial designer, design is making things better for people.
Max: It’s about removing friction. I remember this example with the fridge in the book “The design of everyday things” where the user would think, there’s two knobs or something, one is for the deep freezer compartment and one is for the regular. And actually it was some kind of weird mix … Or like these taps in Britain – it says “careful, extremely hot water”. But what are you supposed to do?
Simon: Light switches that don’t work the same way. Things like that. I think I saw a documentary with Seymourpowell, the industrial designers in London. They said: a designer wants to make things better.
Max: What inspired you to go into UI design?
Simon: It was many years ago. I studied engineering at university. And I specialized in software. But I always appreciated good design. [For instance] I had a Canon camera, and it was so satisfying to use, because everything had been done nicely. And I didn’t smoke. I’ve never smoked. But I had a Zippo lighter, because it was such a lovely thing. I spent my time thinking – I have no artistic talent at all. I can’t draw, I can’t paint, I can’t sketch things. I don’t know how you make beautiful things like that. But I really wished I could. How do I combine my wanting to create beautiful things with doing software? And the logical place those met was user interface design. I interviewed with Cambridge Consultants, my first employer. They showed me – ’cause they were just starting in UI design then, and they developed technologies for user interface simulation. So they were able to show me that they have designed a hifi, and they had a screen which looked like this hifi. And you could click buttons on the screen and everything responded. And you could develop the whole UI in this virtual world. I saw this demonstration, and I said “I want to come and work for you and do that.” I think that was why I got the job, because I was so utterly enamored with what they’ve done. That is what I want to do. I could see a way that I could actually – if I could do that, I’d be happy. Because that means I can get to make beautiful things, but I don’t have to be able to draw and color and design. I can make beautiful things like that. And that was where, I think, it all stemmed from for me.
Max: So it’s probably like the hardware engineers which come to Raspberry Pi…
Simon: I’ve always been very frustrated, when I looked at industrial designers, and I really wished I could do what they did. But as I say you need to have talents, that I don’t have for that.
Max: Product design like cases, etc.?
Simon: Exactly. When I worked at Cambridge Consultants, I eventually moved from a software group to an industrial design group. Because I wanted to be thought of as a designer rather than an engineer at that point. I remember it as a very unpopular move with my boss in software engineering. He said: “You’re making a huge mistake. You’re never gonna get away with that.” And I said: “this is what I feel I have to do.” I was a software engineer who worked very closely with industrial designers, and I worked on interface design with them. I found it hugely stimulating to be in an office with people who were doing all this stuff which I wished I could do, who were doing the case design, the appearance design, laying out the graphics, and this sort of stuff. And it was the next best thing to being able to do it myself was working with them and contributing to the product that they were creating. And that’s something where my inspiration for UI design came from. It was wanting to do something I couldn’t do and finding the next best thing, which was GUI design in software.
Max: What are some of the features or changes you personally would like to see in Raspbian, things which you haven’t done yet, which we haven’t discussed. Maybe things which are really out there, which are really really hard to do?
Simon: To be honest, I started on day one, I made a list of all the things I wanted to do. And I think I now actually got to the bottom of the list of stuff I wanted to do.
Max: Better make a new list.
Simon: I think I do need to make a new list. I’m not really sure what’s going be on that list as yet. It’s a hard question to answer. If you’d asked me that a year ago, or two or three years ago, I’d have had a much clearer idea of what the answer was. I now kind of got to the bottom of my list of original things. There is a constant maintenance task with all this stuff. Every two years, we’re going to have to support a new version of Debian.
Max: I hope the team can grow.
Simon: In some of the ways I don’t want it to – because I enjoy it.
Max: You actually enjoy fiddling with GTK 3 to make it behave?
Simon: I do sit and swear and curse at it, but I wouldn’t let anyone else do it, because …
Max: … because it’s your baby.
Simon: … because it’s my baby, and I want it to be right. It’s associated with me. There are people who know that Simon Long does GUI design for Raspberry Pi. It’s not a question of not trusting anyone else to do it. It’s a question of – I’ve spent so long learning the intricacies of it, that it’s almost that I’m the best person to do it anyway.
I was a manager for nine years at my previous job, and I hated it.
Max: You actually enjoyed doing the tasks instead of delegating them?
Simon: I enjoyed doing it. My nightmare is that Eben comes along and says: “Ah Simon, we’ve got you some staff to do things. You’re going to sit upstairs and make decisions.” And I’d go: “Nooo, don’t take it away from me.” Because I do enjoy having my hands on the code. And I really wouldn’t enjoy being taken away from it. In some ways I’m happy to carry on doing this, because I find it rewarding. I find it rewarding to [be able to say]: “Look, I did that.” As a manager I never really felt I could say, “I did that.” – my people did it, I didn’t do it. Whereas now I sit and say: “I did it.”
Max: A more technical question: what will we gain with the OpenGL driver? Advantages / disadvantages?
Simon: Basically it will give faster and smoother animation in anything that uses OpenGL. OpenGL applications, obviously. The intention, I think, is that everything will effectively be rendered by OpenGL, the desktop, etcetera will go through it, which means that you will get the benefits of hardware acceleration on all of it. So in theory, it will be a faster, smoother experience for everyone. I don’t think there are any advantages over and above that.
Max: Do I understand this correctly, do you actually need to do tweaks to the desktop? Or will it benefit automatically from it?
Simon: Yeah. But by how much – it is not an area in which I am a technical expert at all. OpenGL is one of those black arts. My understanding is that it’s basically trying to get better hardware acceleration under the system, for everything that goes on the screen.
Max: So, for instance, the Pi 1 will perform better, ideally?
Simon: Potentially yes, although again, one of the issues I think with the OpenGL driver is how much memory it uses. So we might get issues on the Pi 1. I think we’ve largely dealt with those, but – the obvious improvements will be in things like OpenGL games. They’re all obviously be going straight to the hardware. You should see a general improvement in general video performance.
Max: Wayland, Weston. Completely abandoned?
Simon: It’s largely on the shelf, yeah. I don’t think it’s completely abandoned. It may come into it’s own at some point. But for now, we’ve not done any active development work on it for a couple of years.
Max: What’s your favorite way to pass away time on a Pi?
Simon: (laughs) I’m boring, I like to program to make stuff better, I have to say. I will quite often go home in the evening and if there’s a technical problem I didn’t quite get the end of, I’ll think, that will be interesting. I will quite often download code from GitHub and hack it on my Pi at home.
Max: Just because you can’t resist?
Simon: Yeah. I want to make it better, I can’t leave it alone. If I’m using a computer for pure recreation – I don’t use a Pi. I use a Pi as a development platform, but I enjoy the development [so much]. I don’t use Pis for things like web browsing, because even with Chromium, the experience is much better on a Windows machine or Mac, because web browsing requires so much horse power. But the thing I use my Pi for in terms of enjoyment is the same stuff I do at work.
Max: It’s more like a holiday, when you’re at work.
Simon: My partner at home is fully aware that if I’m sitting upstairs in my study, I’m probably typing stuff for the Pi. That is what I enjoy doing.
Max: I met Martin at the Raspberry Pi fields event, and he told me about the new help. You’re planning to release help for the new issue, which is going to be shipped with Raspbian.
Simon: Martin’s done some great work in terms of tidying up our web resources. His web pages are very good. And seriously, you should have a look at the links in the menu, because he’s done a lot of work on them, and I think they’re great. And yeah – the intention is that we will take that offline in some way, whether it’s static web pages that are on the Pi, or that we do it as an Electron application, although Electron applications aren’t terribly efficient in terms of space, because you end up with the whole Chromium browser built into each one of them. We already got one on the system for Scratch 2.
His help resources are great, and yes having them available offline is a very great thing to do, so we will do that at some point in the future.
Max: No concrete plans yet.
Simon: Not as yet.
Max: That would obviously be a thing where you could pull updates. The help gets better …
Simon: Again, that’s one of the advantages of having help that is not on the platform, as it updates automatically – so you have a decision to make there.
One of the things I did with the recommended applications – that actually updates itself whenever it runs. So I’ve now done an application which auto-updates on start. Because I wanted to make sure that people always had the latest and greatest list of recommended applications. So I’ve now proved the concept that it’s possible to make an application that the first thing it does is to update itself. With the help we could do something similar.
Max: Maybe if you give the users an “undo” button. Something breaks for them, they can roll back. The problem obviously is figuring out which thing broke the system.
Simon: Which is not that easy. You should be able to do that through apt. And unfortunately with apt it’s not always easy to undo it.
Max: One thing I do is, I just update the packages, because I trust the Raspberry Pi Foundation to do the right thing. I don’t actually worry that some things might break.
Simon: We try and do the right thing, but as I say we’re not infallible. So every now and then we push stuff out that shouldn’t have been the right thing. But we try and keep that to a minimum.
Max: With the SD corruption issues, I was thinking there’s a lot of logging in Raspbian going on …
Simon: In terms of SD corruption, one of the things we considered doing, which we may do in the future is what we do with the x86 image. Which is effectively to ship a fixed image with a persistent partition on top of it. In which case you could always go back to a good state. That’s one of the things we’ve considered doing. You have a base partition, and then you apply persistence on top of it.
Max: Basically an overlay.
Simon: Exactly. That’s something we thought of doing. I don’t have the time [to do it], but it’s probably the way to go in the future.
Max: One of the first things which I actually saw when I arrived in the UK, was a shuttle – when you get out from Stansted airport they have a shuttle, which goes to the terminal. And there was a Raspbian [frozen during the start].
Simon: It does happen. We get used quite a lot in displays. And the ability to recover from something like that is obviously a good thing. But yeah, SD cards aren’t a perfect technology. Stuff to make that more robust is good. I suspect we’ll move to an overlay file system on top of a base partition. Which at least means that you can go back to something which you know works, if not necessarily with all your [existing] work on it.
Max: Do you have any plans for industrial users which don’t touch the system, for a read-only image?
Simon: People have looked at read-only images. We’ve not looked into it internally – it gets discussed occasionally, but we’ve not done any work on it. It’s certainly feasible to do it.
Max: The last question I’ve got is about ARMv6 binaries, and ARMv7 binaries. Basically, what you do is you support all the Raspberry Pi’s.
Simon: We don’t want to orphan people who bought Pi 1’s – because by definition they may be on limited budgets. It’s only 35 $ for a new Pi, but they may not have 35 $. So we try and support all the old platforms wherever possible. The only place where we don’t at the moment is the Flash player. The Flash player is only available as an ARMv7 binary, that’s all Adobe provide. So there’s very little we can do about that. We don’t consciously want to orphan old platforms with new versions of software.
Max: The reason I’m asking is about performance. Obviously ARMv6 binaries don’t use all the features which ARMv7 binaries would use.
Simon: In some cases we actually have hybrid libraries, some of our memory access libraries, for example. They look to see whether they are running on an ARM 6 or an ARM 7 and run different code accordingly. Which is something which we could consider doing.
Max: The kernel is also optimized … core libraries [where the biggest impact would happen]
Simon: Yes. These are things like memory copies, memory compare. Stuff which is general system overhead, those are optimized for various platforms. It’s a complicated thing to get to work. But it does work. We probably wouldn’t do it for everything – but when we find places where we can get an advantage. We probably wouldn’t optimize an individual application. But if we can optimize for multiple applications – and we’ve got a guy who’s very good at this – at breathing on low-level bits of code for that purpose. We have a continuous program going on of looking at stuff whereby we can get ourselves a performance advantage by optimizing.
Max: So essentially, what happens, compared to other platforms, where basically it’s more about cheap hardware, with the Raspberry Pi you get a computer which gets better all the time, because the software grows better all the time.
Simon: We hope it does, yeah.
Max: Any things you would like to mention, any cool things, ideas?
Simon: I think we covered most of the stuff which is floating about in my head at the moment, so I think it’s great.
Max: Thank you for taking the time.
Simon: No problem at all, very nice to see you again.