Open bradfitz opened 6 years ago
I just came here to suggest the same thing. SGTM.
Change https://golang.org/cl/82275 mentions this issue: doc/go1.10: preannounce removal of OS X 10.8 support in Go 1.11
Looks like we could plausibly drop support in Go 1.11 for both Mountain Lion (as previously agreed) and also Mavericks. By the time Go 1.11 comes out in August 2018, Mavericks will have gone two years since its last security update.
version | released | updated | security update |
---|---|---|---|
OS X 10.8 Mountain Lion | Jul 2012 | Oct 2013 (10.8.5) | Aug 2015 (2015-006) |
OS X 10.9 Mavericks | Oct 2013 | Sep 2014 (10.9.5) | Jul 2016 (2016-004) |
OS X 10.10 Yosemite | Oct 2014 | Aug 2015 (10.10.5) | Jul 2017 (2017-003) |
OS X 10.11 El Capitan | Sep 2015 | Jul 2016 (10.11.6) | Dec 2017 (2017-005) |
macOS 10.12 Sierra | Sep 2016 | Jul 2017 (10.12.6) | Dec 2017 (2017-002) |
macOS 10.13 High Sierra | Sep 2017 | Dec 2017 (10.13.2) | — |
Change https://golang.org/cl/83795 mentions this issue: doc/go1.10: preannounce deprecation of OS X 10.9 Mavericks
Filed #23122 for the actual removal work (whatever that is). Looks like we'll be caught up once Go 1.11 is out and then once caught up we should probably plan to deprecate one Mac OS version each year, alternating between preannounce and remove.
Go 1.12 preannounces dropping Yosemite Go 1.13 drops Yosemite Go 1.14 preannounces dropping El Capitan Go 1.15 drops El Capitan Go 1.16 preannounces dropping Sierra etc.
Let's make this issue the open-forever tracking bug for this sequence. Moving to Go 1.11; once Go 1.12 milestone is created, can move to Go 1.12.
One bit of information ignored by the above table is which Mac hardware is dropped by each OS versions. Some macOS versions are "tocks" that drop hardware support, others are "ticks" that don't drop hardware support. I think this should be analyzed when taking decisions.
Also this page reports the usage share between different macOS versions: http://gs.statcounter.com/macos-version-market-share/desktop/worldwide
Mavericks is about 5% of all Macs, while Mountain Lion is non existing.
The statcounter.com page makes no sense to me. I don't believe their numbers at all.
Change https://golang.org/cl/151360 mentions this issue: doc: preannounce dropping macOS 10.10 support
Change https://golang.org/cl/151361 mentions this issue: doc: fix formatting for Darwin entry
@rsc what is wrong with the statcounter? you just read it down in a line - they all seem to add to 100% (or close enough to it - there are probably lots of versions in use that they drop due to very low usage, and combined maybe less than 5% ?).
Also, is there some reason the OSX support is being terminated so early compared to other platforms? Windows server 2008 is being supported for Go 1.11 but the latest OS X version is 2013?
Size of test matrix, frequency of OS releases, upgrade rates.
Understood, but as a developer of OS X software I’m surprised at the number of generations actually in use. Plus, I would think the apis in use by Go runtime are fairly static and unlikely to change. It would be a shame that recent builds just stopped working because of a minor runtime change that used a new feature when an older one would suffice. I can definitely see “only verified on xxx” with an eye towards not intentionally breaking things...
I can definitely see “only verified on xxx” with an eye towards not intentionally breaking things...
I don't think anyone is planning on intentionally breaking anything. This is more of a "only verified on" situation.
With the upcoming 1.12 we've moved from using raw system calls to libSystem system calls on Darwin. That should hopefully lessen the chance of needing Darwin-version-specific code in the distribution. That in turn might help avoid unintentional breakages.
Intentionally was the wrong word, should of been knowingly. That is good news on the Darwin impl front.
Well, we have intentionally broken things for unsupported versions in the past if it means we can simplify code. And in several cases, simplifying code was part of the motivation of removing support for an old OS version.
I understand. Seems to me though the bar should be pretty high for a tool that is used to build other tools, as the destination platform may not be fully represented (embedded systems, etc. that don't show up on penetration lists) - but just MO as always.
Change https://golang.org/cl/174521 mentions this issue: doc/go1.13: start doc, note macOS, FreeBSD deprecations
From discussions with Chrome team, we have no plans to deprecate macOS 10.11 for Go 1.14. So nothing to announce for 1.13. Kicking the can down the road.
Please never drop any Mac OS X, OS X, and macOS releases. Ever. One of Go's main advantages is that it builds static binaries, and hence binaries don't rely on the libraries that come with the OS. By mandating that the resulting binaries need to run on all Mac OS X, OS X, and macOS releases, Go would have a huge advantage over other languages.
Binaries that can run on, say, Mac OS X 10.4 can still run on whatever ever-changing macOS is out there today, right? (Apart from 386 vs. x86_64). Apple users are sick and tired of the constant urge to update not only the software, but also the machines.
Point in case: 2007-ish Macs that would otherwise be perfectly capable machines (e.g., when using Linux) do not even get the latest macOS anymore. This is not only expensive, but also planned obsolescence which is evil to the environment.
Looks like we could plausibly drop support in Go 1.11 for both Mountain Lion (as previously agreed) and also Mavericks.
Why? To force users on the latest macOS releases, and hence force them to throw away perfectly good machines and buy new hardware?
Apple continues to put out new macOS releases. We can't run builders for all of them forever.
Why not just build on the oldest one, the binaries should also run on newer systems.
@probonopd, sorry, that's not happening.
There's a maintenance cost for each operating system we support, especially for older ones, holding us back, making us keep workarounds alive, forcing us to keep multiple codepaths for old APIs (when new ones aren't available) vs newer APIs (when the older ones have been removed later), etc.
Why not build only for the old Mac OS X versions? Binaries built on older Mac OS X shall run on newer macOS versions, too (unless Apple broke them).
Never use new APIs when old ones are there. Because not everyone has the new ones, but everyone has the old ones. This is how "backward compatibility" works. My 2 cents.
Binaries built on older Mac OS X shall run on newer macOS versions, too (unless Apple broke them).
Apple is actively trying to break them. They are intentionally forcing people off of old APIs. In most cases the binaries will still work, but they won't be signable/notarizeable/whatever they call it.
So we have to move to newer APIs so that people can notarize their binaries. So that means we can't support older OS versions that don't have the new APIs. Unless we keep multiple implementations and have a build-time switch. Or we give up on Go binaries being notarized. None of these are great options, but we have to pick one.
Notarized. This is exactly the kind of stuff why I am trying to stay away from the recent macOS releases and am still on 10.9. From release to release, macOS seems to become more cumbersome. Personally, I could live very well without app store and notarization, but I guess it may be important for some users. Oh well.
I think with current and future security threats, notarized is a must have feature - maybe a very small percentage of very tech savvy users could get by without it.
On Nov 1, 2019, at 11:05 PM, probonopd notifications@github.com wrote:
Notarized. This is exactly the kind of stuff why I am trying to stay away from the recent macOS releases and am still on 10.9. From release to release, macOS seems to become more cumbersome. Personally, I could live very well without app store and notarization, but I guess it may be important for some users. Oh well.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
I was only offering it up as evidence that supporting later releases is a wise move.
On Nov 2, 2019, at 9:32 AM, Brad Fitzpatrick notifications@github.com wrote:
Please find another forum to discuss everybody's operating system preferences and skill levels.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
Change https://golang.org/cl/210137 mentions this issue: doc/go1.14: preannounce dropping macOS 10.11 support
Change https://golang.org/cl/213878 mentions this issue: doc: update the minimum supported macOS version to 10.11
Change https://golang.org/cl/214057 mentions this issue: misc/cgo/test: re-enable darwin cgo tests in race mode
Change https://golang.org/cl/214058 mentions this issue: runtime: re-enable TestArenaCollision on darwin in race mode
Change https://golang.org/cl/214059 mentions this issue: crypto/x509: bump minimum macOS version to 10.11
Change https://golang.org/cl/226859 mentions this issue: [release-branch.go1.14] doc: update the minimum supported macOS version to 10.11
Change https://golang.org/cl/234521 mentions this issue: doc: require macOS 10.12 or later
Change https://golang.org/cl/234522 mentions this issue: internal/dl: update minimum macOS version to 10.12
Change https://golang.org/cl/275299 mentions this issue: doc/go1.16: preannounce dropping macOS 10.12 support
Sent CL 275299 for Go 1.16. Moving to the next milestone.
For future reference, the pattern so far:
(Which is consistent with the plan in https://github.com/golang/go/issues/23011#issuecomment-351471129.)
Change https://golang.org/cl/312692 mentions this issue: dashboard: limit macOS 10.12 builders to at most go1.16
/cc @dmitshur Can you add a note for changes in 1.17?
Change https://golang.org/cl/316889 mentions this issue: doc/go1.17: require macOS 10.13 or later
Mailed CL 316889 for 1.17. Will move this to the next milestone when it's submitted.
Change https://golang.org/cl/318329 mentions this issue: net, runtime: drop macOS 10.12 skip conditions in tests
Change https://golang.org/cl/344071 mentions this issue: internal/dl: update minimum macOS version to 10.13
We don't currently plan for Go 1.19 to drop support for macOS 10.13, so there's nothing to say in Go 1.18 release notes. Moving to the next milestone. CC @golang/release.
Change https://go.dev/cl/419194 mentions this issue: dashboard, cmd/makemac: drop macOS 10.12 builder
Change https://go.dev/cl/454957 mentions this issue: doc/go1.20: preannounce dropping macOS 10.13 and 10.14 support
The CL above covers the work for 1.20. Moving to 1.21.
Change https://go.dev/cl/518235 mentions this issue: internal/dl: update system requirements
Change https://go.dev/cl/549655 mentions this issue: doc/go1.22: pre-announce dropping macOS 10.15 support
Note, Aug 2022: See https://github.com/golang/go/issues/23011#issuecomment-738395341 for the macOS deprecation schedule.
Apple continues to put out new macOS releases. We can't run builders for all of them forever.
I propose we announce in the Go 1.10 release notes that Go 1.10 will be the last release to officially support macOS 10.8 (Mountain Lion).
macOS 10.8 was last updated Oct 3, 2013, over 4 years ago.
(macOS 10.9 was last updated Mar 21, 2016, 19 months ago, which is somewhat more recent)
Apple doesn't publish official End-of-Life dates for macOS versions, but I read that their security policy is that they issue security updates for the past 3 releases.
Given that they're on 10.13 now, that means 10.13, 10.12, and 10.11 are supported by them.
Our policy of additionally supporting 10.10 and 10.9 in Go 1.11 would be even more.
/cc @rsc @ianlancetaylor