Skip to content
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

all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22 #57004

Closed
heschi opened this issue Nov 30, 2022 · 16 comments
Closed

all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22 #57004

heschi opened this issue Nov 30, 2022 · 16 comments

Comments

@heschi
Copy link
Contributor

heschi commented Nov 30, 2022

Per discussion in #52188, Microsoft, Chrome, Git and others will stop supporting Windows 8 and 8.1 at the beginning of next year.

In contrast to Windows 7, 8's corresponding Windows Server releases, Server 2012 and 2012R2, will not fall out of support for some time. Extended support ends later this year, but "extended security updates" don't end until 2026. I don't have a sense of how important that install base is to us.

On behalf of @golang/release, I propose we announce the end of support either in the Go 1.20 or 1.21 release notes and shut down the builder in the subsequent release. I don't feel strongly about which, and I think it'd be interesting to have community input on the timing on this one.

cc @golang/windows

@gopherbot gopherbot added this to the Proposal milestone Nov 30, 2022
@heschi heschi changed the title proposal: all: end support for Windows 8, Windows Server 2012 in Go 1.21 proposal: all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22 Nov 30, 2022
@rsc
Copy link
Contributor

rsc commented Nov 30, 2022

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

@rsc
Copy link
Contributor

rsc commented Dec 7, 2022

Despite the possibility of extended support for customers paying Microsoft, it seems clear that nearly everyone is dropping support for Windows 8, including .NET. We would need to announce in the Go 1.20 release notes and then Go 1.21 would be the first release without support, and then Go 1.22 would mark the end of Go 1.20 being supported, which would be the real end. That Go 1.22 release would be in Feb 2024.

@rsc
Copy link
Contributor

rsc commented Dec 7, 2022

Based on the discussion above, this proposal seems like a likely accept.
— rsc for the proposal review group

@bradfitz
Copy link
Contributor

proposal: all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22
...
In contrast to Windows 7, 8's corresponding Windows Server releases, Server 2012 and 2012R2, will not fall out of support for some time. Extended support ends later this year, but "extended security updates" don't end until 2026. I don't have a sense of how important that install base is to us.

I'm confused by this wording. Is this saying that Windows 7 (aka Windows Server 2008) will continue to be supported but Windows 8 (aka Windows Server 2012) will not? Only 7 and 10+?

Or is this about unsupporting both 7 and 8?

Or is 7 already unsupported? But https://github.com/golang/go/wiki/MinimumRequirements says:

For Go 1.11 and later: Windows 7 and higher or Windows Server 2008 R2 and higher. We test on Windows Server 2008 R2, 2012 R2, and 2016, which are roughly Windows 7, Windows 8.1, and Windows 10.

As a data point (not even in support of any particular argument), our Go application has Windows user distribution as follows:

Win 10+	 96.8%
Win 7 	 1.7%
Win 8.1	 1.3%
Win 8	 0.1%

Pre-Win10 is low percent, for sure, but in absolute numbers it's still a good number of users. But I agree the Go project can't run builders & support everything forever, especially when upstream doesn't.

In any case, I'll note that https://tip.golang.org/doc/go1.20#ports hasn't been updated yet to say anything about upcoming Windows deprecations. Is that going to happen before rc2/final?

@dmitshur
Copy link
Contributor

@bradfitz There's a separate proposal for just Windows 7, #57003.

@bradfitz
Copy link
Contributor

Ah, gotcha. Thanks!

@rsc
Copy link
Contributor

rsc commented Dec 14, 2022

No change in consensus, so accepted. 🎉
This issue now tracks the work of implementing the proposal.
— rsc for the proposal review group

@rsc rsc changed the title proposal: all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22 all: end support for Windows 8, Windows Server 2012 in Go 1.21 or 1.22 Dec 14, 2022
@rsc rsc modified the milestones: Proposal, Backlog Dec 14, 2022
@heschi
Copy link
Contributor Author

heschi commented Dec 14, 2022

Yeah, I mentioned that in the original comment. Like I said there, the question is how much we're concerned about those users. And as Russ pointed out, it'll continue to get Go security fixes until 1.20 falls out of support in early 2020 2024.

@zx2c4
Copy link
Contributor

zx2c4 commented Dec 14, 2022

Saw that, after posting and immediately Xd my comment. This is somewhat concerning, but following .NET seems fine to me ultimately so no objection.

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/457695 mentions this issue: doc/go1.20.html: pre-announce dropping Windows 7, 8, and friends

@heschi
Copy link
Contributor Author

heschi commented Dec 14, 2022

I'm updating the release notes to announce end of support after 1.20. If there's a good reason to delay to 1.21 we can consider it.

gopherbot pushed a commit that referenced this issue Dec 14, 2022
For #57003, #57004.

Change-Id: Ic1386a0ce83897411fbc68c83a9125af1cc11b54
Reviewed-on: https://go-review.googlesource.com/c/go/+/457695
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
@olivielpeau
Copy link

As a data point, I work on the Go datadog-agent and 20% of its Windows install base is still on Windows Server 2012/R2. As a point of comparison, less than 2% is on Windows Server 2008R2.

I can't tell how representative of the Go Windows install base these numbers are, but 20% is a fairly high number.

For what it's worth, the .NET project will continue to support Windows Server 2012/R2 for Windows users who purchase Extended Security Updates. It's likely that a significant number of enterprise Windows users will remain on Windows Server 2012/R2 until closer to the end of the Extended Security Updates in 2026.

I don't know how much of a burden supporting Windows Server 2012/R2 is for the Go project, but is a slightly longer support period still on the table?

@heschi
Copy link
Contributor Author

heschi commented Feb 8, 2023

Thanks for the information. Do you have a sense of whether those users are likely to pay for the extended security updates? Would 6 months more Go support make a material difference?

In general, we're not going to be able to match Microsoft's paid support timelines, so we have to draw the line somewhere. The end of "extended support" seems like a reasonable place to me. Hopefully that 20% will decline over the next year.

@olivielpeau
Copy link

olivielpeau commented Feb 10, 2023

@heschi thanks for the response

Do you have a sense of whether those users are likely to pay for the extended security updates?

We're not seeing a steep downwards trend on the usage of Windows Server 2012 yet, so given the timeline of the end of "extended support" we would expect that quite a few of these users will rely on Microsoft's paid support while they migrate to later Windows versions. But we don't know about the support arrangements they have/plan to have with Microsoft.

Would 6 months more Go support make a material difference?

I think it would to these users, but for sure Go can't match Microsoft's paid support timelines.

Unfortunately I don't have more hard data than this number of 20%. It'd be interesting to see if the announcement in the Go 1.20 release notes of the end of support of Windows 2012 in Go 1.21 will lead to more reactions from the community.

@dmitshur dmitshur modified the milestones: Backlog, Go1.21 May 16, 2023
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/500239 mentions this issue: doc/go1.21: document macOS and Windows requirements

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/509335 mentions this issue: os: remove 5ms sleep on Windows in (*Process).Wait

gopherbot pushed a commit that referenced this issue Jul 26, 2023
The 5ms sleep in (*Process).Wait was added to mitigate errors while
removing executable files using os.RemoveAll.

Windows 10 1903 implements POSIX semantics for DeleteFile, making the
implementation of os.RemoveAll on Windows much more robust. Older
Windows 10 versions also made internal improvements to avoid errors
when removing files, making it less likely that the 5ms sleep is
necessary.

Windows 10 is the oldest version that Go supports (see #57004), so it
makes sense to unconditionally remove the 5ms sleep now. We have all
the Go 1.22 development cycle to see if this causes any regression.

Fixes #25965

Change-Id: Ie0bbe6dc3e8389fd51a32484d5d20cf59b019451
Reviewed-on: https://go-review.googlesource.com/c/go/+/509335
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
@golang golang locked and limited conversation to collaborators Jul 12, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
Archived in project
Development

No branches or pull requests

8 participants