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 <claus.ib...@gmail.com> wrote: > On Mon, Sep 5, 2011 at 5:16 PM, Zbarcea Hadrian <hzbar...@gmail.com> 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 >>> - 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. >>> >>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> FuseSource >>> Email: cib...@fusesource.com >>> Web: http://fusesource.com >>> Twitter: davsclaus, fusenews >>> Blog: http://davsclaus.blogspot.com/ >>> Author of Camel in Action: http://www.manning.com/ibsen/ >> >> > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: cib...@fusesource.com > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ > -- ------------------------ Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com