MyFaces has been great in terms of growth and functionality, but it
suffers from constant instability (I am referring to core and
tomahawk). I don't think this is related to developers, code quality
or QA/testing near as much as the release management. The problem that
I keep observing is there is no stabilization of MyFaces:

* Each release is a combination of bug fixes and new features.
* Bugs are only fixed in future releases (even show stoppers)
* Releases are never patched/upgraded
* New releases have a long turn around time from SNAPSHOT to release phase

Although this system isn't that bad for testing and "playing around",
it is very detrimental to a commercial application or any released
product built on MyFaces for that matter. I would like to propose the
following changes/adoption taken from the Linux kernel methodology:

* At least two active branches at all times
* New features are only introduced into odd number releases
* Bug fixes are always introduced on even number releases (unless they
are for a bug in an odd numbered branch)
* Minor releases on the active branches are done at frequent intervals
(at least 1 per month preferably)

Example:
1.1.2.x -- dead stable branch
1.1.3.x -- dead development branch
1.1.4.x -- current stable branch (* active)
1.1.5.x -- current development branch (* active)

Once an odd number branch is ready for promotion, all development on
it ceases. Two new branches are created. During this period, the bugs
continue to be applied to the previous stable branch, until a burn in
period is passed on the new stable branch which would have a beta or
release candidate naming. Example:

1.1.4.x -- current stable branch (* active -- mostly for mission
critical fixes only)
1.1.5.x -- dead development branch
1.1.6.RCx -- proposed stable branch built from 1.1.5.x features (* active)
1.1.7.x -- new development branch (* active)

The same would apply for 1.2.x branches.

This way users always have a proven release and know that it will be
more stable over time. Also, developers/contributors should be able to
submit patches on older stable releases and then new minor releases
can be released on older branches if called for.

The big reason I can for this is problems like:
http://issues.apache.org/jira/browse/MYFACES-1296

This bug was introduced in 1.1.2 and is not fixed in a release yet.
This bug has been a show stopper for three months now. The fix is in
1.1.4, but that branch is not released yet.

Thoughts?

Thanks for taking the time to read this through
-Andrew

Reply via email to