I’ve just read this article by Jim Mendenhall. Yes, a Linux pre-installation would be a good thing. But I just cannot agree with his choice of Linux distribution: Ubuntu.
Linux for the masses
Ubuntu is said to be the Linux for beginners. But it really is awful. A lot of Linux newbies don’t like Linux because of Ubuntu. Show them Gnome 2 or KDE 4 and they may stay, show them Unity and the run away!
Ubuntu has to go its own way. Mir instead of Wayland, Unity instead of Gnome or KDE. Upstart instead of systemd. Yes, upstart was there first, I know; and they will eventually make the switch to systemd, which probably was greatly inspired by upstart. In this regard: thank you Ubuntu! But Mir and Unity really wasn’t necessary on the desktop!
Linux is all about choice!
There is no Linux but all of them! Linux users like to choose which distribution they want to use. They like to choose which desktop to use.
They like to choose on the hardware side as well: it’s not always low-end they want. Sometimes they’d like to get a high-end computer, but there is none specifically for Linux!
If you know that, pre-installation suddenly doesn’t make that much sense anymore. The only thing a vendor can do is to actively help letting the user make choices of his own and to eagerly help with Linux support. This means: a clean and working BIOS or UEFI implementation, which is commited clearly to supporting Linux from the firmware side, and not the other way around. (And there is nothing wrong with supporting Windows as well!)
The hardware and the firmware of a Linux computer
So what does this mean? It means that the firmware (like the BIOS or UEFI) has to be suitable for Linux so that Linux must not use workarounds, so called “quirks” which in their quantity bloat the kernel already. A firmware designed for Linux – that’s real Linux support.
Another support could be to provide firmware blobs for embedded devices inside a special firmware area for the Linux kernel to grab and use. This situation is less a long-term target than it is here-and-now necessity.
The Linux kernel would have to be patched so that support for such a – please: standardised! – “firmware blob interface” would be present, but then this could be used for all Linux firmware implementations from various computer vendors.
The long-term goal is to use hardware that does not require blobs at all. This is the hardest part, as it requires vendors to stand up for open devices. If, for example, a WiFi chip is used, then the computer vendor has to get the WiFi chip vendor to help develop an open source Linux driver that does not require a firmware blob at all. Open specifications would be one way to do this, but most chip vendors say they cannot release this information due to intellectual property and due to their industrial secrets they want to keep. It’s a dilemma.
Even more so, the CPU itself has firmware blob issues, like the Librem Laptop project found out the hard way.
So there are two ways to go:
- either try to go fully open source,
- or make the best of it and help as much as you can.
Trying to be fully open source
As of 2014, I see lots of small hacking & development devices fully open sourced, and only one laptop-to-be:
- the Novena is a low-end laptop-to-be
- lots of Rasperry-Pi-like open source hardware
- the AMD Gizmo is also intended for developers
Making the best of the firmware blob situation
Most Linux-pre-loaded laptops are basically “designed for Windows” machines that come with Ubuntu:
- Dell, HP, ASUS, to name just a few vendors selling lower-end linux laptops and netbooks
- the Librem 15 is an exception, as it tries to be higher-end, but it is still a laptop-to-be…
The only problem with how it is now is that support ends with the pre-installed linux. Maybe a driver support site lets you download some linux drivers, but often they will not work well on other distros. And these vendors don’t let the Linux community provide help. And: where are the high-end Linux computers?!?
A new über-firmware approach?
I have an idea. It actually isn’t new, but it transforms the idea of choice towards operating systems.
First, you all know, or have at least heard of, that Microsoft was sued in Europe and finally forced to provide a choice of which internet browser to use on Windows – and this freedom of choice had to be presented highly visible to the user: the Browser Choice.
So, how would you like to get an “operating system choice”? The idea is as follows:
- Use an open firmware, like coreboot (wiki)
- Include a module (payload) that is some kind of Mini OS
- Internet access
- choice of operating system
- partition management (like gparted)
- include a special service partition (noexec!), where
- you can download drivers and manuals to
- and save configuartion backup on
- This Mini OS could let you chooce which OS you would like to use, including commercial operating systems – yes, even Microsoft Windows.
Even more, this firmware should be able to provide a safe pre-initialization environment that prevents malware from being loaded from hard disk drives or other sources, to provide a safe environment for firmware updates.
- TWO firmware chips:
- read-only firmware ROM chip on a socket: a factory-default hence safe firmware and Mini OS
- a flashable – updateable – firmware flash chip with updated firmware blobs (microcode, AGESA update, blobs for various chips), an updated coreboot firmware and an updated Mini OS
- the flashable i.e. second firmware chip should be jumper-securable to read-only setting as well. This should cover for malware infection prevention.
- each and every embedded chip must be read-only as well, making it only possible to modify by the firmware provided updated
- this too provides durable malware protection, as no malware is then able to hide deep in the system – if such a system gets infected, all that is needed it to reset the firmware completely using the factory-default image from the first read-only firmware ROM chip
- since both firmware chips riside on a socket, they can even be updated in terms of storage capacity and, for the ROM chip, in firmware version
I know this idea is kind of idialistic. But hey, all innovations started with some kind of far-fetched vision, right?
In my opinion, an open source computer can only start by using an open source firmware of some kind.
And a Linux computer can only be about choice. Because Linux is about choice. That said, only the program that runs before the actual Linux distribution can provide such a choice to the user. That would be the firmware then: an über-firmware, that asks the user which distribution – which operating system – (s)he wants to install and use. And it should provide means to assist with this installation, like by conveniently providing the required drivers and firmware blobs.
Even more far-fetched: such an über-firmware could also act as a hypervisor for multi-boot installations. Just imagine: in the firmware you decide which resources an operating system gets, the firmware provides the virtualized environment for the OS and then allows you to boot that operating system. As a hypervisor it would theoretically also be possible to stop that OS, save its state, switch to an other OS, or even let the OS continue to run in the background and finish its job while the user works with one the other OSes.
A Linux vision
As long as Linux computers try to copy pre-installations as we see them from Microsoft Windows they lack a unique Linux vision. There is no Linux way nor a real open source way perceptible.
Linux users deserve better. They deserve better computers than low-end models with pre-installed Ubuntu.
Linux vendors ought to do better. They should work with the open source community, build on already existing software technologies (like coreboot) and envision how to enhance the Linux experience for every user: even if the user installs and uses only one distro. It is worth the effort, since other Linux users will discover the potential, they will help to develop and enhance the implementations, they will help build a community around it. They will spent hours providing drivers/firmware for their favorite distro, help other users in forums, write wiki pages, translate documentations, contribute code – they will even build KVM and Docker images if you let them!
Dear computer makers! Be visionary! And trust in the community – work with them!
Unleash the power of Linux: the freedom of choice!