jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Müller" <thomas.muel...@day.com>
Subject Re: Component releases, proposed solution
Date Wed, 23 Jul 2008 16:50:40 GMT
Hi,

> Major new developments -- the implementation of the foreseen JCR 2.0 ACL
> functionality comes to mind -- should be done on development branches and
> merged back into trunk as the developer(s) see fit aka ready for release.
> Regular development still takes place on trunk, of course.

If done correctly, major new development can be done in the trunk
without risk. How to do that: Use a (static final boolean) constant to
enable / disable a certain new feature or new code path. It is used in
the DataStore implementation. At first, it was disabled (only enabled
when I run tests), and now it is enabled by default:

class InternalValue {
   public static final boolean USE_DATA_STORE =
        Boolean.valueOf(System.getProperty("org.jackrabbit.useDataStore",
"true")).booleanValue();
}

and then, everywhere where it is required, do this:
if (USE_DATA_STORE) {
  // new code
} else {
  // old code
}

As an added advantage, it's easy to find out if this feature is
responsible for a problem, by disabling the system property.

>  * Releases are (almost) only cut from trunk
>  * Branches are used for development and not for releases.
> Trunk should always be as stable as possible. Releases are built from tags
> based on trunk. This further simplifies the release procedure as there is no
> more branching and nore more bug fix back porting.

That's a good idea.

Regards,
Thomas

Mime
View raw message