Steve's blog
   


Steve About
Steve's blog,
The Words of the Sledge
steve@einval.com

Subscribe
Subscribe to the RSS feed.

Links

  • Home
  • Debian
  • PlanetDebian
  • Search PlanetDebian
  • Friends

  • Matthew Garrett
  • Jonathan McDowell
  • Jo McIntyre
  • Martin Michlmayr
  • Andrew Mobbs
  • Mike Pitt
  • Daniel Silverstone
  • Andy Simpkins
  • Neil Williams

  •        
    Sunday, 27 August 2023

    We're back!

    It's August Bank Holiday Weekend, we're in Cambridge. It must be the Debian UK OMGWTFBBQ!.

    We're about halfway through, and we've already polished off lots and lots of good food and beer. Lars is making pancakes as I write this, :-) We had an awesome game of Mao last night. People are having fun!

    Many thanks to a number of awesome friendly people for again sponsoring the important refreshments for the weekend. It's hungry/thirsty work celebrating like this!

    14:03 :: # :: /debian/uk :: 0 comments

    Sunday, 02 October 2022

    Firmware vote result - the people have spoken!

    It's time for another update on Debian's firmware GR. I wrote about the problem back in April and about the vote itself a few days back.

    Voting closed last night and we have a result! This is unofficial so far - the official result will follow shortly when the Project Secretary sends a signed mail to confirm it. But that's normally just a formality at this point.

    A Result!

    The headline result is: Choice 5 / Proposal E won: Change SC for non-free firmware in installer, one installer. I'm happy with this - it's the option that I voted highest, after all. More importantly, however, it's a clear choice of direction, as I was hoping for. Of the 366 Debian Developers who voted, 289 of them voted this option above NOTA and 63 below, so it also meets the 3:1 super-majority requirement for amending a Debian Foundation Document (Constitution section 4.1.3).

    So, what happens next?

    We have quite a few things to do now, ideally before the freeze for Debian 12 (bookworm), due January 2023. This list of work items is almost definitely not complete, and Cyril and I are aiming to get together this week and do more detailed planning for the d-i pieces. Off the top of my head I can think of the following:

    • Update the SC with the new text, update the website.
    • Check/add support for the non-free-firmware section in various places:
      • d-i build
      • debian-cd
      • debmirror (?)
      • ftpsync (?)
      • Any others?
    • Uploads of firmware packages targeting non-free-firmware.
    • Extra d-i code to inform users about what firmware blobs have been loaded and the matching non-free-firmware packages. Plus information about the hardware involved. Maybe a new d-i module / udeb for this? Exact details here still TBD. Probably the biggest individual piece of work here.
    • Tweaks to add the non-free-firmware section in the apt-setup module if desired/needed.
    • An extra boot option (a debconf variable) to disable loading extra firmware automatically, then exposed as an extra option through the isolinux and GRUB menus. d-i "expert mode" can also be used to tweak this behaviour later, except (obviously) for things like audio firmware that must be loaded early if they're going to be useful at all.
    • Update the image build scripts to include the n-f-f packages, only build one type of image. I'll do my best to keep config and support around too for images without n-f-f included, to make it easier to still build those for people who still want them.
    • Matching updates to docs, website, wiki etc.
    • ...

    If you think I've missed anything here, please let me and Cyril know - the best place would be the mailing list (debian-boot@lists.debian.org). If you'd like to help implement any of these changes, that would be lovely too!

    15:15 :: # :: /debian/issues :: 0 comments

    Tuesday, 27 September 2022

    Firmware again - updates, how I'm voting and why!

    Updates

    Back in April I wrote about issues with how we handle firmware in Debian, and I also spoke about it at DebConf in July. Since then, we've started the General Resolution process - this led to a lot of discussion on the the debian-vote mailing list and we're now into the second week of the voting phase.

    The discussion has caught the interest of a few news sites along the way:

    My vote

    I've also had several people ask me how I'm voting myself, as I started this GR in the first place. I'm happy to oblige! Here's my vote, sorted into preference order:

      [1] Choice 5: Change SC for non-free firmware in installer, one installer
      [2] Choice 1: Only one installer, including non-free firmware
      [3] Choice 6: Change SC for non-free firmware in installer, keep both installers
      [4] Choice 2: Recommend installer containing non-free firmware
      [5] Choice 3: Allow presenting non-free installers alongside the free one
      [6] Choice 7: None Of The Above
      [7] Choice 4: Installer with non-free software is not part of Debian
    

    Why have I voted this way?

    Fundamentally, my motivation for starting this vote was to ask the project for clear positive direction on a sensible way forward with non-free firmware support. Thus, I've voted all of the options that do that above NOTA. On those terms, I don't like Choice 4 here - IMHO it leaves us in the same unclear situation as before.

    I'd be happy for us to update the Social Contract for clarity, and I know some people would be much more comfortable if we do that explicitly here. Choice 1 was my initial personal preference as we started the GR, but since then I've been convinced that also updating the SC would be a good idea, hence Choice 5.

    I'd also rather have a single image / set of images produced, for the two reasons I've outlined before. It's less work for our images team to build and test all the options. But, much more importantly: I believe it's less likely to confuse new users.

    I appreciate that not everybody agrees with me here, and this is part of the reason why we're voting!

    Other Debian people have also blogged about their voting choices (Gunnar Wolf and Ian Jackson so far), and I thank them for sharing their reasoning too.

    For the avoidance of doubt: my goal for this vote was simply to get a clear direction on how to proceed here. Although I proposed Choice 1 (Only one installer, including non-free firmware), I also seconded several of the other ballot options. Of course I will accept the will of the project when the result is announced - I'm not going to do anything silly like throw a tantrum or quit the project over this!

    Finally

    If you're a DD and you haven't voted already, please do so - this is an important choice for the Debian project.

    18:46 :: # :: /debian/issues :: 0 comments

    Tuesday, 19 April 2022

    Firmware - what are we going to do about it?

    TL;DR: firmware support in Debian sucks, and we need to change this. See the "My preference, and rationale" Section below.

    In my opinion, the way we deal with (non-free) firmware in Debian is a mess, and this is hurting many of our users daily. For a long time we've been pretending that supporting and including (non-free) firmware on Debian systems is not necessary. We don't want to have to provide (non-free) firmware to our users, and in an ideal world we wouldn't need to. However, it's very clearly no longer a sensible path when trying to support lots of common current hardware.

    Background - why has (non-free) firmware become an issue?

    Firmware is the low-level software that's designed to make hardware devices work. Firmware is tightly coupled to the hardware, exposing its features, providing higher-level functionality and interfaces for other software to use. For a variety of reasons, it's typically not Free Software.

    For Debian's purposes, we typically separate firmware from software by considering where the code executes (does it run on a separate processor? Is it visible to the host OS?) but it can be difficult to define a single reliable dividing line here. Consider the Intel/AMD CPU microcode packages, or the U-Boot firmware packages as examples.

    In times past, all necessary firmware would normally be included directly in devices / expansion cards by their vendors. Over time, however, it has become more and more attractive (and therefore more common) for device manufacturers to not include complete firmware on all devices. Instead, some devices just embed a very simple set of firmware that allows for upload of a more complete firmware "blob" into memory. Device drivers are then expected to provide that blob during device initialisation.

    There are a couple of key drivers for this change:

    • Cost: it's typically cheaper to fit smaller flash memory (or no flash at all) onto a device. The cost difference may seem small in many cases, but reducing the bill of materials (BOM) even by a few cents can make a substantial difference to the economics of a product. For most vendors, they will have to implement device drivers anyway and it's not difficult to include firmware in that driver.

    • Flexibility: it's much easier to change the behaviour of a device by simply changing to a different blob. This can potentially cover lots of different use cases:

      • separating deadlines for hardware and software in manufacturing (drivers and firmware can be written and shipped later);
      • bug fixes and security updates (e.g. CPU microcode changes);
      • changing configuration of a device for different users or products (e.g. potentially different firmware to enable different frequencies on a radio product);
      • changing fundamental device operation (e.g. switching between RAID and JBOD functionality on a disk controller).

    Due to these reasons, more and more devices in a typical computer now need firmware to be uploaded at runtime for them to function correctly. This has grown:

    • Going back 10 years or so, most computers only needed firmware uploads to make WiFi hardware work.

    • A growing number of wired network adapters now demand firmware uploads. Some will work in a limited way but depend on extra firmware to allow advanced features like TCP segmentation offload (TSO). Others will refuse to work at all without a firmware upload.

    • More and more graphics adapters now also want firmware uploads to provide any non-basic functions. A simple basic (S)VGA-compatible framebuffer is not enough for most users these days; modern desktops expect 3D acceleration, and a lot of current hardware will not provide that without extra firmware.

    • Current generations of common Intel-based laptops also need firmware uploads to make audio work (see the firmware-sof-signed package).

    At the beginning of this timeline, a typical Debian user would be able to use almost all of their computer's hardware without needing any firmware blobs. It might have been inconvenient to not be able to use the WiFi, but most laptops had wired ethernet anyway. The WiFi could always be enabled and configured after installation.

    Today, a user with a new laptop from most vendors will struggle to use it at all with our firmware-free Debian installation media. Modern laptops normally don't come with wired ethernet now. There won't be any usable graphics on the laptop's screen. A visually-impaired user won't get any audio prompts. These experiences are not acceptable, by any measure. There are new computers still available for purchase today which don't need firmware to be uploaded, but they are growing less and less common.

    Current state of firmware in Debian

    For clarity: obviously not all devices need extra firmware uploading like this. There are many devices that depend on firmware for operation, but we never have to think about them in normal circumstances. The code is not likely to be Free Software, but it's not something that we in Debian must spend our time on as we're not distributing that code ourselves. Our problems come when our user needs extra firmware to make their computer work, and they need/expect us to provide it.

    We have a small set of Free firmware binaries included in Debian main, and these are included on our installation and live media. This is great - we all love Free Software and this works.

    However, there are many more firmware binaries that are not Free. If we are legally able to redistribute those binaries, we package them up and include them in the non-free section of the archive. As Free Software developers, we don't like providing or supporting non-free software for our users, but we acknowledge that it's sometimes a necessary thing for them. This tension is acknowledged in the Debian Free Software Guidelines.

    This tension extends to our installation and live media. As non-free is officially not considered part of Debian, our official media cannot include anything from non-free. This has been a deliberate policy for many years. Instead, we have for some time been building a limited parallel set of "unofficial non-free" images which include non-free firmware. These non-free images are produced by the same software that we use for the official images, and by the same team.

    There are a number of issues here that make developers and users unhappy:

    1. Building, testing and publishing two sets of images takes more effort.
    2. We don't really want to be providing non-free images at all, from a philosophy point of view. So we mainly promote and advertise the preferred official free images. That can be a cause of confusion for users. We do link to the non-free images in various places, but they're not so easy to find.
    3. Using non-free installation media will cause more installations to use non-free software by default. That's not a great story for us, and we may end up with more of our users using non-free software and believing that it's all part of Debian.
    4. A number of users and developers complain that we're wasting their time by publishing official images that are just not useful for a lot (a majority?) of users.

    We should do better than this.

    Options

    The status quo is a mess, and I believe we can and should do things differently.

    I see several possible options that the images team can choose from here. However, several of these options could undermine the principles of Debian. We don't want to make fundamental changes like that without the clear backing of the wider project. That's why I'm writing this...

    1. Keep the existing setup. It's horrible, but maybe it's the best we can do? (I hope not!)

    2. We could just stop providing the non-free unofficial images altogether. That's not really a promising route to follow - we'd be making it even harder for users to install our software. While ideologically pure, it's not going to advance the cause of Free Software.

    3. We could stop pretending that the non-free images are unofficial, and maybe move them alongside the normal free images so they're published together. This would make them easier to find for people that need them, but is likely to cause users to question why we still make any images without firmware if they're otherwise identical.

    4. The images team technically could simply include non-free into the official images, and add firmware packages to the input lists for those images. However, that would still leave us with problem 3 from above (non-free generally enabled on most installations).

    5. We could split out the non-free firmware packages into a new non-free-firmware component in the archive, and allow a specific exception only to allow inclusion of those packages on our official media. We would then generate only one set of official media, including those non-free firmware packages.

      (We've already seen various suggestions in recent years to split up the non-free component of the archive like this, for example into non-free-firmware, non-free-doc, non-free-drivers, etc. Disagreement (bike-shedding?) about the split caused us to not make any progress on this. I believe this project should be picked up and completed. We don't have to make a perfect solution here immediately, just something that works well enough for our needs today. We can always tweak and improve the setup incrementally if that's needed.)

    These are the most likely possible options, in my opinion. If you have a better suggestion, please let us know!

    I'd like to take this set of options to a GR, and do it soon. I want to get a clear decision from the wider Debian project as to how to organise firmware and installation images. If we do end up changing how we do things, I want a clear mandate from the project to do that.

    My preference, and rationale

    Mainly, I want to see how the project as a whole feels here - this is a big issue that we're overdue solving.

    What would I choose to do? My personal preference would be to go with option 5: split the non-free firmware into a special new component and include that on official media.

    Does that make me a sellout? I don't think so. I've been passionately supporting and developing Free Software for more than half my life. My philosophy here has not changed. However, this is a complex and nuanced situation. I firmly believe that sharing software freedom with our users comes with a responsibility to also make our software useful. If users can't easily install and use Debian, that helps nobody.

    By splitting things out here, we would enable users to install and use Debian on their hardware, without promoting/pushing higher-level non-free software in general. I think that's a reasonable compromise. This is simply a change to recognise that hardware requirements have moved on over the years.

    Further work

    If we do go with the changes in option 5, there are other things we could do here for better control of and information about non-free firmware:

    1. Along with adding non-free firmware onto media, when the installer (or live image) runs, we should make it clear exactly which firmware packages have been used/installed to support detected hardware. We could link to docs about each, and maybe also to projects working on Free re-implementations.

    2. Add an option at boot to explicitly disable the use of the non-free firmware packages, so that users can choose to avoid them.

    Acknowledgements

    Thanks to people who reviewed earlier versions of this document and/or made suggestions for improvement, in particular:

    • Cyril Brulebois
    • Matthew Garrett
    • David Leggett
    • Martin Michlmayr
    • Andy Simpkins
    • Neil Williams

    01:24 :: # :: /debian/issues :: 44 comments

    Thursday, 04 June 2020

    Interesting times, and a new job!

    It's (yet again!) been a while since I blogged last, sorry...

    It's been over ten years since I started in Arm, and nine since I joined Linaro as an assignee. It was wonderful working with some excellent people in both companies, but around the end of last year I started to think that it might be time to look for something new and different. As is the usual way in Cambridge, I ended up mentioning this to friends and things happened!

    After discussions with a few companies, I decided to accept an interesting-looking offer from a Norwegian company called Pexip. My good friend Vince had been raving for a while about how much he enjoyed his job there, which was a very good sign! He works from his home near Cambridge, and they were very happy to take me on in a similar way. There will be occasional trips to the UK office near Reading, or to the Norway HQ in Oslo. But most of the time I'll be working in my home office with all the home comforts and occasionally even an office dog!

    Pepper and a laptop!

    As is common in the UK for senior staff, I had to give 3 months notice with my resignation. When I told my boss in Arm way way back in February that I had decided to leave, I planned for a couple of weeks of down-time in between jobs. Perfect timing! The third week of May in Cambridge is the summer Beer Festival, and my birthday is the week after. All was looking good!

    Then the world broke... :-(

    As the "novel coronavirus" swept the world, countries closed down and normal life all-but disappeared for many. I acknowledge I'm very lucky here - I'm employed as a software engineer. I can effectively work from home, and indeed I was already in the habit of doing that anyway. Many people are not so fortunate. :-/ In this period, I've heard of some people in the middle of job moves where their new company have struggled and the new job has gone away. Thankfully, Pexip have continued to grow during this time and were still very keen to have me. I finally started this week!

    So, what does Pexip do? The company develops and supplies a video conferencing platform, mainly targeting large enterprise customers. We have some really awesome technology, garnering great reviews from customers all over the world. See the website for more information!

    Pexip logo

    Where do I fit in? Pexip is a relatively small company with a very flat setup in engineering, so that's a difficult question to answer! I'll be starting working in the team developing and maintaining PexOS, the small Linux-based platform on which other things depend. (No prizes for guessing which distro it's based on!) But there's lots of scope to get involved in all kinds of other areas as needs and interests arise. I can't wait to get stuck in!

    Although I'm no longer going to be working on Debian arm port issues on work time, I'm still planning to help where I can. Let's see how that works...

    18:22 :: # :: /misc :: 1 comment

    What can you preseed when installing Debian?

    Preseeding is a very useful way of installing and pre-configuring a Debian system in one go. You simply supply lots of the settings that your new system will need up front, in a preseed file. The installer will use those settings instead of asking questions, and it will also pass on any extra settings via the debconf database so that any further package setup will use them.

    There is documentation about how to do this in the Debian wiki at https://wiki.debian.org/DebianInstaller/Preseed, and an example preseed file for our current stable release (Debian 10, "buster") in the release notes.

    One complaint I've heard is that it can be difficult to work out exactly the right data to use in a preseed file, as the format is not the easiest to work with by hand. It's also difficult to find exactly what settings can be changed in a preseed.

    So, I've written a script to parse all the debconf templates in each release in the Debian archive and dump all the possible settings in each. I've put the results up online at my debian-preseed site in case it's useful. The data will be updated daily as needed to make sure it's current.

    Updated June 2020 - changed the URL for the preseed site now I have a domain set up at https://preseed.debian.net/.

    17:53 :: # :: /debian/misc :: 2 comments

    Thursday, 30 January 2020

    Presenting guest lectures at the University of Lincoln, January 2020

    Dr Charles Fox from the University of Lincoln contacted me out of the blue back in September. He asked me if I would give a couple of guest lectures to his Computer Science students. I was deeply flattered! I took him up on his invitation, and on Tuesday 28th Jan I headed up to visit him and the TSE students.

    My first talk was to provide background on Free and Open Source Software. I started with the history of software in the 1950s, working forwards through the events that sparked the FLOSS movement. I spoke about the philosophical similarities and differences between Free Software and Open Source, and how FLOSS has grown to a state of near-ubiquity. Several of the students are already involved in some existing FLOSS projects, so I was clearly preaching to the choir! I hope I managed to interest the rest of the audience too; I certainly had a warm welcome! Slides are here, for reference.

    Steve talking about Free Software

    Next up was my specialist subject: Debian! I gave a brief introduction to Debian, covering what we do, how we do it, and why we do it. I covered important things like our Social Contract and the DFSG, and how Debian's thousands of contributors work together to package many thousands of disparate software projects into the large, stable Debian operating system that we all know and love. I was even brave enough to give a brief demo, showing a simple package update for a bug I'd prepared earlier! Slides are here, for reference.

    In both talks, I was keen to point out the many good reasons for contributors to get into the FLOSS world, using my own personal experience as a guide. I've been working in this world for many years, and it's been a very important part of my life and career.

    After lunch and some fun conversation with Charles and some of his students, I was given the grand tour of the department. Charles is working with a large group of people doing research in agricultural robotics and autonomous vehicles. I got to see lots of interesting projects and meet lots of cool people from amongst his students and colleagues. They're doing some amazing work on things that might soon be key in making agriculture more efficient: autonomous systems to identify and automatically remove weeds from wheat fields, to robotic systems designed to help with growing, monitoring and harvesting soft fruit like strawberries. Totally outside my field, but it was fascinating stuff!

    Steve visiting the research group

    I had a fun day in Lincoln, talking to lots of people and hopefully spreading enthusiasm for FLOSS and Debian in particular. Charles and I chatted about how his students might get involved in our world. You might get to meet some of them at upcoming Debian events!

    02:00 :: # :: /debian/talks :: 0 comments

    Wednesday, 28 August 2019

    If you can't stand the heat, get out of the kitchen...

    Wow, we had a hot weekend in Cambridge. About 40 people turned up to our place in Cambridge for this year's OMGWTFBBQ. Last year we were huddling under the gazebos for shelter from torrential rain; this year we again had all the gazebos up, but this time to hide from the sun instead. We saw temperatures well into the 30s, which is silly for Cambridge at the end of August.

    I think it's fair to say that everybody enjoyed themselves despite the ludicrous heat levels. We had folks from all over the UK, and Lars and Soile travelled all the way from Helsinki in Finland to help him celebrate his birthday!

    cake!

    We had a selection of beers again from the nice folks at Milton Brewery:
    is 3 firkins enough?

    Lars made pancakes, Paul made bread, and people brought lots of nice food and drink with them too.

    Many thanks to a number of awesome friendly companies for again sponsoring the important refreshments for the weekend. It's hungry/thirsty work celebrating like this!

    21:17 :: # :: /debian/uk :: 0 comments

    Saturday, 10 August 2019

    DebConf in Brazil again!

    Highvoltage and me

    I was lucky enough to meet up with my extended Debian family again this year. We went back to Brazil for the first time since 2004, this time in Curitiba. And this time I didn't lose anybody's clothes! :-)

    Rhonda modelling our diversity T!

    I had a very busy time, as usual - lots of sessions to take part in, and lots of conversations with people from all over. As part of the Community Team (ex-AH Team), I had a lot of things to catch up on too, and a sprint report to send. Despite all that, I even managed to do some technical things too!

    I ran sessions about UEFI Secure Boot, the Arm ports and the Community Team. I was meant to be running a session for the web team too, but the dreaded DebConf 'flu took me out for a day. It's traditional - bring hundreds of people together from all over the world, mix them up with too much alcohol and not enough sleep and many people get ill... :-( Once I'm back from vacation, I'll be doing my usual task of sending session summaries to the Debian mailing lists to describe what happened in my sessions.

    Maddog showed a group of us round the micro-brewery at Hop'n'Roll which was extra fun. I'm sure I wasn't the only experienced guy there, but it's always nice to listen to geeky people talking about their passion.

    Small group at Hop'n'Roll

    Of course, I could't get to all the sessions I wanted to - there's just too many things going on in DebConf week, and sessions clash at the best of times. So I have a load of videos on my laptop to watch while I'm away. Heartfelt thanks to our always-awesome video team for their efforts to make that possible. And I know that I had at least one follower at home watching the live streams too!

    Pepper watching the Arm BoF

    19:33 :: # :: /debian/dc19 :: 0 comments

    Tuesday, 12 March 2019

    Debian BSP in Cambridge, 08 - 10 March 2019

    Lots of snacks, lots of discusssion, lots of bugs fixed! YA BSP at my place.

    BSP

    03:08 :: # :: /debian/bsp :: 0 comments

    Monday, 07 January 2019

    Rebuilding the entire Debian archive twice on arm64 hardware for fun and profit

    I've posted this analysis to Debian mailing lists already, but I'm thinking it's also useful as a blog post too. I've also fixed a few typos and added a few more details that people have suggested.

    This has taken a while in coming, for which I apologise. There's a lot of work involved in rebuilding the whole Debian archive, and many days spent analysing the results. You learn quite a lot, too! :-)

    I promised way back before DebConf 18 last August that I'd publish the results of the rebuilds that I'd just started. Here they are, after a few false starts. I've been rebuilding the archive specifically to check if we would have any problems building our 32-bit Arm ports (armel and armhf) using 64-bit arm64 hardware. I might have found other issues too, but that was my goal.

    The logs for all my builds are online at

    https://www.einval.com/debian/arm/rebuild-logs/

    for reference. See in particular

    for automated analysis of the build logs that I've used as the basis for the stats below.

    Executive summary

    As far as I can see we're basically fine to use arm64 hosts for building armel and armhf, so long as those hosts include hardware support for the 32-bit A32 instruction set. As I've mentioned before, that's not a given on all arm64 machines, but there are sufficient machine types available that I think we should be fine. There are a couple of things we need to do in terms of setup - see Machine configuration below.

    Methodology

    I (naively) just attempted to rebuild all the source packages in unstable main, at first using pbuilder to control the build process and then later using sbuild instead. I didn't think to check on the stated architectures listed for the source packages, which was a mistake - I would do it differently if redoing this test. That will have contributed quite a large number of failures in the stats below, but I believe I have accounted for them in my analysis.

    I built lots of packages, using a range of machines in a small build farm at home:
    • Macchiatobin
    • Seattle
    • Synquacer
    • Multiple Mustangs

    using my local mirror for improved performance when fetching build-deps etc. I started off with a fixed list of packages that were in unstable when I started each rebuild, for the sake of simplicity. That's one reason why I have two different numbers of source packages attempted for each arch below. If packages failed due to no longer being available, I simply re-queued using the latest version in unstable at that point.

    I then developed a script to scan the logs of failed builds to pick up on patterns that matched with obvious causes. Once that was done, I worked through all the failures to (a) verify those patterns, and (b) identify any other failures. I've classified many of the failures to make sense of the results. I've also scanned the Debian BTS for existing bugs matching my failed builds (and linked to them), or filed new bugs where I could not find matches.

    I did not investigate fully every build failure. For example, where a package has never been built before on armel or armhf and failed here I simply noted that fact. Many of those are probably real bugs, but beyond the scope of my testing.

    For reference, all my scripts and config are in git at

    https://git.einval.com/cgi-bin/gitweb.cgi?p=buildd-scripts.git

    armel results

    Total source packages attempted 28457
    Successfully built 25827
    Failed 2630

    Almost half of the failed builds were simply due to the lack of a single desired build dependency (nodejs:armel, 1289). There were a smattering of other notable causes:

    • 100 log(s) showing build failures (java/javadoc)
      Java build failures seem particularly opaque (to me!), and in many cases I couldn't ascertain if it was a real build problem or just maven being flaky. :-(
    • 15 log(s) showing Go 32-bit integer overflow
      Quite a number of go packages are blindly assuming sizes for 64-bit hosts. That's probably fair, but seems unfortunate.
    • 8 log(s) showing Sbuild build timeout
      I was using quite a generous timeout (12h) with sbuild, but still a very small number of packages failed. I'd earlier abandoned pbuilder for sbuild as I could not get it to behave sensibly with timeouts.
    The stats that matter are the arch-specific failures for armel:
    • 13 log(s) showing Alignment problem
    • 5 log(s) showing Segmentation fault
    • 1 log showing Illegal instruction
    and the new bugs I filed:
    • 3 bugs for arch misdetection
    • 8 bugs for alignment problems
    • 4 bugs for arch-specific test failures
    • 3 bugs for arch-specific misc failures

    Considering the number of package builds here, I think these numbers are basically "lost in the noise". I have found so few issues that we should just go ahead. The vast majority of the failures I found were either already known in the BTS (260), unrelated to what I was looking for, or both.

    See below for more details about build host configuration for armel builds.

    armhf results

    Total source packages attempted 28056
    Successfully built 26772
    Failed 1284

    FTAOD: I attempted fewer package builds for armhf as we simply had a smaller number of packages when I started that rebuild. A few weeks later, it seems we had a few hundred more source packages for the armel rebuild.

    The armhf rebuild showed broadly the same percentage of failures, if you take into account the nodejs difference - it exists in the armhf archive, so many hundreds more packages could build using it.

    In a similar vein for notable failures:

    • 89 log(s) showing build failures (java/javadoc)
      Similar problems, I guess...
    • 15 log(s) showing Go 32-bit integer overflow
      That's the same as for armel, I'm assuming (without checking!) that they're the same packages.
    • 4 log(s) showing Sbuild build timeout
      Only 4 timeouts compared to the 8 for armel. Maybe a sign that armhf will be slightly quicker in build time, so less likely to hit a timeout? Total guesswork on small-number stats! :-)

    Arch-specific failures found for armhf:

    • 11 log(s) showing Alignment problem
    • 4 log(s) showing Segmentation fault
    • 1 log(s) showing Illegal instruction

    and the new bugs I filed:

    • 1 bugs for arch misdetection
    • 8 bugs for alignment problems
    • 10 bugs for arch-specific test failures
    • 3 bugs for arch-specific misc failures

    Again, these small numbers tell me that we're fine. I liked to 139 existing bugs in the BTS here.

    Machine configuration

    To be able to support 32-bit builds on arm64 hardware, there are a few specific hardware support issues to consider.

    Alignment

    Our 32-bit Arm kernels are configured to fix up userspace alignment faults, which hides lazy programming at the cost of a (sometimes massive) slowdown in performance when this fixup is triggered. The arm64 kernel cannot be configured to do this - if a userspace program triggers an alignment exception, it will simply be handed a SIGBUS by the kernel. This was one of the main things I was looking for in my rebuild, common to both armel and armhf. In the end, I only found a very small number of problems.

    Given that, I think we should immediately turn off the alignment fixups on our existing 32-bit Arm buildd machines. Let's flush out any more problems early, and I don't expect to see many.

    To give credit here: Ubuntu have been using arm64 machines for building 32-bit Arm packages for a while now, and have already been filing bugs with patches which will have helped reduce this problem. Thanks!

    Deprecated / retired instructions

    In theory(!), alignment is all we should need to worry about for armhf builds, but our armel software baseline needs two additional pieces of configuration to make things work, enabling emulation for

    • SWP (low-level locking primitive, deprecated since ARMv6 AFAIK)
    • CP15 barriers (low-level barrier primitives, deprecated since ARMv7)

    Again, there is quite a performance cost to enabling emulation support for these instructions but it is at least possible!

    In my initial testing for rebuilding armhf only, I did not enable either of these emulations. I was then finding lots of "Illegal Instruction" crashes due to CP15 barrier usage in armhf Haskell and Mono programs. This suggests that maybe(?) the baseline architecture in these toolchains is incorrectly set to target ARMv6 rather than ARMv7. That should be fixed and all those packages rebuilt at some point.

    UPDATES

    • Peter Green pointed out that ghc in Debian armhf is definitely configured for ARMv7, so maybe there is a deeper problem.
    • Edmund Grimley Evans suggests that the Haskell problem is coming from how it drives LLVM, linking to #864847 that he filed in 2017.

    Bug highlights

    There are a few things I found that I'd like to highlight:

    • In the glibc build, we found an arm64 kernel bug (#904385) which has since been fixed upstream thanks to Will Deacon at Arm. I've backported the fix for the 4.9-stable kernel branch, so the fix will be in our Stretch kernels soon.
    • There's something really weird happening with Vim (#917859). It FTBFS for me with an odd test failure for both armel-on-arm64 and armhf-on-arm64 using sbuild, but in a porter box chroot or directly on my hardware using debuild it works just fine. Confusing!
    • I've filed quite a number of bugs over the last few weeks. Many are generic new FTBFS reports for old packages that haven't been rebuilt in a while, and some of them look un-maintained. However, quite a few of my bugs are arch-specific ones in better-maintained packages and several have already had responses from maintainers or have already been fixed. Yay!
    • Yesterday, I filed a slew of identical-looking reports for packages using MPI and all failing tests. It seems that we have a real problem hitting openmpi-based packages across the archive at the moment (#918157 in libpmix2). I'm going to verify that on my systems shortly.

    Other things to think about

    Building in VMs

    So far in Debian, we've tended to run our build machines using chroots on raw hardware. We have a few builders (x86, arm64) configured as VMs on larger hosts, but as far as I can see that's the exception so far. I know that OpenSUSE and Fedora are both building using VMs, and for our Arm ports now we have more powerful arm64 hosts available it's probably the way we should go here.

    In testing using "linux32" chroots on native hardware, I was explicitly looking to find problems in native architecture support. In the case of alignment problems, they could be readily "fixed up / hidden" (delete as appropriate!) by building using 32-bit guest kernels with fixups enabled. If I'd found lots of those, that would be a safer way to proceed than instantly filing lots of release-critical FTBFS bugs. However, given the small number of problems found I'm not convinced it's worth worrying about.

    Utilisation of hardware

    Another related issue is in how we choose to slice up build machines. Many packages will build very well in parallel, and that's great if you have something like the Synquacer with many small/slow cores. However, not all our packages work so well and I found that many are still resolutely chugging through long build/test processes in single threads. I experimented a little with my config during the rebuilds and what seemed to work best for throughput was kicking off one build per 4 cores on the machines I was using. That seems to match up with what the Fedora folks are doing (thanks to hrw for the link!).

    Migrating build hardware

    As I mentioned earlier, to build armel and armhf sanely on arm64 hardware, we need to be using arm64 machines that include native support for the 32-bit A32 instruction set. While we have lots of those around at the moment, some newer/bigger arm64 server platforms that I've seen announced do not include it. (See an older mail from me for more details. We'll need to be careful about this going forwards and keep using (at least) some machines with A32. Maybe we'll migrate arm64-only builds onto newer/bigger A64-only machines and keep the older machines for armel/armhf if that becomes a problem?

    At least for the foreseeable future, I'm not worried about losing A32 support. Arm keeps on designing and licensing ARMv8 cores that include it...

    Thanks

    I've spent a lot of time looking at existing FTBFS bugs over the last weeks, to compare results against what I've been seeing in my build logs. Much kudos to people who have been finding and filing those bugs ahead of me, in particular Adrian Bunk and Matthias Klose who have filed many such bugs. Also thanks to Helmut Grohne for his script to pull down a summary of FTBFS bugs from UDD - that saved many hours of effort!

    Finally...

    Please let me know if you think you've found a problem in what I've done, or how I've analysed the results here. I still have my machines set up for easy rebuilds, so reproducing things and testing fixes is quite easy - just ask!

    13:57 :: # :: /debian/arm :: 1 comment

    Friday, 31 August 2018

    And lo, we sacrificed to the gods of BBQ once more

    As is becoming something of a tradition by now, Jo and I hosted another OMGWTFBBQ at our place last weekend. People came from far and wide to enjoy themselves. Considering the summer heatwave we've had this year, we were a little unlucky with the weather. But with the power of gazebo technology we kept (mostly!) dry... :-)

    I was too busy cooking and drinking etc. to take any photos myself, so here are some I sto^Wborrowed from my friends!

    We continued to celebrate Debian getting old:
    the cake is not a lie!
    Photo from Jonathan McDowell

    We had much beer from the nice folks at Milton Brewery:
    is 3 firkins enough?
    Photo from Rob Kendrick

    Much meat was prepared and cooked:
    very professional!
    Photo from Stefano Rivera

    And we had a lot of bread too!
    BREAD!
    Photo from Rob Kendrick

    Finally, many thanks to a number of awesome companies for again sponsoring the important refreshments for the weekend. It's hungry/thirsty work celebrating like this!

    03:24 :: # :: /debian/uk :: 0 comments

    Thursday, 16 August 2018

    25 years...

    We had a small gathering in the Haymakers pub tonight to celebrate 25 years since Ian Murdock started the Debian project.

    people in the pub!

    We had 3 DPLs, a few other DDs and a few more users and community members! Good to natter with people and share some history. :-) The Raspberry Pi people even chipped in for some drinks. Cheers! The celebrations will continue at the big BBQ at my place next weekend.

    22:42 :: # :: /debian/birthday :: 0 comments

    Sunday, 12 August 2018

    DebConf in Taiwan!

    DebConf 18 logo

    So I'm slowly recovering from my yearly dose of full-on Debian! :-) DebConf is always fun, and this year in Hsinchu was no different. After so many years in the project, and so many DebConfs (13, I think!) it has become unmissable for me. It's more like a family gathering than a work meeting. In amongst the great talks and the fun hacking sessions, I love catching up with people. Whether it's Bdale telling me about his fun on-track exploits or Stuart sharing stories of life in an Australian university, it's awesome to meet up with good friends every year, old and new.

    DC18 venue

    For once, I even managed to find time to work on items from my own TODO list during DebCamp and DebConf. Of course, I also got totally distracted helping people hacking on other things too! In no particular order, stuff I did included:

    • Working with Holger and Wolfgang to get debian-edu netinst/USB images building using normal debian-cd infrastructure;
    • Debugging build issues with our buster OpenStack images, fixing them and also pushing some fixes to Thomas for build-openstack-debian-image;
    • Reviewing secure boot patches for Debian's GRUB packages;
    • As an AM, helping two DD candidates working their way through NM;
    • Monitoring and tweaking an archive rebuild I'm doing, testing building all of our packages for armhf using arm64 machines;
    • Releasing new upstream and Debian versions of abcde, the CD ripping and encoding package;
    • Helping to debug UEFI boot problems with Helen and Enrico;
    • Hacking on MoinMoin, the wiki engine we use for wiki.debian.org;
    • Engaging in lots of discussions about varying things: Arm ports, UEFI Secure Boot, Cloud images and more

    I was involved in a lot of sessions this year, as normal. Lots of useful discussion about Ignoring Negativity in Debian, and of course lots of updates from various of the teams I'm working in: Arm porters, web team, Secure Boot. And even an impromptu debian-cd workshop.

    Taipei 101 - datrip venue

    I loved my time at the first DebConf in Asia (yay!), and I was yet again amazed at how well the DebConf volunteers made this big event work. I loved the genius idea of having a bar in the noisy hacklab, meaning that lubricated hacking continued into the evenings too. And (of course!) just about all of the conference was captured on video by our intrepid video team. That gives me a chance to catch up on the sessions I couldn't make it to, which is priceless.

    So, despite all the stuff I got done in the 2 weeks my TODO list has still grown. But I'm continuing to work on stuff, energised again. See you in Curitiba next year!

    16:11 :: # :: /debian/dc18 :: 0 comments

    Friday, 25 August 2017

    Let's BBQ again, like we did last summer!

    It's that time again! Another year, another OMGWTFBBQ! We're expecting 50 or so Debian folks at our place in Cambridge this weekend, ready to natter, geek, socialise and generally have a good time. Let's hope the weather stays nice, but if not we have gazebo technology... :-)

    Many thanks to a number of awesome companies and people near and far who are sponsoring the important refreshments for the weekend:

    I've even been working on the garden this week to improve it ready for the event. If you'd like to come and haven't already told us, please add yourself to the wiki page!

    03:00 :: # :: /debian/uk :: 1 comment

    Thursday, 22 June 2017

    -1, Trolling

    Here's a nice comment I received by email this morning. I guess somebody was upset by my last post?

    From: Tec Services <tecservices911@gmail.com>
    Date: Wed, 21 Jun 2017 22:30:26 -0700
    To: steve@einval.com
    Subject: its time for you to retire from debian...unbelievable..your
             the quality guy and fucked up the installer!
    
    i cant ever remember in the hostory of computing someone releasing an installer
    that does not work!!
    
    wtf!!!
    
    you need to be retired...due to being retarded..
    
    and that this was dedicated to ian...what a
    disaster..you should be ashames..he is probably roling in his grave from shame
    right now....
    

    It's nice to be appreciated.

    22:59 :: # :: /misc :: 8 comments

    Tuesday, 20 June 2017

    So, Stretch happened...

    Things mostly went very well, and we've released Debian 9 this weekend past. Many many people worked together to make this possible, and I'd like to extend my own thanks to all of them.

    As a project, we decided to dedicate Stretch to our late founder Ian Murdock. He did much of the early work to get Debian going, and inspired many more to help him. I had the good fortune to meet up with Ian years ago at a meetup attached to a Usenix conference, and I remember clearly he was a genuinely nice guy with good ideas. We'll miss him.

    For my part in the release process, again I was responsible for producing our official installation and live images. Release day itself went OK, but as is typical the process ran late into Saturday night / early Sunday morning. We made and tested lots of different images, although numbers were down from previous releases as we've stopped making the full CD sets now.

    Sunday was the day for the release party in Cambridge. As is traditional, a group of us met up at a local hostelry for some revelry! We hid inside the pub to escape from the ridiculouly hot weather we're having at the moment.

    Party

    Due to a combination of the lack of sleep and the heat, I nearly forgot to even take any photos - apologies to the extra folks who'd been around earlier whom I missed with the camera... :-(

    23:21 :: # :: /debian/releases :: 2 comments

    Friday, 12 May 2017

    Fonts and presentations

    When you're giving a presentation, the choice of font can matter a lot. Not just in terms of how pretty your slides look, but also in terms of whether the data you're presenting is actually properly legible. Unfortunately, far too many fonts are appallingly bad if you're trying to tell certain characters apart. Imagine if you're at the back of a room, trying to read information on a slide that's (typically) too small and (if you're unlucky) the presenter's speech is also unclear to you (noisy room, bad audio, different language). A good clear font is really important here.

    To illustrate the problem, I've picked a few fonts available in Google Slides. I've written the characters "1lIoO0" (that's one, lower case L, upper case I, lower case o, upper case O, zero) in each of those fonts. Some of the sans-serif fonts in particular are comically bad for trying to distinguish between these characters.

    font examples

    It may not matter in all cases if your audience can read all the characters on your slides and tell them apart, put if you're trying to present scientific or numeric results it's critical. Please consider that before looking for a pretty font.

    23:08 :: # :: /misc :: 2 comments

    Wednesday, 15 February 2017

    Start the fans please!

    This probably won't mean much to people outside the UK, I'm guessing. Sorry! :-)

    The Crystal Maze was an awesome fun game show on TV in the UK in the 1990s. Teams would travel through differently-themed zones, taking on challenges to earn crystals for later rewards in the Crystal Dome. I really enjoyed it, as did just about everybody my age that I know of...

    A group have started up a new Crystal Maze attraction in London and Manchester, giving some of us a chance of indulging our nostalgia directly in a replica of the show's setup! Neil NcGovern booked a load of tickets and arranged for a large group of people to go along this weekend.

    It was amazing! (Sorry!) I ended up captaining one of the 4 teams, and our team ("Failure is always an option!") scored highest in the final game - catching bits of gold foil flying around in the Dome. It was really, really fun and I'd heartily recommend it to other folks who like action games and puzzle solving.

    I just missed the biting scorn of the original show presenter, Richard O'Brien, but our "Maze Master" Boudica was great fun and got us all pumped up and working together.

    00:32 :: # :: /misc :: 2 comments

    Tuesday, 01 November 2016

    Twenty years...

    So, it's now been twenty years since I became a Debian Developer. I couldn't remember the exact date I signed up, but I decided to do some forensics to find out. First, I can check on the dates on my first Debian system, as I've kept it running as a Debian system ever since!

    jack:~$ ls -alt /etc
    ...
    -rw-r--r--   1 root   root     6932 Feb 10  1997 pine.conf.old
    -rw-r--r--   1 root   root     6907 Dec 29  1996 pine.conf.old2
    -rw-r--r--   1 root   root    76739 Dec  7  1996 mailcap.old
    -rw-r--r--   1 root   root     1225 Oct 20  1996 fstab.old
    jack:~$
    

    I know that I did my first Debian installation in late October 1996, migrating over from my existing Slackware installation with the help of my friend Jon who was already a DD. That took an entire weekend and it was painful, so much so that several times that weekend I very nearly bailed and went back. But, I stuck with it and after a few more days I decided I was happier with Debian than with the broken old Slackware system I'd been using. That last file (fstab.old) is the old fstab file from the Slackware system, backed up just before I made the switch.

    I was already a software developer at the time, so of course the first thing I wanted to do once I was happy with Debian was to become a DD and take over the Debian maintenance of mikmod, the module player I was working on at the time. So, I mailed Bruce to ask for an account (there was none of this NM concept back then!) and I think he replied the next day. Unfortunately, I don't have the email in my archives any more due to a disk crash back in the dim and distant past. But I can see that the first PGP key I generated for the sake of joining Debian dates from October 30th 1996 which gives me a date of 31st October 1996 for joining Debian.

    Twenty years, wow... Since then, I've done lots in the project. I'm lucky enough to been to 11 DebConfs, hosted all around the world. I'm massively proud to have been voted DPL for two of those twenty years. I've worked on a huge number of different things in Debian, from the audio applications I started with to the installer (yay, how things come back to bite you!), from low-level CD and DVD tools (and making our CD images!) to a wiki engine written in python. I've worked hard to help make the best Operating System on the planet, both for my own sake and the sake of our users.

    Debian has been both excellent fun and occasionally a huge cause of stress in my life for the last 20 years, but despite the latter I wouldn't go back and change anything. Why? Through Debian, I've made some great friends: in Cambridge, in the UK, in Europe, on every continent. Thanks to you all, and here's to (hopefully) many years to come!

    00:17 :: # :: /debian/stats :: 2 comments