Development in OpenStack is organized around 6-month cycles (like “kilo”). At the end of every 6-month cycle a number of projects release at the same time, providing a convenient reference point for downstream teams (stable branch maintenance, vulnerability management) and downstream users (in particular packagers of OpenStack distributions).
This “final” release may be the only release of the development cycle, in which case the project publishes intermediary “development milestones” on a time-based schedule during the cycle. Or the project may release more often and make intermediary releases in the middle of the cycle. Other projects trail the main release deadline, waiting for the final releases of components on which they rely.
A given deliverable can’t have more than one model. It therefore must choose between one of the following models.
The “cycle-with-milestones” model describes projects that produce a single release at the end of the cycle, with development milestones published at predetermined times in the cycle schedule.
The “cycle-with-intermediary” model describes projects that produce multiple full releases during the development cycle, with a final release to match the end of the cycle.
The “cycle-trailing” model describes projects that follow the release cycle, but because they rely on the other projects being completed may not always publish their final release at the same time as those projects. For example, projects related to packaging or deploying OpenStack components need the final releases of those components to be available before they can run their own final tests.
This release model is not intended for use by components that have programmatic dependencies on each other, such as one service that calls another or a library used by multiple services. It is intended for use by projects that truly cannot complete their work without “final” versions of their dependencies.
Some projects opt to completely bypass the 6-month cycle and release independently. For example, that is the case of projects that support the development infrastructure. The “independent” model describes such projects.