The goal of this page is to document how other open source project are developed to avoid reinventing the wheel. This may also give us valuable insights how we could improve our release process.
The Linux Kernel
Development
The Linux kernel is released every 2-3 months. For all considerations it's worth to notice that Linux kernel is developed in a single git repository.
All changes are reviewed in a public mailing list. When a patch is ready for submission it is merged by a subsystem (sth close to "subproject") maintainer to his -next git tree.
Every release starts with a 2-weeks merge window. During this time subsystem maintainers issue pull request to Linus (or higher level maintainer) asking him to pull changes from his git tree to main one.
When this time passes Linus releases rc1 release and we enter bugfix stage. This means that there are two streams of patches submitted:
- Bug Fixes which are intended to enter next rc release
- Main development patches which are merged to -next tree for a next main release
After 6-9 weeks of bug fixing a new version of The Linux kernel is released and the whole process starts over.
It's worth to notice that there is no:
- Defined milestones.
- Formal release planning (feature has to be ready to enter the tree)
- Formal checklists
Maintenance
After a particular version of The Linux Kernel is released it's considered "stable". This means that community maintains it and backport all bug fixes that are being merged into next release also to this version until new release is available.
Usually one of releases in particular year is chosen to be a Long Term Support release (LTS) which means that community will maintain it way longer than till next release (3-6 years). This version is typically used as a base for commercial products or Linux Distributions.
DPDK
The DPDK development process is modeled (loosely) on the Linux Kernel development model. The process is described in more details here.
Typical release cycle is 3 months long.
All changes are reviewed in a public mailing list with the help of patchwork tool in a similar fashion to the linux kernel.
Right after the previous release is out the merge window for a new release is open. All new features must be introduced within the merge window.
Last month of every release is considered a bug fixing period and no new functionality will enter the tree within this period.
Stable and LTS releases are described here.
Every major release of DPDK can be marked as a stable release if there is a volunteer who would like to maintain it. A stable release can be maintained from 3 months up to a year.
A stable release can be designated as an LTS release based on community agreement and a commitment from a maintainer. The current policy is that each year’s November (X.11) release will be maintained as an LTS for 2 years.