-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Announce deprecation of 32-bit Git for Windows, define a timeline #4279
Comments
Edit: we seem to be starting phase 2 before we drop Windows 7/8
So 2.41.0 will be the expected start of phase 2?
We might also want a different deprecation notice for users installing 32 bit Git for Windows on a 64 bit OS, recommending they install the 64 bit version instead. |
Yes. Given that the next MSYS2 runtime version jump will get us outside of i686 land, and only the next jump after that will get us outside of Windows 7 land, I would say that we have to do that.
That's my current thinking. I am open to arguments in favor or against that.
Oh yes, very good idea! |
So the preliminary timeline is
|
Yes. Does that sound good to you? |
Looking at just the numbers, it looks like we're rushing phase 1 and dragging our feet on phase 3, but knowing how the numbers came to be, I'd say that's okay. |
Just to confirm, this means actively blocking installation or no produced binaries? |
For Windows versions this means raising the minimum required version in the installer, including a msys2-runtime based on cygwin 3.5, and preparing for use of newer APIs and for potentially dropping compatibility code. For i686, it means archiving git-sdk-32 and not producing binaries anymore. |
I found out that we probably need to insert a phase 2.5 because apparently there is one user of i686 MinGit who needs support until 2029: Visual Studio. |
2029? That's quite the extension of our timeline. What degree of support are we talking about? |
It would be easier to gift 🎁 brand new |
That one user ("Visual Studio") is actually an application that is used by millions of human users. @bricss if you have the kind of cash as to gift all of those users x64 machines, I would gladly take that money in return for extending the 32-bit support to 2029.
@rimrul since Visual Studio bundles MinGit only, that's what I would try to limit phase 2.5 to. Like, stop building 32-bit installers, portable Git and |
…atibility We plan to update the main `msys2-runtime` package to 3.4.x before Git for Windows v2.41.0, [1] but Cygwin 3.4.x only supports AMD64 [2]. Create a separate Package for Version 3.3 of the runtime like MSys2 [3] to allow us to provide x86 releases according to our x86 deprecation timeline [1]. [1] git-for-windows/git#4279 [2] https://github.com/cygwin/cygwin/blob/HEAD/winsup/cygwin/release/3.4.0#L6 [3] msys2#3379 Signed-off-by: Matthias Aßhauer <[email protected]>
…atibility We plan to update the main `msys2-runtime` package to 3.4.x before Git for Windows v2.41.0, [1] but Cygwin 3.4.x only supports AMD64 [2]. Create a separate Package for Version 3.3 of the runtime like MSys2 [3] to allow us to provide x86 releases according to our x86 deprecation timeline [1]. [1] git-for-windows/git#4279 [2] https://github.com/cygwin/cygwin/blob/HEAD/winsup/cygwin/release/3.4.0#L6 [3] msys2#3379 Signed-off-by: Matthias Aßhauer <[email protected]>
…tures The purpose of introducing a separate `msys2-runtime-3.3` package is to allow supporting Git for Windows on i686 setups, even though it cannot receive updates to the latest MSYS2 runtime versions any longer because the MSYS2 project dropped i686 support a long time ago. To that end, let's actually build `msys2-runtime-3.3` _only_ for i686, and `msys2-runtime` _only_ for x86_64. That split will allow us to change the `msys2-runtime-3.3` package definition so that it supersedes ("replaces") `msys2-runtime` and automagically updates the 32-bit Git for Windows SDKs out there. This is a step toward phasing out i686 support of Git for Windows, see: git-for-windows/git#4279 (comment) for more details about that plan. Signed-off-by: Johannes Schindelin <[email protected]>
This marks the beginning of the end of Git for Windows' i686 support (as per git-for-windows/git#4279, the plan is to keep building i686 variants of Git for Windows with only a legacy MSYS2 runtime until 2025, after that only build i686 MinGit but no longer i686 installer or Portable Git until 2029, then drop i686 support altogether). Signed-off-by: Johannes Schindelin <[email protected]>
It is not reasonable to ask for such a big undertaking when we entered the maintenance mode of 32-bit Git for Windows. The cygheap issues are relevant only when the i686 variant of the MSYS2 runtime is used, and most often occur when used interactively. Since the vast majority of setups out there support running the x86_64 variant of Git for Windows, the only remaining relevant concern might be MinGit (i686), as it is used by Windows applications that still need to support both x86_64 and i686 setups, such as Visual Studio. However, most scenarios where MinGit is used do not even involve the MSYS2 runtime (running most Git operations via All of this is to say: the benefit of pouring resources into the mentioned tickets is so small that it does not justify the cost. @proxy-m if you care strongly, I encourage you to use your own resources to work on this, i.e. your time and skill. I will be glad to merge any correct PR you open to fix those bugs. |
https://gitforwindows.org/32-bit.html already announced the timeline. |
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:
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
↳ 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
msys2-runtime-3.3
, once again following MSYS2's lead/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 lattergit-sdk32
needs to move frommsys2-runtime
tomsys2-runtime-3.3
.msys2-runtime
needs to upgrade to v3.4.*git-artifacts
workflow for thei686
architecture to build only MinGit (not even BusyBox-based MinGit)check-for-missing-dlls
workflows inbuild-extra
andgit-sdk-32
need to run only for MinGitcheck-for-missing-dlls
andmain
workflows inbuild-extra
/deploy
commandgit-for-windows-automation
's workflowssetup-git-for-windows-sdk
from supporting thei686
architecture altogethergit-sdk-32
repositoryThe text was updated successfully, but these errors were encountered: