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
Mypy 0.790 release postmortem #9630
Comments
Thank you for the write-up! A few questions/remarks:
|
Thanks for the write up and for all the work to make the release happen! Some notes: Re: surfacing typeshed issues before release Re: syncing typeshed more frequently Re: specific typeshed issues
Re: typeshed CI and mypy self test |
Now that we'll be using modular typeshed in the next release (not shipping third-party package stubs with mypy) and mypy primer, things should be better. |
The 0.790 release process was delayed by about two months and I promised to write a postmortem.
Relevant issue tracking the 0.790 release: #9290
Immediate causes of the delay
Here are top immediate things that caused the delay, in my opinion:
Root cause analysis
Suggested short-term improvements
I'm proposing several short-term improvements to help avoid similar delays in the future.
Get back to more frequent releases. Let's try to release every 4-6 weeks. This way the amount of changes in each release will be more manageable. We may need one or two volunteers to help with releases to make this feasible.
Speed up wheel builds. If we can make wheel builds faster, iterating on typeshed changes (and mypy fixes) will be more productive. (@hauntsaninja has already made a PR to improve the situation: mypyc/mypy_mypyc-wheels#11)
Set up periodic job to validate typeshed against Dropbox internal repos. I don't want to stop using internal repos for testing (at least not yet; see below), since we've found many issues that way. If we can detect and fix typeshed issues more quickly, it's less likely that there will be errors in sufficient numbers during a release to delay it.
Sync typeshed weekly. Having a consistent cadence for syncing typeshed would remove one step from the release process (syncing typeshed). We'd usually be able to cut the release branch from master, instead of having to first perform a typeshed sync. This way testing the release build can start sooner. Syncing typeshed frequently will also make it more likely that issues will be found sooner. Here it would be good to have an owner for this, or perhaps we can automate this.
Document how to test development builds. If we document how to install development build wheels (and release candidates) and suggest that users test them, we might catch more issues before we cut the release branch.
Suggested longer-term improvements
Switch to a modular typeshed. If we switch to a modular typeshed, we wouldn't ship most third-party stubs with mypy. Third-party stub versions would also no longer be tightly coupled to mypy versions, making stub issues less of a problem, as we can release fixes to stubs independent of mypy releases, and users don't have to update to later stub versions each time they update mypy. (Relevant issue: python/typeshed#2491)
Don't rely on testing internally at Dropbox. Perhaps after a switch to modular typeshed we can decouple our release process from testing internally at Dropbox. This might involve asking other projects and organizations to test release candidates, and making the release candidate phase longer and better documented. If we'd do this, all contributors could manage releases without being dependent on maintainers who are Dropbox employees.
The text was updated successfully, but these errors were encountered: