I'd vote for option 5. Thanks so much for bringing this up. Devin Prater r.d.t.pra...@gmail.com
On Mon, Apr 18, 2022 at 7:28 PM Steve McIntyre <st...@einval.com> wrote: > 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 > > -- > Steve McIntyre, Cambridge, UK. > st...@einval.com > Who needs computer imagery when you've got Brian Blessed? >