[bind10-dev] release engineering schedule rough proposal
Jeremy C. Reed
jreed at isc.org
Tue Jun 16 23:54:12 UTC 2009
This is a rough proposal for release engineering schedule and
processes for individual components and BIND 10 as a whole.
Note this doesn't go into great detail on tools, technologies, code
review, et cetera nor coordination with public relations and
marketing, for example.
Please send your opinions and examples. If you are a potential
third party user or packager of BIND 10, please share your thoughts
on how this will work within your own release engineering processes.
More details to discuss and cover are listed at
http://bind10.isc.org/wiki/ReleaseEngineering and
http://bind10.isc.org/wiki/EngineeringBits
(The following has not been added to the wiki yet.)
Quick summary: Defined timeline for releases using continual
builds and benchmark performance targets to supplement release
progress.
== Individual BIND 10 components for major releases ==
* Daily snapshots, build reports, and benchmark results
from current development always available.
* Defined 6 month schedule for every release. The release cycle is
between 30 days and 60 days. The start of the cycle will based on a
time-based schedule, but new features may also start the cycle
sooner. (Note that critical bugs or security fixes don't affect the
beginning of the "major release" cycle but only for "minor" releases.)
* 60 days before scheduled release date, release engineer announces
intent to begin cycle in 15 days. This announcement will be sent
to developers and will provide expected schedule and known proposed
features and changes (and point to URL for existing complete
ChangeLog).
* New ticket is assigned for tracking this major branch. Desired
features (not yet in the main code) and bugs will be linked to
this ticket.
* 15 days to integrate new changes before code freeze.
* No significant new changes to code.
* No API or ABI changes allowed.
* 40 days before scheduled release data, an "alpha" is released.
The "alpha"" release includes tagging, tarball with updated version
numbering and release notes, automated testing, checksums, PGP
signatures, and announcement email to "developers" list.
* 45 days before scheduled release date, temporary code freeze
and branching for new release.
* New release branch added to TestFarm and BuildFarm for daily
snapshots, build reports, and benchmark results.
* Commits to new stable branch must be pre-approved. Only minor
changes, improved documentation, or bug/security fixes allowed.
* "beta" released one day after the branching. The "beta" release
includes tagging, tarball with updated version numbering and release
notes, automated testing, checksums, PGP signatures, and announcement
email asking for testers.
* At least one "beta" release with one week of use.
* Betas 2 and greater only provided if needed.
* At least one "release candidate" release with one week of use.
The "release candidate" will include tagging, tarball with updated
version numbering and release notes, automated testing, checksums,
PGP signatures, and announcement email asking for testers.
* Release candidate will not be done until code also passes its
benchmark performance targets (TO DISCUSS LATER).
* No changes allowed to a release candidate to a release other
than documentation and version renumbering for "official" release.
* Any other changes require another "candidate" provided and
announced.
* Release candidate will be successfully ran on official ISC
servers as assigned and maintained by ISC OPS. (This may be
skipped when the new release has ABI or API interface
incompatibilities with existing official BIND 10 components.)
(TODO: need to discuss this more: how will components be usable individually
and how will individual releases affect other components?)
* Tickets and BuildFarm and TestFarm results will be reviewed before
each alpha, beta, and release candidates are created.
* Final release prepared. The "final release" will include tagging,
tarball with updated version numbering and release notes, automated
testing, checksums, and PGP signatures. This will be announced to
developers (and not publicly) for review.
(NOTE: ISC's existing current processes for other software is mostly
private development and the release engineering process includes
testing and review of the final release too. But with the public
"open" model to be used for BIND 10, the public may see the "final"
release before this testing and review.)
* Final release publicly announced.
* This final release begins the cycle for its minor releases.
== Individual BIND 10 components for minor releases (stable branches) ==
* Daily snapshots, build reports, and benchmark results
from stable / minor branches development always available.
* We will maintain official releases as stable branches with
bug fixes and minor feature changes with the goal of no ABI/API,
command line interfaces, or configuration syntax changes.
* It will follow the basic same schedule as the major releases.
except with a defined 3 month schedule for every release (instead
of 6 month). The release cycle (excluding critical bug or security
fixes) is usually 30 days. The start of the cycle will based on a
time-based schedule, but significant bug fixes may also start the cycle
sooner.
(TODO: need to discuss "lifetime" policies and number and type
of stable/minor/security branches, etc.)
== BIND 10 Suite ==
* The BIND 10 suite is made up of individual components which
have their own releases.
* The BIND 10 release is composed of the latest "stable" versions
of each component.
(To discuss this later...)
Jeremy C. Reed
ISC
More information about the bind10-dev
mailing list