On Jul 19, 2006, at 11:00 AM, Jeremy Boynes wrote:

One thing we ran into with chianti was problems in the build due to the availability of dependencies that are only used in a few places. For example, there were repeated problems building the JAXB databinding due to downtime at java.net. This isn't new - for example, I remember in M1 we had problems building SDO due to issues with the Eclipse repository.

I like the idea of being able to build everything in one go. That's what happens now when you type mvn at the root of a fresh checkout and I think that should still work. The problem comes when it doesn't and new users end up fighting just to get their first build done.

We also have some fairly large areas that are independent of each other. For example, I think someone interested in SDO should be able to check out just the sdo tree and have that build on its own.

There are some dependencies though between these areas - for example, the current sca trunk depends on the sdo trunk (specifically the 1.0-SNAPSHOT version). These are not so coupled that they need the absolute latest code so one way to handle that would be to publish nightly (or other unstable) builds to the apache snapshot repository. This is not a release and hence does not need a vote etc.

We can tackle the build problems this way as well. For example, modules that have dependencies whose availability is flakey could be moved to a section of the build that was optional and which could be enabled or disabled using maven profiles.

I think it should not just be based on reliability of the download although that is a good practical concern. Rather, I would like to decouple the various runtime subsystems based on "optionality" and have that reflected in the build structure. For example, the Java SCA runtime does not require JAXB or SDO, hence they should not be required to build the core. Extensions such as the SDO and JAXB data transformation service may require those technologies so they should be separated out into an extensions area that builds independently of the core. The existence of the SPI (as well as potential integration testing) should provide assurance that changes to the core implementation do not break those extensions.

I think this approach will allow us to better modularize the runtime and segment it so that newbies wanting to contribute are not confronted with a monolith. It will also allow us IMO to scale our ability to handle extensions better.

Jim


Is this kind of modularization worth tackling?

Yep
--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to