Hello again,

sorry for the start of my mail. It looks a bit confused and I should have started with an explanation what I try to do ;-)

First I am a big fan of camel. The java DSL is really a charm to work with and shows that java can be used for a decent DSL what I doubted before. In my work I need integration processes at many places and camel is a great tool for this. So when we started to use camel more intensive I tried to learn a bit more about camel. When I tried to understand the big picture of the architecture I found no clues on the website. So I started with an architecture tool and eclipse and tried to understand what each package means and how the packages depend on each other. When I visualized the architecture I found that there are many cycles what made it difficult to know where to start. So after some time digging in the code and the visualization I thought there were some places where refactorings like moving a class would help make things much clearer. So I started to post some small pataches as jira issues.

When looking into the architecture of other frameworks almost all have many cycles in the package structure with one exception: The Spring Framework. I think the clear layering is one of the key success criterias of Spring. While at the start of a framework cycles are not that important, they slow down further development when the framework grows in size. At the same time when your number of developers grows you need some basic blueprint of how the architecture should look like, so everyone has a clue where to put new classes and what depencies to avoid. Juergen Hoeller held a very interesting talk about the architecture of Spring and how they manage the architecture over time. Here is an excerpt of it: http://mikenereson.blogspot.com/2007/06/spring-on-code-organization-for-large.html

So I had the idea to help document the architecture of camel and help to fix some issues where possible.
That much about my motivation.

Below are some guesses I have about the architecture:

- camel and model are the base packages. Most other packages need them. camel has only two references to model so I guess model should be above camel. - converter is a uitilty package that is referenced by most other packages but does not reference other packages (except camel for the interface Converter). So it is almost at the bottom. - spi contains extension points for camel. It references camel and model quite heavily so it probably is above those two. - impl is intended for the implementation details so it probably is on top of at least camel, model and spi.

Am I about right with these guesses?

Best regards

Christian

--

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

Reply via email to