Giacomo Pati skrev:
On Sun, 8 Jan 2006, Jorg Heymans wrote:
Carsten Ziegeler wrote:
Hmm, yes, like I wrote in my latest answer to Daniels post, I'm not sure
if this is the right approach. I think, blocks will be totally
independent wrt to releases/versioning from the core in the future. And
Yes the release cycle of blocks will be totally independent of the core
release cycle. The actual versioning is independent as well.
The fact that my suggestion copies ./trunk to ./branch does not mean
that we tie the release or versioning of blocks in ./branch to that
core. It just means that we explicitly state that those blocks are only
guaranteed to be working with that particular core. The branch would
effectively be in maintenance mode, meaning you'ld only backport
*critical* bugfixes.
Hmm.. it seems we get a complicated thing here:
What about if I write a block that depends on
1. block A 1.0 which depends on cocoon-core-2.2
2. block B 1.1 which depends on cocoon-core-2.3
than?
Does this mean I have to make sure that my block A only depends on
blocks that all depend on the very same version of the same dependant
block?
In the general case, yes. But that is a fact of life rather than
something that has to do with the particular build system.
What we can and should do about it is:
* Split the core and large blocks into smaller blocks. This reduces
interdependencies as you don't suffer from changes of a block that
didn't have to do with what you used from it.
* Strenghten and respect contracts of blocks. If all blocks has well
defined external apis (and the user only depend on them) and we keep the
apis back compatible, a block can use newer versions of the dependent
block than it was designed with.
M2 have a transitive dependency resolution system. In the case above it
will find out that the dependency set of your block contains two
versions of the cocoon-core block. In this case it will try to compile
it with the latest version. This automatic behaviour can in turn be
overided by explicitly depend on a specific version of cocoon-core in
your blocks pom.
With OSGi we will get classloader isolation and more advanced handling
of dependencies on different versions, but we should get the M2 build in
a stable state first ;)
/Daniel