Grzegorz Kossakowski wrote:
Sylvain Wallez pisze:
I can't say what problems there are _now_ since I don't build Cocoon
anymore. Hopefully it works now, and I was referring to the past:
when the move to Maven was started, the 2.2 build was mostly broken
for months, which drained an incredible amount of energy away from
the project, either because people got discouraged by this broken
build (e.g. me), or because they invested their volunteer time in
understanding Maven (e.g. Jorg Heymans) rather than developing Cocoon.
I'm glad it seems to work now, but the amount of energy needed to
setup and maintain this build system (remember, it's _just_ a build
system) has been astronomical.
I've been working with Maven (mainly when working with Cocoon) for
more than year and I can agree on main point of Maven critics that
Maven is flawed.
My personal opinion is that basic ideas behind Maven are correct but
implementation is totally broken. Or at least it was at the beginning
because now, thanks to many eye balls, it seems to improve from
release to release.
I was wondering many times if there is any other choice for us. Given
the amount energy we've put into mavenization process any switch is
impossible so such discussion could be only theoretical. Still I would
enjoy reading about some alternatives because this could put my (and
probably others) thinking into right direction thus, eventually
improving our existing infrastructure.
This isn't theoretical at all. Use Ant+Ivy (http://ant.apache.org/ivy/)
and you have something that doesn't rely on undocumented declarative
black magic (the various plugins you add to your pom.xml), doesn't
require you to write your own plugins (or tasks as they're called in
Ant) and gives you line-precise error reporting when something goes wrong.
There is one statement that I don't agree: Maven is not just a build
system. If it was only a build system I would be the first one to
propose dropping Maven completely because of its implementation. For
me, Maven is the whole ecosystem which consists of good practices when
it comes to your project's structure, Maven repository (the killer
feature IMHO) and integration with so many systems acting around basic
build process.
Ivy for your artifacts management. It does it well, and can use Maven
repositories. I've been using it happily for more than 2 years now on
rather big projects (after having banged my head on Maven).
What I would prefer is to take a lesson from our past experience but
still focus on the future. I strongly believe that we have reached
this stage when people can happily focus on developing Cocoon and not
on developing Cocoon's infrastructure thus I would like to invite all
old-timers to join our forces and provide the best of Cocoon
experience ever. I strongly believe we have all foundations needed for
that now.
And this leads to another question, which Reinhard outlined in his
latest blog post, and Stefano did years ago: what's the purpose of
Cocoon in today's technology landscape? It used to be a great "you can
do everything with it" solution, but these days are over. There are some
very nice webapp component frameworks like Wicket or GWT, there are ESBs
that do pipelined transformations like Mule or ServiceMix, and XML is no
more the only mainstream interchange language with the success of JSON
and the emergence of binary formats like Thrift or Google Buffers.
Cocoon therefore has to be rethought as a toolbox for those domains
where it has no equivalent, and find new domains where it can innovate,
and Corona (or whatever its name) certainly goes in the right direction.
Pipelines are among the existing distinctive features of Cocoon, and
also REST-ish pattern matching although many frameworks are now
REST-friendly.
It's very nice to see people using 2.2, but I have the impression
that most of the 2.2-related questions are related to maven-isms,
artifacts, poms, etc. Without wanting to sound harsh, I'm wondering
whether this community has learned to live over time with some sort
of chronic disease, and is so used to it now that it doesn't even
realize that life could be easier without it.
Most of these questions come from the confusion about splitting up
Cocoon into smaller pieces. And even more questions come from the fact
that people starting with 2.2 are still trying to build it themselves
because that was done in 2.1. If you use released versions then you
will have no problem with dependencies, missing artifacts, etc.
When you checkout trunk and try to build it then I would say that it
should be no surprise that sometimes you get into troubles, right?
The build should fail only if there are some bugs in Cocoon's code
(compilation issues or failed tests) or if some artifacts are missing
from your cache and remote repositories aren't available (BTW this what
just happened to me: there's a compilation failure in cocoon-core).
I would really like to know what kind of chronic disease you see
Sylvain. I don't deny there might be one so if you would have shared
your observations with rest community we could start to think about
improving it in the future.
By "chronic disease", I was referring to Maven. And it's not specific to
Cocoon, but to many other projects. Maven has brought one new brillant
idea to the Java world, which is artifact repositories (note though that
Linux repositories have existed for a very long time). But using Maven
requires to adhere to the whole thing: repository management, which is
good, but also a declarative under-documented build system. And Maven is
also self-updating, which is a nice idea on paper but means the buid is
not repeatable since you don't know what is used to build your system.
This works very well for small projects that have few dependencies and
produce only few standard artifacts like jar files, and this explains
its success in the opensource community where it is very often in this
case, and also why it has been so painful for Cocoon which is a quite
complex beast.
Note that I said "could" and not "would" since ultimately the
people-that-do decide what they prefer. And yes I'm a retired
old-timer here, but I still care for this community where I learned
so much.
For me it would be interesting to see if one of "retired old-timers"
could try to spend some time on playing with trunk just to gather some
experience. Certainly, such "external" audit by some of the most
honored members of this community would be a blessing experience only
if it would allow to bring closer our stances.
I'm afraid I don't have the free cycles for this.
Sylvain
--
Sylvain Wallez - http://bluxte.net