ZooKeeper Release Management Process
This document is currently a work in process and should not be considered authoritative.
This document describes the release management process for ZooKeeper.
Release Numbering
ZooKeeper uses a major.minor release numbering. A change in the major number means that the release includes some substantial changes from the previous version such as the introduction of new protocols, new formats, major new functionality, etc. A minor release includes new features and fixes from the main line development branch, referred to as trunk. The first release of the major.minor version of the code, will be called major.minor.0, where 0 designates a fix number. Bugs found after the release of major.minor.0 may need to be incorporated into the major.minor series, which will result in a new fix release. Fix releases are meant for bug fixes and should not include new functionality unless it is necessary to fix a bug.
Backward Compatibility
All fix releases to a major.minor release should be backwards compatible. Otherwise we do one major.minor release backward compatibility: A major.minor release of ZooKeeper must be backwards compatible with the previous minor release, major.(minor-1). A new major release, major.0, must be backwards compatible with current minor release for the previous major number.
Here are some examples of backward compatibility:
Old release |
New release |
Must be compatible |
---|---|---|
1.1.0 |
1.1.3 |
yes |
1.1.1 |
1.1.x |
yes |
1.1.2 |
1.2.0 |
yes |
1.1.x |
1.2.y |
yes |
1.1.1 |
1.3.0 |
no |
1.3.2 |
2.0.0 |
yes if 1.3.2 was the current release when 2.0.0 was released |
Code Changes
Changes will be done against trunk. Patch contributors make their patches with respect to trunk. The only exceptions to this would be in the case of a bug fix that was only in a fix release and not in trunk or for a backport of a bug fix to a fix release.
Release Manager
Every Release will have a Release Manager. A committer proposes to manage a new release. Once the proposal is approved according to the ZooKeeper Bylaws, the committer becomes the Release Manager for that release. If the Release Manager is starting a new minor release, they will create a new major.minor branch in subversion and begin collecting changes into that branch to form a release. Although the release manager determines what is included in the release, the release must be approved according to the Bylaws.
Although the Release Manager may change between every fix release in a major.minor series of releases, it is desirable that the same Release Manager manage all of the fix releases in a major.minor series.