This was the today's discussion on IRC (irc://irc.codehaus.org/camel). Feel free to join the next time and/or comment on the today's discussed items. The next one is scheduled for 02/26/2013 7:00PM - 8:00PM CET. Feel free to join and express your ideas/needs/wishes/...
[19:00:14] <cmueller> let's DISCUSS THE CAMEL 3.0 ROAD MAP for the next hour. Feel free to join and express your ideas/needs/wishes/... [19:00:56] <cmueller> you can find our ideas here: http://camel.apache.org/camel-30-ideas.html [19:01:20] <cmueller> and our road map here: http://camel.apache.org/camel-30-roadmap.html [19:04:51] <cschneid1> I would like to bring up the routing engine idea like discussed on the dev list recently [19:05:12] <cmueller> ok, go ahead... [19:05:15] <splatch> hey :-) [19:05:23] <cmueller> welcome [19:05:33] <cschneid1> Do you guys think we can change the core to implement such an engine? Or do we need some extra precautions like I mentioned [19:06:31] <splatch> I think making core really thin have 1st priority it will speed up all other tasks including this discussed today [19:06:33] <cschneid1> I see the risk that bigger changes in the core may lead to a branch that is only released after a year .. if we are lucky [19:06:49] <cmueller> One of Claus goals is to be 99% backwards compatible [19:07:15] <cschneid1> Yes .. that would mean we can do no bigger changes [19:07:25] <splatch> IMO Camel 3.0 don't have to be backward compatible at all, if we will continue this path there is no reason to work on 3.0 [19:07:31] <cmueller> Because of this, I think we need some Adapter classes [19:07:37] <cschneid1> +1 [19:07:48] <cmueller> to provide a transition from Camel 2.x to 3.x [19:08:10] <cschneid1> This is why we came up with the idea of creating a new api that is really small [19:08:14] <cmueller> And if we reach 95%, that would be great [19:08:32] <cmueller> I like this idea [19:08:40] <cschneid1> Then move all components to the new api and bridge to the old core [19:08:59] <splatch> user code will require dependency updates any way, so having core depending on separate api is not problem, it will be bringed by maven as transient dependency, right? [19:09:01] <cschneid1> After that we can quite freely change the core and break no components [19:09:15] <cschneid1> yes [19:09:55] <cschneid1> I think simply refactoring the core right away is much more difficult. I tried and did not get very far [19:10:26] <cmueller> I can imagine this... [19:10:57] <cschneid1> Even when we do not try to be compatible it will be a long time till the core is stable again [19:11:01] szhem (~ mira...@broadband-178-140-61-178.nationalcablenetworks.ru) joined the channel. [19:11:33] <cmueller> I think it would be great to start with something in a sandbox [19:11:38] <cschneid1> So I think one of the most important goals should be to make sure we can release 3.0 quite soon after we start [19:11:55] <cmueller> so that others get a better idea about we plan here [19:12:04] <cmueller> +1 [19:12:29] <splatch> cmueller: what's about component releases - will they be released together as now? [19:12:53] <cmueller> that's another topic we have to discuss [19:13:02] <cmueller> there are pros and cons [19:13:22] <cschneid1> yes [19:13:22] <cschneid1> How about creating the new api in sandbox with either a small standalone engine or a bridge to core [19:13:32] <cschneid1> I propose with to stay with the current common release to not change too much at the same time [19:13:40] <cmueller> managing 100, 200 components with different version numbers could be end up in a versioning hell [19:13:51] <cschneid1> I agree [19:14:07] <cschneid1> Perhaps we can do that when we have a small and stable api [19:14:12] <davsclaus> okay i am actually online today - just send some mails [19:14:21] <cmueller> cool! [19:14:23] <splatch> cmueller: pushing 200+ modules release where 150+ are same as before doesn't sound like proper versioning too [19:14:41] <cmueller> agree, but simpler ;-) [19:14:44] davsclaus i guess you talk about the release each component individually [19:14:47] <cmueller> for us... [19:14:51] <cmueller> yes [19:14:58] <splatch> I am scarred by numer of components too [19:14:59] <davsclaus> i don't like that, keep it as is, elease patches every 6-8 weeks or thereabouts [19:15:04] <davsclaus> we just need more ppl cutting releases [19:15:07] <cschneid1> splatch: Yes .. but as of now each component depends on camel-core .. so any change in core potentially breaks a component [19:15:09] <cmueller> and the other topic is the new Camel API [19:15:17] <cmueller> we are multi threaded… ;-= [19:15:24] <davsclaus> apache aries with the gazillion different version numbers scares me [19:15:39] <davsclaus> i rather like that 2.10.3 all components has tested and works together [19:15:42] <splatch> ok, lets back to api, component releases is organization thing, not critical [19:15:49] <davsclaus> and don't mind 2.10.4 has a component with the code base unchanged since 2.10.3 [19:15:51] <cschneid1> davsclaus: Yes .. and it almost stopped releases at aries as they did not even manage it themselves [19:15:52] <davsclaus> but its also released [19:16:11] olamy (~ol...@52.255.88.79.rev.sfr.net) joined the channel. [19:16:17] <davsclaus> cschneid1 yeah i had to choose between aries-proxy 1.1 aries-util 1.x? aries-xxx ? [19:16:27] <davsclaus> don't really know what works together etc [19:16:28] gnodet (~gno...@ven14-2-82-235-193-35.fbx.proxad.net) left IRC. (gnodet) [19:17:13] iocanel (~text...@athedsl-88751.home.otenet.gr) joined the channel. [19:17:18] <cmueller> I think the versioning topic has not to be done in Camel 3.0 [19:17:19] <cschneid1> So about the api .. what should a small api for camel contain? [19:17:25] <davsclaus> cschneid1 about the routing engine, it goes a bit hand-in-hand with the error handlers + interceptors + cross cutting concerns being woven into each of the routes [19:17:36] <cschneid1> yes [19:17:38] <davsclaus> we need to take that out, so we have a 1:1 model vs runtime [19:17:45] <cschneid1> +1 [19:17:46] <cmueller> let's move it to Camel 3.x and MAY discuss it later again after we have Camel 3.0 [19:17:50] <davsclaus> then the routing engine can decide at runtime to trigger onException or .to in the route [19:17:53] <davsclaus> e.g. what to call next [19:18:06] <davsclaus> there is sort of ready for doing that - the DefaultChannel [19:18:18] <davsclaus> was intended back years ago for the place to decide that [19:18:42] <cschneid1> davsclaus: The only thing is that I think we first need to create a simpler api before we can start the routing engine changes [19:18:44] <davsclaus> but due that model not 1:1 it was not possible to do in due time back then [19:18:58] szhem (~ mira...@broadband-178-140-61-178.nationalcablenetworks.ru) left IRC. (szhem) [19:19:19] <davsclaus> simpler api from which pov ? end-users / component developers / camel itself? [19:19:35] <davsclaus> the routing engine basically just has org.apache.camel.Processor [19:19:38] <davsclaus> and AsyncProcessor [19:19:42] <cschneid1> from my pov mainly component designers [19:19:46] <cmueller> first of all, we need an API [19:19:47] <davsclaus> e.g. the latter is a bit more complicated [19:20:01] <cschneid1> will be off as I have to exit train [19:20:04] cschneid1 (~cschneid@88.128.80.12) left IRC. (cschneid1) [19:20:05] <davsclaus> the api is the root package + spi [19:20:19] <davsclaus> but yeah it now has many exception classes / etc [19:20:31] <splatch> davsclaus: yes, however API should have minimal set of classes [19:20:36] <davsclaus> so i guess you want a component developer api that has the 10-20 interfaces needed? [19:20:47] <cmueller> yes [19:20:47] szhem (~ mira...@broadband-178-140-61-178.nationalcablenetworks.ru) joined the channel. [19:20:49] <splatch> davsclaus: for me DefaultErrorHandler is not part of API, it's part of core or default implementation [19:20:58] cschneid3 (~cschn...@tmo-110-215.customers.d1-online.com) joined the channel. [19:21:04] <davsclaus> yeah there is a spi.ErrorHandler AFAIR [19:21:19] <cschneid3> Back on phone [19:21:24] <davsclaus> and you can chose to use which error handler in the DSL [19:21:36] <davsclaus> so that has an API [19:21:52] <splatch> davsclaus: but API is not aware of DSL [19:22:01] <splatch> at least it shouldn't be, component has nothing to do with DSL [19:22:23] <davsclaus> the error handler is part of camel routing [19:22:32] <davsclaus> and you normally would use the DSL to define routes [19:22:41] <cschneid3> But what would the smallest camel api contain [19:22:46] <davsclaus> component developers do not use the error handler api when writing components [19:22:47] <davsclaus> they use [19:22:48] <davsclaus> Exchange [19:22:50] <davsclaus> Consumer [19:22:51] <davsclaus> Producer [19:22:53] <davsclaus> etc [19:23:05] <splatch> davsclaus: agreed! [19:23:12] <cschneid3> Message [19:23:13] <cschneid3> Yes [19:23:33] <davsclaus> the root package (we could possible move some classes or have a sub package for exceptions or what makes sense) [19:23:41] dottyo (~webc...@irc.codehaus.org) joined the channel. [19:23:41] <davsclaus> and some common classes from spi [19:24:14] <cschneid3> I tried to refactor like this [19:24:16] <davsclaus> http://camel.apache.org/maven/current/camel-core/apidocs/index.html [19:25:03] <cschneid3> The problem is that at some point the api references half the core [19:25:50] <davsclaus> as osgi don't like splitter packages we can't cut a camel-component-api that has a selected number of apis ? [19:25:51] <cschneid3> That is why i propose to create a new independent small api [19:26:18] <cschneid3> Completely separated from core [19:26:33] <cschneid3> And then a bridge to core [19:27:13] <cschneid3> Basically the idea came from guillaume at apachecon [19:27:33] <davsclaus> though we have 130+ components now and keep growing, so our end users can fairly easy figure out to create components [19:27:44] <davsclaus> so the current api works [19:28:02] <splatch> at least for component developers ;-) [19:28:04] <davsclaus> but if we can rewind 5 years then for sure it may have been nice to create a small api [19:28:14] <davsclaus> yeah and thats the main "customers" [19:29:02] <cschneid3> Not really [19:29:02] <cschneid3> There is no real api [19:29:14] <davsclaus> there is an api [19:29:22] <davsclaus> its just that there is 30 exceptions in the root package also [19:29:29] <davsclaus> and you may only need occaptuonally to use one of them [19:29:37] mr_smith (~mr_smith@69.80.98.133) joined the channel. [19:29:42] <cschneid3> And references to impls [19:29:45] <davsclaus> or the api package have X other interfaces you most likely not need to use for normal components [19:30:05] olamy (~ol...@52.255.88.79.rev.sfr.net) left IRC. (olamy) [19:30:21] <cschneid3> Yes that is why i think we hce to start clean [19:30:36] <cmueller> I think it's easy to agree that the exceptions should go into "org.apache.camel.exception"? [19:30:51] <davsclaus> well if we can create a independent module as you say and "bridge" it or what it takes [19:31:04] <davsclaus> then that seems like a gentle and non disruptive way [19:31:10] <cmueller> of course [19:31:25] <davsclaus> and people can ad-hoc use the new api for new components [19:31:31] <davsclaus> and use the old for existing etc [19:31:35] <cschneid3> Yea [19:31:54] <davsclaus> it would be a disaster for camel if 3.0 cannot use existing 2.x components etc [19:31:55] <cmueller> And I would like to have a "org.apache.camel.api" package which makes clear THIS IS OUR API [19:32:02] <cschneid3> The idea is to bridge to the mainly unchanged core [19:32:08] <davsclaus> yes there may be a few changes that may require changes but for the overall majority it should just works [19:32:34] <cschneid3> Then we move all components to the new api [19:32:46] <cschneid3> After that we are free to change core [19:33:07] <davsclaus> yeah sure a separate camel-api would be nice, and a camel-core etc - if we can rewind 5 years then James most likely would have created Camel that way [19:33:09] <cschneid3> And not break components [19:33:48] <davsclaus> if we don't have to worry about osgi split packages [19:33:56] <davsclaus> then we could have an api with the same package names as today [19:34:13] <davsclaus> we can't really move the root package and move Processor / Exchange / Message to another package [19:34:17] <splatch> davsclaus: from other hand a breaking changes in 3.0 will definitelly clean up number of unsupported components in 2.x [19:34:20] <cmueller> Yes, I think we have now the possibility to lern from our misstakes and build a better - not new - Camel [19:34:55] <davsclaus> yeah better NOT new - e.g. ppl expect this to still lbe Camel and use as is [19:35:59] <davsclaus> splatch if the breaking is compile breaking then we need to fix it ourselves, but yeah we should also look into [19:36:02] <cschneid3> I think we can move to .api [19:36:09] <davsclaus> at components which we should drtop [19:36:40] <cschneid3> And then move one component after the other [19:36:57] <davsclaus> its not just the components we offer out of the box, they can all be changed by us [19:36:57] <splatch> davsclaus: there are terrible holes which was discussed as part of 2.x duscussions, like lack of URI/configuration verification before running component, however it may be done after cleaning up API module [19:37:00] <davsclaus> its END USERs [19:37:16] <davsclaus> if they must migrate all their stuff that is hard [19:37:39] <cschneid3> We will not be able to avoid that in the end [19:37:51] <davsclaus> then its maybe not a good idea [19:38:00] <cschneid3> But we cam provide a transition [19:38:04] <davsclaus> the end users is not screaming for api changes and whatnot [19:38:13] <splatch> I don't live in perfect world, when I change Jackson version I am aware that I will have to spend some time to align my code [19:38:13] <davsclaus> they can build camel apps + custom components easily [19:38:18] <cschneid3> The end user wants features [19:38:31] <davsclaus> stability = they want more [19:38:45] <cschneid3> And we already loose the ability to provide new features [19:38:45] <davsclaus> they can always hack up new camel components to integrate with X new stuff [19:38:59] <splatch> the same should be true for camel, not every release, but major releases are introduced to have beaking changes as semver says [19:39:02] <davsclaus> camel has added a ton of functionality over the years [19:39:08] <davsclaus> more than mule / SI / and all the others [19:39:09] <cschneid3> Almost no one touches core andmore [19:39:10] <cmueller> yes, but @Deprecated the old code in core [19:39:13] <cschneid3> Anymore [19:39:19] <cmueller> link to .api [19:39:29] <davsclaus> stability in the core is a VERY good thing [19:39:38] <cschneid3> Yes [19:39:42] <cmueller> should be easy for components developers to migrate [19:39:51] <cschneid3> But it leads to many quirks [19:39:52] <cmueller> in one or two releases [19:39:59] <splatch> davsclaus: none from contributors can touch core without loosing his hands! thats bad! [19:40:19] <cschneid3> Yes [19:40:21] <davsclaus> what camel does is not easy [19:40:44] <splatch> it is easy, it's sometimes just done in overcomplicated way [19:40:52] <cschneid3> And current core maked it even more difficult [19:42:29] <cmueller> May be I can try someting in a sanbox what I think we could/should do [19:42:50] <cschneid3> sounds good [19:42:54] <cmueller> than it's easier to discuss something concrete [19:43:18] <cmueller> and we get an idea whether it works in the way we think it will work [19:43:42] <cmueller> only moving classes/interfaces around [19:43:51] <cmueller> nothing special [19:44:17] <cmueller> next week is ApacheCon [19:44:33] <cmueller> Not sure I will find some time [19:44:44] <cmueller> but I will try my best [19:45:28] <cschneid3> Will you create a new api or refactor core? [19:45:59] <cmueller> I will start with small steps :-) [19:46:05] gnodet (~gno...@ven14-2-82-235-193-35.fbx.proxad.net) joined the channel. [19:46:16] <cmueller> moving exceptions to a sub package [19:46:27] <cschneid3> Ok [19:46:28] <cmueller> moving interfaces from core to api [19:46:40] <cmueller> provide a bridge in core [19:47:00] <cschneid3> Can you try to make the api standalone? [19:47:02] <cmueller> and annotate it with @Deprecated [19:47:25] <cmueller> do you mean in a separate bundle? [19:47:31] <cschneid3> Dont care for the bridge at the start . It is a lot of work [19:47:59] <cschneid3> I mean the api may not reference anything outside api [19:48:17] <cmueller> yes, of course [19:48:27] <cmueller> may execptions [19:48:28] <cschneid3> You can check with s101 [19:48:35] <cmueller> ??? [19:48:45] <cschneid3> Structure 101 [19:48:58] <cschneid3> We can get free licenses for camel [19:49:44] <cmueller> for all the stupits guys like me: http://structure101.com/products/ [19:49:44] <cschneid3> I can organize this if anyone needs a license [19:49:47] <davsclaus> have fun in portland [19:49:48] <cmueller> ;-) [19:50:22] <cschneid3> I will not be at apachecon [19:50:23] <cmueller> thanks, somebody else in Portland? [19:51:04] <cschneid3> Some from talend like dan and hadrian [19:51:34] <cmueller> ok, cool... [19:51:43] <cmueller> some RedHat guys too? [19:52:38] <davsclaus> some of us are going to devconf later this week [19:52:40] <splatch> not me :-) [19:52:57] <davsclaus> not sure if any/who goes to portland [19:52:58] <splatch> yup, will be in Czech on Friday [19:53:03] <davsclaus> its a long travel for EMEA guys [19:53:12] <davsclaus> and even for US too [19:53:22] <davsclaus> e.g. most of our fuse eng is easy cost [19:53:38] <cmueller> yes, but I like too meet you guys [19:54:01] <davsclaus> well new company, and more ppl to fight for the travel budget :( [19:54:16] <splatch> cmueller: come to Brno and meet us, then go to Portland :D [19:54:32] <davsclaus> the beers should be cheap in CZ [19:54:39] <cmueller> :-) [19:54:43] <davsclaus> was there 15+ years ago or there abouts [19:54:58] <davsclaus> 0.5 euro for a beer back then at the bars [19:55:13] <cmueller> sounds good [19:55:26] <cmueller> but too late for the invitation [19:55:32] <cmueller> may be the next time [19:56:21] <cmueller> Ok, something else guys we should discuss today? [19:56:37] <davsclaus> yeah hopefully i find my way to apache con EU some day - especially if its at a football statium [19:56:51] <cmueller> otherwise I will prepare something on GitHub for the next IRC session [19:57:10] <davsclaus> well camel 2.11 needs to get out of the door [19:57:11] <cmueller> like last year [19:57:25] gnodet (~gno...@ven14-2-82-235-193-35.fbx.proxad.net) left IRC. (gnodet) [19:57:25] <cmueller> what's about Karaf 2.3.1? [19:57:26] <davsclaus> to pave the way for trunk being 3.0 [19:57:40] <davsclaus> yeah didn't hear news about 2.3.1 recently [19:57:45] <davsclaus> something about an aries release [19:57:46] <cmueller> do the still wait for Aries [19:57:51] <davsclaus> but the #karaf guys knows [19:57:52] <cmueller> ok [19:58:13] <davsclaus> and most of us will be traveling so i guess camel 2.11 is in march [19:58:26] <davsclaus> and maybe we can get a new bundle release as some of the features requires that [19:59:13] <cmueller> ok, will check the Karaf mailing list later today... [19:59:14] <davsclaus> of for camel 3.0 we may consider a jmx naming change [19:59:29] <davsclaus> i was told the mmx name for camel context has " " as the only mbean [19:59:32] <davsclaus> would be nice to avoid that [19:59:38] <davsclaus> just a tiny issue [19:59:51] <davsclaus> but 3rd party mmx tooling kinda dislike that "diff" [19:59:59] <cmueller> ahh, ok [20:00:08] <davsclaus> and did we talk about dropping java6 for camel 3 ? [20:00:12] <davsclaus> i kinda think its a no brainer [20:00:23] <davsclaus> e.g. require 1.7 as the minimum version [20:00:37] <cmueller> yes we talked about this [20:00:41] iocanel (~text...@athedsl-88751.home.otenet.gr) left IRC. ("Computer has gone to sleep.") [20:00:53] <davsclaus> and there is the "view" code in camel-core that can be moved out of the core into camel-view [20:00:56] <davsclaus> or dropped all together [20:00:59] <cmueller> if I remember right, nobody complains [20:01:04] <davsclaus> i think i put that up on the ideas page [20:01:44] <cmueller> than we cannot forget it... [20:01:53] <cmueller> I think we can remove it [20:02:06] <cmueller> it's about the dot thing? [20:02:23] <davsclaus> yeah its not maintained + used anymore [20:02:40] <davsclaus> and not needed to be in the core [20:02:44] <cmueller> yes, +1 to remove it [20:03:00] <davsclaus> there is plenty of code to maintain already [20:03:08] <cmueller> yes [20:03:17] <cmueller> I like to remove code ;-) [20:03:48] cschneid3 (~cschn...@tmo-110-215.customers.d1-online.com) left IRC. (Ping timeout: 20 seconds) [20:03:54] <cmueller> ok, I have to leave [20:04:07] <cmueller> have a nice evening [20:04:25] <cmueller> bye bye --