Description
For some time, we've had a pretty unpredictable release process, with long delays between releases. I see two main root causes for this. First, only Dropbox employees have been able to act as release managers -- mainly since we rely heavily on type checking our internal code base to avoid regressions and to validate new releases. This limits the available effort release managers have for releases (we also have our regular work responsibilities that often take precedence, unfortunately). Second, an infrequent release process tends to result in many regressions that take a lot of time to investigate and fix. This tends to make making a release a big undertaking, which also tends to reduce the frequency of releases, since fixing regressions is not a particularly fun activity.
I have some thoughts about how we might be able to make monthly releases, for example, hopefully fairly reliably. Here's a summary:
- Have at least 3-4 active maintainers that could work as release managers, including people not working at Dropbox. If each release manager owns around 1/4 of releases, for example, the workload doesn't need to be very high.
- Since the Dropbox internal codebase has been very helpful in finding regressions, I think that we should continue to use that. However, this could happen asynchronously from the mypy release process in the future, so that releases don't need to be blocked on this.
- To avoid regressions delaying a release, we can move to a policy where the default option when encountering a regression is for the release manager to revert the change, unless a fix is almost immediately available. If releases are more frequent, missing a single release does not have to be a big deal. We can merge the change again after the regression has been fixed (or after we've decided that the regressions is acceptable).
- Speeding up the release process probably increases the chances of regressions. To reduce the impact, we could also have a policy of having a bugfix release around a week after each feature release (unless no regressions have been reported). We could even have multiple bugfix releases per feature release, since bugfixes are often quite low risk.
Thoughts? Are there any volunteers for the release manager role?