We talked about this face to face amongst the various people who
attended the barcamp last weekend and I thought that we had at least
some common understanding for the "describing groups of function" part
of this puzzle. But in off list conversations that still seems not to
be the case.

I really think that, in order to cut the 2.0 Beta RC, we need an
easily stated and clear approach to describing how our users create a
"classpath" from our binary distro in all of the situations they are
likely to need to do so. My personal motivation is to have the users
always think about describing a base jar alongside whatever extensions
they want to use. So here's me compromising on what I'd really like
and making another attempt to pull this all together.

Inputs (from our source tree)
=====================

/modules - contains a mixture of core and extension jars.
     You spot extensions as they start binding/implementation etc and
end in runtime-*
     You create a maven dependency on a extension by creating an
dependency on its runtime jar
/features - describe collections of extensions or other jars
     all - describes all the jars.
             Currently a combination of other features and individual jars
             I'd like this to be a list of base + extensions rather
than referring generally to other features
     base - describes the core jars and enough extensions to get
impl.java scenarios working
             We can include a shade plugin here to generate the base jar
     we don't use any other features at the moment so we should weed
any that aren't wanted
/samples
     I would like these to refer, via maven, to base + extensions as
appropriate, i.e take the base feature and then
    any extension runtimes that are required
/distribution
      /all - refers to the all feature at present + some other arbitrary jars.
             we either need to tidy up the all feature and clean up
the reference to it or remove the feature and
             include the list of base + extensions here. What do
people want to do?

Outputs (in the binary distro)
=====================

/modules
    all of the Tuscany jars and dependency jars layed out as they are at present

/extensions
   / binding.ws
       dependencies - a human readable file that lists the jars, in
modules, that this extension depends on
           in case someone wants to pull those files out either
manually or by writing a script
       + any other meta-data derived files that we wish to ship based
on each extension , e.g.
          a manifest file (as we have at the moment)
          an ant build path file (as we have at the moment)
          a bundle repo config file (just thinking aloud)

/features
    /all
        as extensions +
        a PDE target (as we have at the moment)
        an OSGI config.ini file (as we have at the moment)
    /base
        as extensions +
        a shaded jar
        a PDE target (not sure about this as you will likely need
extensions also)
        an OSGI config.ini file (not sure about this as you will
likely need extensions also)

/samples
    maven = dependencies as per input
    ant = dependencies exploit base + extension approach (based on
generated build path files)

I still don't necessarily think this completely ticks the "is it clear
and easily stated" box but I could live with it for the Beta RC where
we can take a step back a get a feel for it in action.  Can we jiggle
this around until we get something we are generally prepared to live
with?

Simon

-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to