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 



Reply via email to