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
Show replies by date