Ahh, and here we find that OSGi has the same achilles heel as Maven. I anticipate that these kind of issues will be the basis for a shrill of complaints as they are in Maven.
I do not think so. In contrast with maven, OSGi has version ranges. This allows you to implement your own policy ... We defined a convention but did not make this convention mandatory.

And this is a very tricky area where you easily end up in unsolvable constraints. The trick of good modularity is to minimize the dependencies between bundles as much as possible.
Services with properly designed interfaces are the magic trick here.

Another solution is also to include some of the code inside the bundle and not expose it. As long as you do not use a class to communicate with another bundle, then each can have its
own class.

Managing dependencies is good, not having them is better ... I am puzzled that you have so many external dependencies. I would expect a relatively small core, a few bundles with basic function
blocks and a large number of plugins that support multiple protocols?

Kind regards,

        Peter Kriens


On 4 jun 2008, at 17:24, Alan Cabrera wrote:


On Jun 4, 2008, at 1:21 AM, Rajini Sivaram wrote:


Thank you all for the replies with all the useful information and pointers.

For versioning Tuscany bundles themselves, we are using maven- bundle-plugin at the moment, which gives us import and "uses" clauses with version="2.0.0". Since this includes all versions from 2.0 to infinity, and we are not currently addressing execution of two different versions of Tuscany side-by-side, the default looks sufficient. We could change it to "[2.0.0,3.0.0)" to make it more specific, but either way, it should be fine for now.

I am still not entirely sure about versioning of 3rd party libraries distributed with Tuscany though. Since Tuscany is used to assemble SOA applications, Tuscany uses a large number of 3rd party libraries to provide different bindings and implementation types. Many of these 3rd party libraries may also be used by applications (either directly from Tuscany or from a different source). If for example, Tuscany's version of wsdl4j used import version "[1.6.2, 2.0,0)", and this version of Tuscany doesn't work with wsdl4j version 1.7, doesn't the version range "[1.6.2, 2.0,0)" prevent an application from installing and using version 1.7 along with Tuscany for something else? So should the version range only specifically include the version range that Tuscany has been tested against? And then we run into problems with too narrow version ranges. And what happens when an application is using wsdl4j from SpringSource or another repository where a different version range is included? How do we ensure that Tuscany and applications can all coexist?

Ahh, and here we find that OSGi has the same achilles heel as Maven. I anticipate that these kind of issues will be the basis for a shrill of complaints as they are in Maven.

I've had a fair bit of experience wiring in large sets of 3rd party jars. No one follows any single kind of version nomenclature and many violate the ones they espouse.

Setting a version range in anticipation of what down stream application assemblers will use will be a futile task. Only the Pope and my mother-in-law are infallible and you're sure to get it wrong for some significant part of your community. The best you can do is set the range for what is safe for Tuscany in the hopes of providing accurate information for down stream application assemblers.


Regards,
Alan

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to