Updated Canonical's decision to effectively ditch official support for 32-bit x86 in Ubuntu 19.10 means the Steam gaming runtime is likely to run aground on the Linux operating system – and devs say the Wine compatibility layer for running Windows apps will be of little use.
As a result of the changes, Valve developer Pierre-Loup Griffais confirmed on Twitter: "Ubuntu 19.10 and future releases will not be officially supported by Steam or recommended to our users." This is because Steam relies on 32-bit x86, aka i386, support for running older games that are 32-bit-only. Without official 32-bit x86 support in Ubuntu, Valve is walking away from the Linux distro.
Ubuntu says i386 to be 86'd with Eoan 19.10 release: Ageing 32-bit x86 support will be ex-86READ MORE
The Ubuntu maker sparked outcry last week with its announcement that "the i386 architecture will be dropped" in its next big release, codenamed Eoan. Canonical's Will Cooke even went as far as saying: "i386 will not be included as an architecture for the 19.10 release, and we will shortly begin the process of disabling it for the Eoan series across Ubuntu infrastructure."
Some presumed this meant i386 code and libraries would not be shipped at all, meaning that no 32-bit x86 applications would run without some sort of containerization or virtual environment in which non-64-bit x86 legacy software could run.
However, Canonical's Steve Langasek has since clarified or U-turned, depending on your level of cynicism:
I'm sorry that we've given anyone the impression that we are 'dropping support for i386 applications'. That's simply not the case. What we are dropping is updates to the i386 libraries, which will be frozen at the 18.04 LTS versions. But there is every intention to ensure that there is a clear story for how i386 applications (including games) can be run on versions of Ubuntu later than 19.10.
Freezing the libraries may be almost as bad though, from the point of view of Steam, since drivers for new GPUs would be impacted; and Steam without support for the shiniest new GPUs for 32-bit games (of which there are many) would be crippled.
Langasek said last year that "compatibility with legacy software is important, but it doesn't automatically follow that the right way to provide this compatibility is by continuing to build new versions of the OS for a legacy ABI [Application Binary Interface]. Users who need support for i386 integrated natively into their OS can use Ubuntu 18.04 with security support until April 2023. 18.04 can be run in a chroot or container on top of later Ubuntu releases. 32-bit software distributed as snaps built with an 18.04-derived library runtime can reasonably be expected to work on later releases of Ubuntu for the foreseeable future."
The problem, though, is that the assumption of 32-bit x86 support is deeply woven into a number of applications, the Wine compatibility layer being another.
"Wine heavily relies on i386," said Jens Reyer, co-maintainer of Wine on Debian. "Not only for legacy 32-bit software, but also 'almost all' 64-bit software uses a 32-bit installer … so although Wine will still be available in the Ubuntu archive on amd64, it'll be basically useless.
"To support current features in new Wine releases you need recent versions of a few libraries (e.g. faudio, vulkan-loader and vkd3d, and those require other recent stuff like sdl2 [Simple Direct Media Layer]. 18.04 is already too old to fully support current Wine with (all) current features. So the solutions proposed like containers and snaps based on 18.04 will not fully work. Upstream … will probably just stop to build for 19.10+. This is not to say that they are not interested in working on a solution."
Canonical could, of course, change its mind, but if not, it must expect a proportion of users to move to other distributions as a consequence. Worth it for a clean 64-bit slate and lower maintenance costs? Doubtful. ®
Updated to add
After this story was published, the Ubuntu maker posted a lengthy statement on its site about the i386 situation. It's not totally concrete what's going to happen next as negotiations over what exactly will be supported in future appear to be in flux. Here are the key portions:
Thanks to the huge amount of feedback this weekend from gamers, Ubuntu Studio, and the Wine community, we will change our plan and build selected 32-bit i386 packages for Ubuntu 19.10 and 20.04 LTS.
We will put in place a community process to determine which 32-bit packages are needed to support legacy software, and can add to that list post-release if we miss something that is needed.
Nevertheless, in this case it’s relatively easy for us to change plan and enable natively in Ubuntu 20.04 LTS the applications for which there is a specific need.
We will also work with the Wine, Ubuntu Studio and gaming communities to use container technology to address the ultimate end of life of 32-bit libraries; it should stay possible to run old applications on newer versions of Ubuntu. Snaps and LXD enable us both to have complete 32-bit environments, and bundled libraries, to solve these issues in the long term.
The facts are that most 32-bit x86 packages are hardly used at all. That means fewer eyeballs, and more bugs. Software continues to grow in size at the high end, making it very difficult to even build new applications in 32-bit environments. You’ve heard about Spectre and Meltdown – many of the mitigations for those attacks are unavailable to 32-bit systems.
This led us to stop creating Ubuntu install media for i386 last year and to consider dropping the port altogether at a future date. It has always been our intention to maintain users’ ability to run 32-bit applications on 64-bit Ubuntu – our kernels specifically support that.
So, in short, Canonical will try to keep some legacy i386 software running, by supporting selected 32-bit x86 packages, but it really, really doesn't want to, and thus you're perhaps better off just running Ubuntu on 64-bit x86, or one of its other supported CPU architectures.