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.