[Hawkular-dev] Release cadence

Heiko W.Rupp hrupp at redhat.com
Tue Jul 21 05:38:58 EDT 2015


Hey

I have observed that our current Hawkular cadence of 4 weeks
with similar cadences of components makes us end up with 
long living integration branches and a larger rush near the
end to integrate them, get them for the first time tested in CI
and even for the first time tested in real world.

In one of the last releases there was a changed implementation 
in one component, that basically turned out as a no-op and 
still returned a "200 OK" code, so clients thought everything is
happy, but it was not. We found the issue (through ppl looking
at the UI) and solved it, but it was in a rush.

This certainly goes against all the ideas of "release early, release 
often", "cut small slices", "changes go into CI/CD and go live quickly".
Remember the coin flipping ?

Ideally we would always be able to integrate changes from 
components into Hawkular (main), but I understand that with the
way maven and its release process to central works, it is also not 
ideal to release many versions per day.

With all of the above in mind, I propose that we move to a 
"at least once per week" model, where we do a component release
at least once per week(*), which then in the four week stream form
a new Alpha release. The smaller releases do not need release notes,
I don't care if we use the micro number or a .AlphaY designator on
them, but they should be a release, that is not a (named) snapshot.
This will allow us to still have less efforts to do releases, but 
keep being (more) agile and have earlier integrations and thus 
less long living integration branches.

On top of that, we need to provide new and/or changed apis(**)
early on in the 4 weeks cadence so that other components can 
already start calling them, even if they are not yet functionally
complete.

*) Of course only if a change to the component has been made.
**) Ideally with changed apis, we keep the old version around for
  a bit and offer the new version on top. Remember, that especially
  with non-compiletime bindings, we can not know which client is
  at what api version.


More information about the hawkular-dev mailing list