[xwiki-devs] [Proposal] Stable vs Unstable Platform Core for Products: point releases in branches

Vincent Massol vincent at massol.net
Mon Sep 10 19:17:09 CEST 2007


Hi,

Now that we're starting to have several products (XE, XEM, Watch,  
Curriki, etc) we need to agree on a strategy for their dependencies  
on the Platform Core.

Need
=====

Here's a real use case on which we can base our discussion:

* XEM needs to be released ASAP. More specifically there's a need to  
release 1.0M1 on 17th of Sept. and 1.0M2 on 1st of October.
* Platform Core 1.2 in trunk is not stable yet and will only be  
released at end of November (if we agree on the schedule I sent this  
morning)
* XEM needs to use a stable Core
* XEM needs some features in core that are not in Core 1.1 (For  
example: the new Right Management UI which needs to change templates  
and possibly some code too)

To summarize, Products may require a stable version of the core but  
with modifications.

How do we solve this?

Solutions
========

Short term solution:
* We put whatever is required in point releases. For example, for  
XEM, we put the Rights Management changes in 1.1.x
* We decide on the 1.1.x release dates based on the aggregated needs  
of the different Products
* Once the Core trunk is released then the Products are modified to  
depend on it.
* Of course each Product should try its maximum to internalize  
required changes inside its own code rather while waiting for the  
Core the released. To do this, JIRA issues with patches should be  
submitted to the Core to be applied.

The other short term solution is to have a specific branch of Core  
for each product but I feel this is going to be a nightmare to  
maintain and merge so I'd much rather have a single 1.1.x branch  
which we can release as fast as we want.

Medium/Long term solution:
* Make the Core more and more modular with components so that a  
Product can keep all the core except for a specific component for  
which it can have its own implementation for some time till that  
makes it inside the core.
* Reduce Core release lifecycles. Right now it's 3 months. We could  
probably reduce that to 1.5 month right now.
* In order to reduce that even further, have more automated  
functional tests in the Core so that we can release a stable release  
of the core every 2-3 weeks. Once we reach that stage, I think there  
won't be any need to have branches for products. However this  
requires a change of mind for XWiki core developers since developers  
would need to write tests as they commit code instead of committing  
stuff and then fixing them later on, in further betas or RCs. This is  
our Graal.

Conclusion
=========

Are we all ok to agree that the 1.1.x releases will thus contain  
changes/improvements (i.e. each change must be reviewed carefully so  
that it's not risky and does not endanger the stability of the branch)?

Thanks
-Vincent



More information about the devs mailing list