Raymond Feng wrote:
Hi, Mike.

It's a very good summary. The different perspectives are now well separated and they should be discussed on different threads to avoid further confusions :-).

Please see some more comments inline.

I added a couple of responses on specific points below.

  Simon

Thanks,
Raymond

--------------------------------------------------
From: "Mike Edwards" <[EMAIL PROTECTED]>
Sent: Friday, June 13, 2008 2:08 PM
To: <tuscany-dev@ws.apache.org>
Subject: Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

Simon Nash wrote:
Actually this isn't quite what I was saying. (Sorry that I wasn't clear.)
I'm talking about the lowest level components that we distribute as
binaries, not about larger groupings that are created from these components
to provide convenient aggregations of functionality.  These groupings
might be useful as well, as you are suggesting here and Graham suggested
in his recent post.

So back to the basic components. I see no value at this level in breaking things down any lower than a unit of functionality that might be included
or excluded as a whole from some valid scenario.  To give an example,
I wouldn't put "everything related to Web services" in a single basic
component, because some users might want to create a minimal Web services
configuration without Web services security and/or Web services policy.
I also wouldn't put assembly and core in the same basic component,
because some users might just want the Tuscany model without the
Tuscany runtime.  But I would put interface and assembly together in the
same basic component, because there are no cases where one would be used
without the other, and I would put core, core-databinding and databinding
together in the same basic component for the same reason.

  Simon

Simon,

I'm not clear what components you are talking about here.

It seems to me that we have things are different granularities, for different purposes and for different users, something like this (starting at the smallest):

a) Basic modules, as we have today.
These are largely for Tuscany developers, but they should represent a level of development
   independence.

Some folk (including me) believe that it is these modules that should be OSGi bundles. If there really is NO reason to separate functionality, then we should merge modules at this
   level.  I don't think that is necessary at present.

+1. The OSGi bundles are the basic units to constitute the tuscany runtime and they formally defines the SPI contracts across the modules. Maven modules are the static/structural reflection of the same idea.

There could reasons why a developer would want to separate functionality
into multiple modules even though these modules are never separated when
assembling the larger aggregrations at the b) and c) level.  I see a few
ways to handle this situation:
 1) Optimize the module split around developer convenience and let the
    basic module structure reflect this.  This could create finer-grained
    modules than are needed by the b) and c) levels.
 2) Optimize the module split around the granularity that is needed by
    the b) and c) levels.  This could create coarser-grained modules than
    are ideal from a developer perspective.
 3) Create an additional level in the hierarchy between the a) and b)
    levels as defined here.  This creates confusion and complexity.

I have been arguing for some combination of 2) and 3).  As a result of
this discussion, I'd like to explore the alternative of using 1) in
combination with a strengthened role for the b) level.  This might
provide the advantages of 2) and 3) without their disadvantages.
So I'd like to suggest that we try to make progress at the b) level
first and come back to the a) level when we know what the b) level
looks like.


b) A variety of functional components, that represent sets of coherent functions.

   Each consists of a series of the basic modules, aggregated together.
Their function in life is to assist developers of applications that embed some level of
   Tuscany capability (including tools, Tuscany itself and so on)

These are probably not agreed by folk today - we have work to do here to define these. You demonstrate the problem in your example above - you want "Basic Web Services" separate from "Web Services Security" - but for an end user, the step from using the first to using the
   second is a trivial addition of @required="integrity" to the SCDL.

   Anyone care to have a go at defining these compoennts?


What physical representations of this layer? A library/collection of bundles like Eclispe feature?

c) A small number of large packages aimed at supporting end users in a series of environments and
   with a specific set of functionality

Frankly, the average end user would prefer as few of these as possible. 1 is ideal. However, I recognise that we are likely to have different groups of users with different needs, so that multiple packages are pragmatic - avoiding providing huge hunks of unneeded code to users who will never need them (eg no BPEL needed? - let's not have implementation.bpel and its
   humongous ODE 3rd party dependencies)

Jean-Sebastien has made a stab at these packages, and I think they are a good starting point.


+1. This is about physical distributions which pick modules from a) and package them into archives to be downloaded/shipped. We probably just have to agree on this idea in principle. And we can tune the various combinations over time based on user feedbacks.

I would expect these to be based on a combination of components from b),
with duplicate modules eliminated, not on custom combinations of modules
from a).  If we can't build these packages by aggregating b) components,
this would indicate that we don't have the right groupings at the b) level.

  Simon

d) Simple ways of starting Tuscany fucntionality - based on using the packages in c)

This includes a launcher (or launchers) and various forms of embedding of Tuscany into other runtime environments such as Tomcat, Geronimo (...pick your favourite runtime...)



+1 this is about platform or hosting environment specific deployment and launching.

I'd like to ask folks generally whether they agree with this division. If we can agree on the division, I'd like to see us write down the contents of each of a) b) c) and d) - ideally on some nice Wiki page that we can maintain.



+1 to have a wiki page.


Yours, Mike.



Reply via email to