Hi All,

I know that the theme is a big one and likely will spawn some larger discussion still I think it is important to talk about it and to have a common understanding. When digging into some not so obvious issues I repeatedly stumble about the fact that there are important things about CXF that I donĀ“t know or only have a vague clue of. Another problem I often had is where to put new stuff or decide if a classs is placed at a location where it should not be.

These examples show in my opinion that we do not have a good architecture documentation and no clean process to decide about architecture and to document decisions. So I propose some things
and we see if we reach a consensus.

The first thing is a question that always pops up and that is not so easy. What is architecture? I once read a nice definition that is quite open but still catches what is important: "Architecture is the sum of the decisions about a project that are the most expensive to change later. " Sorry that I am not able to point to a concret source of this. I think this definition catches the important thing about architecture. It should cover only those things that may later bite you. So for example the decision it can be argued if the decision for a logging framework is an architectural decision as we saw in Apache Camel how fast they were able to switch to slf4j. So this was nothing that was expensive to change. In any case I am curious what you guys consider as a good definition for an architecture.

I would like to come to a consensus about what we define as architecture as a first starting point.

The next thing is how to document our architecture. We have a good starting point at https://cwiki.apache.org/confluence/display/CXF20DOC/CXF+Architecture but I think some important things are lacking. This page describes the key structural elements and how some key elements work together in CXF. That is very important and we should simply try to improve it. I would also like to add our common definition of what architecture is to that document.

The first thing I would like to add are architectural goals. An architecture can never be good in itself. It can only be judged against the goals it tries to achieve. Here again we should only track the most important goals.

The second thing I would like to add is a page about architectural decisions. It should contain a short description of the process how we do these decisions and a list of decisions in a well defined format. I would also like to limit the decisions to a certain number so we are sure that only the most important decisions are tracked. I added such a page as my proposal and we should discuss if this is ok for all. As I have no idea how many decisions we should track I think we could simply start and keep in mind that it should not grow too large. See https://cwiki.apache.org/confluence/display/CXF20DOC/Architectural+Decisions

I hope we reach a consensus about these things as I think they are very important.

Christian




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

Reply via email to