camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Nodet <>
Subject Re: [DISCUSS] - API stability in Camel 2.x
Date Mon, 05 Sep 2011 15:54:29 GMT
Maybe one way to solve those problems would be to start a 3.0 branch
and experiment / allow more api changes there and keep trunk stable
for some time, then later switch when 3.0 begins to have more focus.

On Mon, Sep 5, 2011 at 17:44, Claus Ibsen <> wrote:
> On Mon, Sep 5, 2011 at 5:16 PM, Zbarcea Hadrian <> wrote:
>> Claus,
>> How exactly did you get to figure out what the community wants "NO CHANGES" in the
the API an via what process were you nominated to express that opinion?
> I guess writing all caps was a way of getting attention.
> The phrase should possible have been: KEEP API CHANGES TO A MINIMUM!
> I am not "the spokesman" as we *all* get exposed to the community.
> But here is a few points from my exposure.
> I have been around the Camel community for a long time. I work on
> Camel every day for a long time. I have been around at conferences
> giving talks on Camel and being in touch with many exiting Camel
> users, and new users as well. Likewise I get in touch with other
> communities who integrates or want to integrate with Camel. Likewise
> commercial companies of all sort get in touch with me via my employeer
> to discuss Camel etc.
> Likewise we have the long term history of the Camel project and how
> things works the usual way. Back in the days when we did Camel 1.x to
> 2.0 we did *not* change the API in 1.x, but crafted a new 2.0 API and
> released milestone releases and whatnot.
> Prior to this we discussed the key API changes we wanted to do for
> 2.0, such as removing the specialized exchanges, and only keen one =
> DefaultExchange. Likewise the removal of the FaultMessage, and so on.
> What I hear from people and vendors is that they love Camel when the
> API in 2.x started to settle down from Camel 2.4 onwards. We had a few
> bumpy releases in the earlier Camel 2.x lifetime. Some of this can be
> expected in a new major release etc.
> They do not expect this to happen again now that Camel 2.x has been
> around for 2+ years, the API is settled down, and the project is very
> successful and they can rely on the API being as is.
>> The reality is that the API did change in every single minor release of Camel, and
my understanding is that this is an effort to actually clean it up and make sure it does not
happen anymore after 3.0. The changes put on now are the painless ones that could be done
before that. Afaik, you provided some useful feedback for some of these changes.
> Yes some changes in the API is okay. For example if there is issues
> reported by the community. Or that we can archive major wins such as
> better performance, reduced memory footprint and whatnot. Also API
> changes in the DSL may be more tolerable, as the DSL is very end user
> targeted, and end users would often recompile the Camel apps with the
> new Camel version. Where as changes in component API is harder, as end
> users may very well use 3rd party components which they dont recompile
> or maintain themselves. Or the component maintainers dont want to keep
> maintaing their components because Camel API changes every time.
> Also we have other open source projects which integrates with Camel
> and rely on API being stable etc. If we keep changing it, we just
> loose those other open source projects, as they can't always spend
> time and energy to keep up with Camel API changes.
> Also Christian just started this "out of the blue" without any
> consensus from the Camel team, prior discussions, request from the
> community, as well the timing was a bit off, as he started during the
> summer holiday.
> I am sure the internal API refactorings is nice. But every time you
> change something you risk introducing new bugs. In fact he did, which
> some I was able to point out. However we have a lot of unit tests
> which often help pickup against regressions. But there is always a
> risk.
> So if Christian could keep his toes to internal low risk refactorings
> that would be nice.
> The community would appreciate that the 2.x API is stable.
> Then I would suggest Christian started a Camel 3.0 discussion, and he
> could be a key figure in getting the new API settled down, and help
> splitup the camel-core into smaller pieces where it makes sense. When
> that API is settled a bit and takes form, then we could look at the
> "gap" from 3.0 to 2.x and put in migration guides, and possible some
> @deprecations in the 2.x API. We should not do it the "wrong way
> around" by experimenting with the 2.x API.
>> Hadrian
>> On Sep 5, 2011, at 10:04 AM, Claus Ibsen wrote:
>>> 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
>>> 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.
>>> --
>>> Claus Ibsen
>>> -----------------
>>> FuseSource
>>> Email:
>>> Web:
>>> Twitter: davsclaus, fusenews
>>> Blog:
>>> Author of Camel in Action:
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email:
> Web:
> Twitter: davsclaus, fusenews
> Blog:
> Author of Camel in Action:

Guillaume Nodet
Open Source SOA

View raw message