On Fri, Mar 4, 2022 at 1:44 AM Petr Viktorin <encukou@gmail.com> wrote:
On 04. 03. 22 0:30, Brett Cannon wrote:
> Do we officially support NetBSD? Do you know how to find out if we do?
> You might think to look at
> https://www.python.org/dev/peps/pep-0011/#supporting-platforms
> <https://www.python.org/dev/peps/pep-0011/#supporting-platforms> , but
> that just loosely defines the criteria and it still doesn't list the
> actual platforms we support. (BTW I don't know if we do officially
> support NetBSD, hence this email.)
>
> I think we should clarify this sort of thing and be a bit more upfront
> with the level of support we expect/provide for a platform. As such, I
> want to restructure PEP 11 to list the platforms we support, not just
> list the platforms we stopped supporting. To do this I want define 3
> different tiers that outline what our support requirements and promises
> are for platforms.

While you're at it: consider moving the lists to the devguide, so the
PEP would only contain the general process & criteria.

Why the devguide? I view the list of platforms as important for public consumption as for the core dev team to know what to (not) accept PRs for.
 


> Tier 1 is the stuff we run CI against: latest Windows, latest macOS,
> Linux w/ the latest glibc (I don't know of a better way to define Linux
> support as I don't know if a per-distro list is the right abstraction).
> These are platforms we won't even let code be committed for if they
> would break; they block releases if they don't work. These platforms we
> all implicitly promise to support.
>
> Tier 2 is the platforms we would revert a change within 24 hours if they
> broke: latest FeeBSD, older Windows, older macOS, Linux w/ older
> glibc.This is historically the "stable buildbot plus a core dev" group
> of platforms. The change I would like to see is two core devs (in case
> one is on vacation), and a policy as to how a platform ends up here
> (e.g. SC must okay it based on consensus of everyone). The stable
> buildbot would still be needed to know if a release is blocked as we
> would hold a release up if they were red. The platform and the core devs
> supporting these platforms would be listed in PEP 11.

Do we need two core devs to revert changes?

No, but consider you are trying to land something before b1 and a tier 2 platform keeps failing. You have no idea why, but e.g. Victor is on vacation and is unavailable to help. I personally wouldn't want to wait until the next version of Python just because a platform we say we support had its expert take an inconvenient vacation.
 
What are the duties of someone listed for a platform, anyway?

I would expect they would be the reviewer of PRs for that platform. Also domain expert to help out with questions as they arise if their platform could potentially block a release or feature getting in.
 

> Tier 3 are platforms we accept PRs for to keep working, but they won't
> block a release. At least one core dev must be listed to be in charge of
> PRs that affect the platform. A buildbot would be nice but not required.
> I'm thinking either historical platforms we support or something like
> Emscripten that's working towards being a tier 2 platform. I'm not sure
> if we want to have explicit approval to be in this tier beyond the
> outlined requirements, but obviously if a core dev isn't keeping up with
> PRs then the platform will be dropped.
>
> All other platforms we do not directly support in the repository and it
> is up to the community to keep functioning. We can obviously keep
> accepting general patches to up compatibility, but platform-specific
> patches for anything outside of these tiers wouldn't. No issue if
> someone provides a buildbot for their own benefit, but these buildbots
> would never hold anything up.
>
> When a Python version hits b1, then that platform is considered
> supported for that version as long as the requirements outlined above
> continue to be met. Once the Python version hits EOL then like anything,
> support ends no matter what. We could capture the supported platforms
> for a version in the release schedule PEP if people want >
> I would expect appropriate labels being added to the builders listed at
> https://buildbot.python.org/all/#/builders
> <https://buildbot.python.org/all/#/builders> to signify which platforms
> we block releases for (e.g. `tier-1,`, `tier-2`, or `release-blocker` as
> a generic label).
>
> I would expect PEP 11 to list the appropriate C symbol that's set for
> that platform, e.g. __linux__.
>
> I don't know if we want to bother listing CPU architectures since we are
> a pure C project which makes CPU architecture less of a thing, but I'm
> personally open to the idea of CPU architectures being a part of the
> platform definition.

IMO it would be good to be explicit wrt. testing and support. There's a
lot of arch/compiler assumptions still hidden in the codebase.

👍 As I replied to Christian, it seems people want explicit CPU architectures listed.

-Brett
 

> I don't think we should cover C compilers here as that's covered by PEP
> 7. Otherwise PEP 7 should only list C versions/features and PEP 11 lists
> compilers and their versions.

I think it would be good to move that here. It's a “platform support”
matter, not “code style”.

> FYI the tier support idea and the rough definitions above come from
> Rust: https://doc.rust-lang.org/nightly/rustc/platform-support.html
> <https://doc.rust-lang.org/nightly/rustc/platform-support.html> .
>
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-leave@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/ZPBSHENP3V7KHNPYWE6BEQD5ASES2NLV/
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/QXH2ZTE2DZOGVTZYW2TVQXXDF3XVYV7D/
Code of Conduct: http://python.org/psf/codeofconduct/