Hi Paul,

On Sat, May 31, 2008 at 9:47 PM, Paul Martz <[EMAIL PROTECTED]> wrote:
> Why would this release be called "2.4.1" rather than "2.6"? In other words,
> back when 2.4 came out, there was no question that it would be called "2.4"
> as opposed to "2.2.1" -- what's different about this proposed release?
> Example criteria:
>  - Is it binary compatible with 2.4?
>  - Is it bug fixes and new functionality only, no interface changes or
> backwards compatibility issues with 2.4?
>  - Other criteria?

In an ideal world I'd suggest a 2.4.x series are all binary
compatible.  However, sometimes that is really hard to achieve as some
bug fixes involve modifications the API to fix a bug.  There are
couple of such bug fixes in 2.5.x then come under this category.

If one relaxes the strict binary compatibility for 2.4.x series then
one is faced with the question how far do you relax it.  I'd suggest
that at most a recompile of the OSG and the client application should
be required, and no code changes should be required.

Another issue is that for a stable patch release we still have SO
version numbers in place, so the issue of binary compatibility can be
dealt with by bumping the SO version number, but... we also have the
developer releases running in a parallel, and they also often bump the
SO version number.  Potentially this could lead to both stable and
developer releases overlapping SO version when they aren't binary
compatible.  The solution to this is coordinate the SO version numbers
so that they never overlap, but... this might lead to odd incrementing
when SO version numbers are skipped.  The other alternative would be
to leave something like 10 SO version numbers around for 2.stable.x
after each stable release and the first developer release that breaks
compatibility would jump by 10, giving plenty of room of the
2.stable.x releases to goble up SO version numbers.

For this particular release I'd be tempted to just be lazy and make
2.5.1 a release candidate of 2.4.1.  There is quite a bit more
functionality added/changed than I'd ideally like to see in a 2.4.x
series, but the horse has somewhat bolted now, SVN trunk has all these
fixes and extra functionality in it.  The more thorough way would be
to pick and choose which revisions make it from SVN trunk into a 2.4.x
by back porting them to 2.4.0, doing things on a strictly fix needed
basis.  Perhaps in future stable release this could be done right away
as part of the maintenance work that a stable series maintainer would
take on.

Of course one could not bother to do 2.stable.releases at all and just
gun for the next stable release to add all these fixes into.  However,
since 2.0 we've had stable releases 3-6 month intervals, doing it much
more often than 3 months would be challenge, as new functionality
itself needs time to developed and shaken down.  New/amendments to
previous functionality also brings bugs, even bug fixes can bring
bugs... so the first stable release often has a few new bugs, despite
fixes a number of old ones.  I believe on average we are fixing more
bugs than we introduce in each stable release, but... we are still
introduce new bugs each time...  while not desirable it's just a fact
of life with software, so having stable releases which sole purpose is
to fix bugs and not introduce new functionality would be useful.

Another aspect to the OpenSceneGraph development cycle is that while
quite a few users do track SVN and developer releases not everyone
does - many users wait till stable releases come out.  This means that
platforms and application
usage models that aren't tested during the run up to stable release
are suddenly tested after the the stable release is made, revelling
bugs, often ones that could very easily have been caught given the
wider testing, but still to late to help fix the stable release, so...
these fixes then make it into the dev releases, and then the next
stable release 3-6 months later, where exactly the same cycle happens
- new problems that could have been fixed if we knew about them don't
get fixed....

Ideally every platform and every usage model that the OSG is put
through would be thoroughly tested all the time, so we wouldn't have
the bug not caught, fixed to late for stable cycle, but no matter how
many appeals for testing I make we never seem to close the gap enough
to prevent problems not being detected.   Having long testing periods
before stable releases can help thing a bit by given more users a
chance to test, but this makes release far more expensive and painful
for myself and others helping out on testing them.  If stable releases
are too expensive/painful then they'll happen even less often, making
it even more critical that no bugs are missed. But... it's impossible
to get everyone to test, and to catch all issues no matter how hard
you try so problems will always get through.

Another factor that is apparent is with longer test periods before
stable releases the more submissions that offer new
functionality/amend existing functionality will start piling up in the
queue waiting for the feature freeze period to pass.  This makes the
post release period for me particularly difficult - getting stable
releases are already a bit like running marathon, but once its
complete I suddenly have to deal with all these submissions that have
been waiting for the stable release to go out, so its back to running
a sprint almost immediately just to catch up and get back on top of
things.  This is what can cause burnout in myself, as well as put
stress on contributors and general software development.

What I'd like to see if the OSG development cycle to become further
streamlined, with shorter periods before and after an initial stable
release that lots of developers are putting in 110%.  I believe having
2.4.x, 2.6.x etc stable release series could take the pressure of the
initial stable release being quite so perfected, as if a 2.4.1 comes
out a week or two after an initial 2.4.0 then end users using the
stable releases will be in a better position, and those working on the
2.5.x dev series and towards the next stable release can get up and
running on this right away.

Perhaps one could even go further and have a 2.stable.0 branch made
from the trunk prior to the official 2.stable.0 release, then the
trunk immediately becomes a 2.stable+1.x series and the nominated
maintainer takes over responsibility of the 2.stable.x series right
from the initial branch.

Thoughts?
Robert.



















to overlap stable release so version number
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to