Post by Simon McVittie...
I think it's necessary to consider what the purpose of the i386 port is,
and set expectations and an appropriate baseline based on that.
in particular, proprietary 32-bit binaries that we cannot recompile,
32-bit builds of Wine, and the dependency stacks for those
2. It's something you can genuinely run on older (or more-embedded)
32-bit x86 CPUs that do not support x86_64 (down to some arbitrary
baseline, currently i686 without MMX or SSE)
There are at least two more:
3. Computers that do support MMX and SSE2, but do not support 64bit.
AFAIR the last 32bit-only CPU from Intel was released in 2007.[1]
Then there was the short netbook boom, but AFAIR some early ones
had 64bit CPUs but 32bit-only firmware.
Surprisingly many netbooks are still in use even in first-world
countries.[2]
4. People who wrongly installed i386 on amd64-capable hardware.
The existing userbase with this setup is large, and even though
crossgrades are now finally possible it is better to wait until
there are fewer users in this setup and more potential crossgrade
issues resolved.
Post by Simon McVittieUbuntu have chosen to support the first use-case, and only the first
use-case. They longer ship a complete, bootable i386 operating system;
instead, they have an i386 second-class-citizen architecture that
is sufficient to provide graphics drivers and other shared libraries
for legacy 32-bit proprietary binaries.
...
Ubuntu has a business-minded focus, which is fair enough.
But Debian should not blindly follow whatever Canonical
does with Ubuntu for business reasons.[3]
It does make sense for Debian to differenciate by providing support for
communities whose hardware is not or no longer supported by Ubuntu.
Post by Simon McVittie...
we could raise the
baseline to include those and stop patching packages to avoid using them,
which would remove i386's major oddity when compared with other
architectures (i387 extended-precision floating point).
While this specific oddity is unique to the i386 port,
it is worth mentioning that every port has its own oddities.
Post by Simon McVittieAlso, if we are only supporting i386 for my first use-case, then I think
we should seriously consider waiving the archive-completeness metric
for i386: if big packages like web browsers and Libreoffice can't be
compiled on 32-bit, then so be it. We only need to be able to compile
a library stack, plus enough programs to be able to build and test that
library stack on virtual or real hardware.
There is also a cost associated with having to modify packages for
handling such port-specific omissions.
One current example for missing archive-completeness would be s390x,
and I guess you are aware how much pain its headless nature has caused
in some places.
Post by Simon McVittieIf the second use-case is supported, then we are going to need an i386
porter team analogous to any other architecture porting team, that can
take responsibility for choosing an achievable baseline for the oldest
i386 CPU that they intend to test and support, triaging i386-specific
bugs, and providing patches where necessary to keep packages below that
baseline (which will require an increasing amount of work over time if
they choose a baseline that is suitable for historical x86 CPUs, since
increasingly many upstreams refuse to support the i387 FPU). I don't
think it's reasonable any more to expect individual package maintainers
to understand the finer points of the historical x86 instruction set.
This is correct.
This is exactly porter work, and this is what I have already been doing
for years for i386.
A large part of porter work is being a one-trick pony, often submitting
the same fix for many packages. For i386 this is usually some variant of
ifneq (,$(filter $(DEB_HOST_ARCH), i386))
export DEB_CXXFLAGS_MAINT_APPEND += -ffloat-store
endif
Post by Simon McVittieOne factor that makes the second use-case difficult to support is
that even if developers still have old 32-bit x86 hardware, it's very
likely to be considerably newer than our current baseline. For example,
mainstream Intel and AMD 32-bit CPUs gained SSE support around 20 years
ago (Pentium III and Athlon XP). I know there are somewhat newer x86
embedded CPUs with lesser capabilities, but most developers would have
to have deliberately chosen to obtain those, rather than having access
to old machines just because they haven't disposed of them yet.
It is not realistic to expect porters to have hardware matching exactly
the port baseline.
How many people do have hardware matching exactly our amd64 baseline?
Does hardware matching exactly our amd64 baseline even exist?
Post by Simon McVittieI don't think it's realistic to drop i386 completely, and I want to
be able to continue to run legacy 32-bit games; so if an i386 porter
team doesn't materialize otherwise, I'd be willing to help to maintain a
version of i386 that is intended to be a compatibility library stack for
x86_64 machines (similar in scope to what Ubuntu does). However, I am not
willing to spend my time on making packages use i387 in preference to SSE.
Note that the latter is only a problem for use-case 2,
use-case 3 is still a full port but does not have this problem.
I have volunteered as an i386 porter exactly for helping to keep the
port alive on older hardware, and the FPU issues/workarounds in
packages are where I have been working on mostly.
i386 hardware is so numerous and widely spread, that every tiny fraction
of i386 users might be more users than half of our release architectures
combined. It is not even clear whether this is just an exaggeration or
might be literally true:
There are users running unstable on non-SSE i386 hardware reporting bugs
when code wrongly uses SSE, on another buster release architecture it
was discovered only a year after the release that the buster installer
was nonfunctional.
There were surprisingly many users complaining that their hardware was
no longer supported after the i386 baseline was raised from 586 to 686
in stretch.
cu
Adrian
[1] ignoring the Quark, that is anyway not supported by the i386 port
[2] often for financial reasons - most people in IT are so affluent that
they don't even realize how unaffordable 100 Euro investments are
for many people
in some countries there was also a rush to refurbish ancient
hardware for school children this spring
[3] neither should Debian blindly do the opposite