On 2/6/07, Don Brown wrote:
Alexandru Popescu wrote:
I see two clear stages:

- a product that is ready from developers point of view
- a product that gets its users acceptance

An OSS project can take the same approach or not, and this is up to
its management. However, I feel that a project that would like to be
widely used cannot be labeled as released version without the user

I understand Don's concern about how these steps should be managed,
but I think this is not a very complex process:

- developer's ready version: beta
- (after a scheduled period during which only fixes go in if
necessary): GA.
I would love it if we actually did this. Unfortunately, we don't do the
second step, which is to have a scheduled period that allows fixes to go
in if necessary. What we actually do is freeze the code in a test
build, and put that through an undetermined period after which it may be
reassessed. If any problems are found after the build, the whole
process starts again. What this results in is a project that very, very
rarely releases a GA release because issues are always found after the
test build. If you don't believe me, look how often we put GA releases
out with Struts 1 and that was with a code base that rarely saw any
significant development/features. Imagine how long it would take us to
get out a release on a very active project...

That is definitely one of the lessons to be learned from the Struts
1.xexperience. Here's how we're applying that lesson in Shale land.
recent 1.0.4 release is the first one we felt had a snowball's chance at
being voted GA quality, so as soon as we cut that release we also branched
(SHALE_1_0_X), with the rule that only bugfixes (including non-invasive
bugfixes backported from the trunk) would be committed here. The trunk was
then opened for further "new feature" development (as well as bugfixes).
Right now, it is tentatively labelled as "1.1.0-SNAPSHOT", but that could
easily become 2.0.0-SNAPSHOT if we wanted to do major
non-backwards-compatible changes.

The net effect is that Struts could:

* Create a branch totally focused on stabilization and bugfixes ... the only
is to create a GA-quality branch based on the current feature set. If
2.0.5 does not
cut the mustard, just fix the reported bugs and try again (weeks instead
of years later).

* Avoid slowing down new feature development ... it continues on the trunk.

* If 2.05 (say) got voted GA but a security vulnerability or critical bug
were later
discovered, an updated version could be turned around VERY quickly on the
branch. Just fix the bad problems and release it. You don't have to
worry about
stabilizing all the new features that might have been added on the trunk,
they won't be present on the branch. (The MyFaces folks are currently
the same price we paid in 1.x, because they are intermixing new features
bugfixes on the trunk -- hopefully they will learn the same lesson.)

Branches are our friends. The fact that we didn't leverage them is the
biggest thing we did wrong in Struts 1.x development, IMHO. I hope that the
Struts 2 process can improve based on lessons learned from that experience.



Search Discussions

Discussion Posts


Follow ups

Related Discussions



site design / logo © 2018 Grokbase