Hi Claus,

I am trying to give the community a smooth transition to 3.0 by my current changes.

Whereever possible I use a deprecated class in the old place. So someone who changes to camel 2.9.0 should have no problems. He will see deprecation warnings though and this is a good thing. It will allow him to then adapt to the changes while staying on 2.9.0. Then when
he switches to 3.0.0 he will again have almost nothing to change.

If we do not do changes now and do everything in 3.0 then people will have a very incompatible upgrade from 2.x to 3.0. So I think now with 2.9.x being the last 2.x minor version it is exactly the right time to do these changes. Of course you are right that it is very difficult to do the design right. So we should look at it together and discuss how things should look like. If we wait with this till 3.0 then it is too late. If I experiment in a private branch then no one will look at the changes
and no discussion will occur.

Christian


Am 05.09.2011 16:04, schrieb Claus Ibsen:
Hi

I am writing this mail with a "community hat" as well being a very
concerned Camel team member.

The API in camel-core had a fair number of changes recently, which is
a strong concern from a community point of view.
Basically the community views Camel 2.x as an mature and well
established project, but also an "old and stable" product because of
Camel 2.x being 2+ years old.

In summary the community wants in Camel 2.x
- NO CHANGES IN API

The community do not care if class is named X or placed in Y etc. The
community care about that the class is kept named X and kept placed in
Y.

That said, API changes is needed from time to time, and this is why
you accumulate API change ideas in roadmap wiki pages, TODO in the
source code etc. And possible some JIRA tickets.

Then when a new major version is in the works such as Camel 3.0, then
those API changes can be executed.
In fact designing an API is a bigger challenge than at first thought.
Today you feel class X should be named and placed in Y package. To
days later it should be named X2 and placed in Z package instead. To
give amble time for API changes to settled down, and see how it "works
out" then milestone releases of the 3.0 is being released. This gives
the community and early adopters a changes to help out and give
feedback. This is common practice and how other projects do.

The Apache Camel 2.x project is a very successful project and its
usage have reached beyond what you may see as a typical situation. We
have many other open source projects which integrate directly with
Camel in their products. We have other open source projects and
commercial products that is based on top of Camel, or using Camel
heavily internally. Their most likely use
the API in ways the typical end user does not. So bottom line the
exposed API is in use out there.

The Camel team ove to the community to keep the API stable regardless
if a class could be renamed to X to have a bit better name etc.

Likewise it does not give confort in the community if the API is kept
changing and their use of the API keeps being @deprecated.
So when they compile or upgrade to a new version, they get scared
because of the sheer number of @deprecate warnings.
It is a costly $$$ for any organization to change source code, as
often rigors testing and procedures kicks in, when the source code
must be changed.

Likewise the Apache Camel subversion repository on trunk, is not a
personal * experiment* branch where the Camel committers should "play"
and move around with classes and whatnot. It would be better to setup
a branch or a personal project on github etc to work on the expriment
(for example as I did with the simple language improvements project).


 From community point of view. Keep the API stable in our "old" and
beloved Camel 2.x product.

 From community point of view. Start a discussion about Camel 3.0, as
we think the Camel 2.x product is "old and stable".
But the community would like a brand new Camel 3.0 in early 2012.







--
--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com

Reply via email to