Hi, I went ahead to enable our maven bundle plugin to generate the startup/<distro-manifest.jar>. The distributions/core/pom.xml has been updated. Please try to see if it matches your expectation.
Thanks, Raymond From: Simon Laws Sent: Tuesday, January 20, 2009 9:44 AM To: [email protected] Subject: Re: [2.0] Align samples with the distributions 1) Adding a little structure will make the distribution incompatible with Equinox OSGi launcher and PDE target platform. I believe this is a statement about how it works just now rather than a statement about blockers for change. I more view it as a block for introducing structural changes. The current layout can be directly used as an Equinox installation of bundles or PDE target location. But looking at the docs having sub dirs doesn't prevent the bundles there being used either in an Equinox install and as part of the PDE target. It would be very surprising if it did. Granted our code doesn't handle it but that's our code. 2) There will be overlapping jars between features, with a flat structure, each artifact will have a unique location in the distro folder. True. This point is move valid I think. Think about this a little more some feature will have three types of dependencies in the context of the Tuscany organization SomeFeature depends on 1/ jars from other features (e.g. core) 2/ jars for the explicit dependecies for the module 3/ jars from transitive dependencies that don't appear in either 1 or 2 in 3 there could be jars that are common with other features but you don't know precisely which. I guess this may break this idea or we could just put these in a common sub dir. The bottom line is that most likely we won't be able to find a good partition of the jars unless we start to introduce duplications. That's why I prefer to keep the structure fairly flat. I'm just suggesting that the partition is based on whatever features are defined so that when you unwrap the distribution you get the impression that it's made up of different selectable parts. I agree that the type 3 jars are the problematic ones to which I don't have a good solution other than to assume that transitive dependencies might overlap. How about I first take a look at generating a manifest jar based on a feature and see if that moves me any nearer to satisfaction. This at least holds the list of jars for the feature. The JSE user can include manifest jars as appropriate. You still can't tell by looking at the manifest which jars are specific to the feature and which overlap with other features. However in doing this inspiration might strike. 3) Since the distro is just a local repo, only the configuration of the grouping matters for users. Having extra jars in the distro shouldn't bother if we overlay multiple functional distros into the same directory. I'm not sure I get this point but are you getting at a point about how we configure the launchers/provide manifest jars? Yes, I see the manifest jars as the index to the set of jars for a functional feature. Ok, I'm going to go ahead and add manifest jars for one of the features and see how that goes. modules +--- tuscany-assembly-2.0.0.jar +--- tuscany-assembly-xml-2.0.0.jar +--- stax-api-1.0-2 +--- META-INF/MANIFEST.MF +--- stat-api-1.0-2.jar I'm against adding extra structures for the libs folder to achieve the grouping. 2) Grouping of modules into functional features This should be a very light layer on top of 1). It should be just a set of configurations to organize the modules by function. When another distribution is downloaded, it should be possible to just unzip it into the existing distribution without any conflicts. For the 1st milestone of 2.x, we could try to get "api", "core" and potentially "webservice" distributions out. These all sounds like fine collections of function to me but can we go with the "all" distro for M1 where all = api + core + webserivce. It seems we can agree on "all". It seems we can agree that we need to be able to point samples etc at more coarsly grained modules, we don't seem to be able to agree whether these coarser grained modules should be distributed. Once we know how this works and have tried to create the distribution we may take a different view. 3) Configuration of the features for specific hosting environments * Maven: A pom project that list the set of modules for the functional feature * JSE/WebApp: generate a launcher jar whose META-INF/MANIFEST.MF that uses the Class-Path header to define the classpath entries Will the launcher be required to start the OSGi runtime? Not really, we just reuse the JAR MANIFEST.MF to define the classpath for JSE. In the WebApp scheme, if we point to a Tuscany distro and use the manifest jar to bootstrap the Tuscany runtime when the webapp is started, it works the same way as JSE. Sorry. I put the question in the wrong place. I was referring to the point below. Are you suggesting that the only way that tuscany will run in OSGi is if someone starts up an OSGi container with a config.ini specified? No. It's just one way to tell the Equinox runtime the collection of bundles. I list them as examples to show that we can have simple configurations on top of our distro to group them into functional features for various hosting environments. ok, I see. * OSGi: Generate a config.ini which lists the set of bundles to be used by the OSGi runtime * Eclipse: Generate a target platform definition or feature.xml Thanks, Raymond Regards Simon
