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

Third-party removal policy: unmaintained projects #12849

Open
srittau opened this issue Oct 18, 2024 · 7 comments
Open

Third-party removal policy: unmaintained projects #12849

srittau opened this issue Oct 18, 2024 · 7 comments
Labels
project: policy Organization of the typeshed project

Comments

@srittau
Copy link
Collaborator

srittau commented Oct 18, 2024

Cf. #12848 and #12847. I suggest to amend our removal policy to say:

Third-party stubs are generally removed from typeshed when one of the
following criteria is met:

  • The upstream package ships a py.typed file for at least six months,
    and the upstream type annotations are of a comparable standard to those in
    typeshed,
  • the package does not support any of the Python versions supported by
    typeshed, or
  • the package is no longer maintained.

With the third criterion being new. The wording ("generally") leaves us some wiggle room in case we want to continue supporting stubs for an unmaintained package.

@srittau srittau added the project: policy Organization of the typeshed project label Oct 18, 2024
@AlexWaygood
Copy link
Member

This makes sense to me, and we've already been following this for some stubs packages. But we'll inevitably have conversations about what it means for a project to be "unmaintained" if we leave it undefined. How about we define this as "the package is either archived, publicly declared as unmaintained/abandoned/deprecated, or has had no commits to the default branch for 2 years or more"?

@srittau
Copy link
Collaborator Author

srittau commented Oct 18, 2024

Personally, I would prefer not to define this - at least for now. I'd expect this to mainly be a fallback clause when something starts to break (like now with boto and playsound), and to be applied fairly infrequently. This gives us more flexibility, and I don't expect these to be overly contentious.

If it turns out we are invoking that clause frequently - or it causes contention - we could always narrow it down later on with the experience gathered.

@AlexWaygood
Copy link
Member

Maybe we could explicitly acknowledge that it's a subjective call, in that case? "The package appears, according to the best judgement of the typeshed maintainers, to be unmaintained"?

@srittau
Copy link
Collaborator Author

srittau commented Oct 18, 2024

That sounds fine to me.

@JelleZijlstra
Copy link
Member

If we anticipate doing this mostly when the package causes maintenance problems (e.g., it doesn't import on new Python versions), then we should probably make that explicit. Some unmaintained projects may still be in use and work fine, and keeping them in typeshed gives users the opportunity to improve the stubs.

@AlexWaygood
Copy link
Member

Synthesis: we should try to use a wording that retains flexibility for us but is also explicit about specific situations where we know we might often use this new criterion

@Avasam
Copy link
Collaborator

Avasam commented Oct 18, 2024

I think it's worth spelling out the case where a package's status is "unmaintained" simply because the next version has changed name (a few historical examples, not necessarily related to typeshed: boto -> boto3, PySide --> PySide2 -> Pyside6, winrt --> winsdk -> PyWinRT, BeautifulSoup -> beautifulsoup4, PIL --> Pillow, sk* -> scikit-*)

I don't feel that differently about this case as I do dropping NumPy v1 support for NumPy v2.

(I know this doesn't answer the general case of an unmaintained package causing us maintenance issues, but I think its one of the good justifications we can use)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
project: policy Organization of the typeshed project
Projects
None yet
Development

No branches or pull requests

4 participants