Description
Cygwin v3.4.0 already dropped support for i686, and hence Git for Windows won't be able to provide newer 32-bit builds of the MSYS2 runtime as soon as switching away from the v3.3.x train to the v3.4.x train.
This was coming for a long time, and I thought a lot about the best way to keep i686 support in Git for Windows, but I failed to open a ticket to communicate my plans. This is that ticket.
As of time of writing, Git for Windows v2.39.1's 64-bit installer (i.e. targeting x86_64) has been downloaded a little over 1.6 million times, while the 32-bit installer (i.e. targeting i686) has been downloaded just over 80 thousand times. While download numbers do not correspond exactly 1:1 with user numbers, absent any telemetry they are the best indicator we have for assessing what Windows versions Git for Windows' users need to see supported.
Git for Windows does not have telemetry
Why? Well, we cannot do that. Even if it would be really helpful, e.g. to assess what features to focus on.
But there are a few very, very loud opponents to such a thing who always make a right mess whenever an Open Source project tries to even so much as provide an opt-in way to gather some dependable usage numbers. Even if those numbers would help the Open Source projects a lot. But those opponents think they help the Open Source projects better by making loud noises about privacy concerns.
To stave off such totally unproductive exchanges, Git for Windows simply does not have telemetry, not even opt-in, and won't ever have it. And whenever questions come up like "how many users still need 32-bit support, or support for Windows Vista?" we have to guess. Unsatisfying, but it is what it is.
So roughly speaking, we must assume that one i686 version of Git for Windows is installed for every twenty installed x86_64 versions.
This would suggest that it would be premature to completely drop supporting i686 installers. But once we switch to MSYS2 runtime v3.4.x, as mentioned earlier we won't be able to move the i686 variant of Git for Windows along, we will eternally leave those variants with v3.3.x of the MSYS2 runtime.
Proposed timeline
There are four phases to this:
- Announce the deprecation
- Move the x86_64-variant of Git for Windows over to MSYS2 runtime v3.4.x, leaving the i686-variant lagging behind
- Stop providing i686 builds of Git for Windows, except for MinGit
- Stop providing i686 builds of Git for Windows altogether
For phase 2, I propose to declare Git for Windows v2.40.x to be the last to fully support i686 builds. I will try my best to determine whether this serves Git for Windows' users well enough.
The need for phase 3 (build only 32-bit MinGit but no other official 32-bit artifacts) arises due to some applications bundling 32-bit MinGit, such as Visual Studio 2019, which is supported until April 10th, 2029.
With this information, I intend to announce the deprecation as soon as possible.
As to phases 3/4: I do not want to render myself into a corner by setting a fixed date prematurely, but my gut feeling is that for the start of phase 3, "some time in 2025" should sound like a sensible timeline to aim for.
Action items
- Find the best venue to figure out how many users actually need i686 support
↳ We heard back from Visual Studio, who need to service Visual Studio 2019 (that ships with a 32-bit MinGit) until April 10th 2029
↳ Our best bet is probably the announcement in the release notes combined with the warning in the installer - Phase 1 (leading up to Git for Windows v2.40.0)
- Add the deprecation to the release notes
- Add a deprecation message to the installer that pops up whenever Git for Windows is installed on a 32-bit Windows
- For users installing a 32-bit Git for Windows on a 64-bit Windows, we should strongly advise to install the 64-bit variant of Git for Windows instead.
- Phase 2 (after Git for Windows v2.40.0)
- We will need to split off a
msys2-runtime-3.3
, once again following MSYS2's lead - Git for Windows' automation will need to be taught to build MSYS2 runtime v3.3.x for i686, the other versions for x86_64
- The
/deploy
command of the GitForWindowsHelper GitHub App will need to be taught to special-case the packagesmsys2-runtime
andmsys2-runtime-3.3
, starting only an x86_64 build for the former and only an i686 build for the latter -
git-sdk32
needs to move frommsys2-runtime
tomsys2-runtime-3.3
. -
msys2-runtime
needs to upgrade to v3.4.*
- We will need to split off a
- Phase 3 (some time in 2025)
- We will want to limit the
git-artifacts
workflow for thei686
architecture to build only MinGit (not even BusyBox-based MinGit) - We will want to adjust Git for Windows' home page to no longer suggest downloading the 32-bit installer.
- The
check-for-missing-dlls
workflows inbuild-extra
andgit-sdk-32
need to run only for MinGit
- We will want to limit the
- Phase 4 (some time in 2029)
- We will need to drop the 32-bit parts of the
check-for-missing-dlls
andmain
workflows inbuild-extra
- we will need to stop building i686 variants of all packages, i.d. once again modify the
/deploy
command - We will want to drop i686 support from
git-for-windows-automation
's workflows - We will need to stop
setup-git-for-windows-sdk
from supporting thei686
architecture altogether - We will want to retire (read: archive) the
git-sdk-32
repository
- We will need to drop the 32-bit parts of the