Skip to content

The accelerating bitrot of osx-64 and falling download numbersΒ #2646

@h-vetinari

Description

@h-vetinari

Dropping support for anything related to the size of the pool of potential users is always a contentious topic in conda-forge. We've taken forever to move to cos7, move to macOS 10.13 (much less 11.0), and we haven't come to a conclusion on ppc support either.

To a degree, this is healthy - we shouldn't drop support at the first opportunity - but on the other hand, we need to be pragmatic enough to pull the plug on stuff if there are either no more users, or we cannot provide a baseline level of packaging quality (bugfree-ness, security posture).

I don't/didn't think that osx-64 would be up for debate in the near future, but on the other hand, a lot of signs are accumulating. Anaconda dropped Intel Macs this summer, many other big packages (e.g. upstream pytorch) have long done so as well (and we're struggling quite a bit with v2.9 due to this). There are many more stories of upstream osx-64 support bitrotting quickly, but those were all around non-central packages that we can mostly work around (like we do for the whole google-sphere of packages like abseil, grpc, protobuf, etc.).

However, what caught my eye was that cryptography will drop support for osx-64 in their next release: pyca/cryptography#13520. Since osx-64 is still a tier-2 platform in Rust (the guts of cryptography, ever-increasingly), I expect us to be able to keep things going for a while longer, but this really is a clarion call IMO. If - for whatever reason - we lose the ability to publish security-critical library updates on a given platform, that's the absolute latest point where we have to declare it dead and gone.

Other relevant data points:

  • The last pre-M1 hardware was sold into 2020 AFAICT
  • osx-64 is still supported until MacOS 26 (Tahoe), which is the last one to support (some) Intel macs
  • MacOS 26 will be EOL upstream in Sept. 2028, if the recent patterns on these dates hold
  • Microsoft is deprecating the osx-64 CI agents (while still far behind in delivering osx-arm64 agents); once that happens, we'd have to switch to cross-compiling osx-64 from osx-arm64. In theory this should be exactly what we've been doing for years the other way around (i.e. cross-compiling osx-arm64 from osx-64), but at our scale, I wouldn't be surprised if issues arise from having to do that switch.

Download numbers (as taken through the proxy of cryptograpy, which, as any proxy, is far from perfect) have also been falling off a cliff in the last year (these are only osx-* downloads from PyPI, courtesy of the cryptography maintainers)

Image

Conda(-forge)'s own data is tainted by the downloads from our own CI, see: anaconda/anaconda-package-data#64

Overall, I think we could probably squeeze another 2, 3, 4 years out of osx-64 to the degree that stuff builds without issue (assuming the cross-compilation switch works ~smoothly, and key packages stay compilable with minimal patching), but I wanted to document the situation as I was looking into it a bit this week. And perhaps people have other opinions or additional data points about the whole thing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions