Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-16 Thread Simon Nash

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: 
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 pre

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-15 Thread haleh mahbod
Thanks Mike for putting things in perspective. It always helps to think of
these topics in terms of problem that we are trying to solve and who the
audience is before we get into the details of how to solve it. Your idea of
creating wiki pages for each of these topics will help clarify things
further and keep the discussion focused.



I created wiki pages based on my understanding of this thread for items a
and c.   It is a starting point and needs to be reviewed and fixed.



a)   Basic modules, as we have today. ß created under  [1]

b)  A variety of functional components, that represent sets of coherent
functions. ß created under  [2]

c)   A small number of large packages aimed at supporting end users in a
series of environments and with a specific set of functionality ß created
under [3]

d)  Simple ways of starting Tuscany functionality - based on using the
packages in c) [4]



I also created wiki pages for items b and d, however I cannot articulate
what problem we are trying to solve with b and d.  Can you please expand on
these two? What is the problem? Who is the audience?



This email thread is 32 emails deep on gmail. It is extremely difficult to
read and follow. Once there is agreement on the categories, can we start a
separate thread per category and continue updating the wiki pages as the
discussions solidify? This is like using the wiki pages as a white board for
keeping discussions focused. I have created these pages under [5]
and I hope that others find this approach useful.

[1]
http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Basic+Modules+Runtime+Bundles
[2]
http://cwiki.apache.org/confluence/display/TUSCANYWIKI/functional+components+at+runtime

[3] http://cwiki.apache.org/confluence/pages/viewpage.action?pageId=88325

[4
http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Simple+ways+of+starting+Tuscany

[5]:
http://cwiki.apache.org/confluence/display/TUSCANYWIKI/SCA+Java+White+Board+Index


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-15 Thread ant elder
On Fri, Jun 13, 2008 at 10:08 PM, Mike Edwards <
[EMAIL PROTECTED]> wrote:



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?
>
>
Thats taking a different tack to the launcher appraoch but maybe we need
both and this approach would be easier for embedders so ok to move things
long I'll try an initial stab at it:

1) tuscany-scdl4j

An aggregated jar containing _all_ the model and stax processor classes
which can be used by tools etc for for reading/writing scdl without booting
a runtime. It includes all the extension classes as they generally don't
drag in any other dependencies so its not really any problem to incude them.
The only required dependency would be on stax, maybe some optional
dependencies like wsdl4j as the wsdl extension may need that. Not sure if
any of the contribution modules should be included, would have to
investigate that a bit.

2)  tuscany-runtime
An aggregated jar containing the minimum modules to start a runtime able to
run something like the simple calculator sample. Has dependencies on
tuscany-scdl4j and minimal other jars - geronimo-commonj_1.1_spec, cglib,
jaxb etc.

3) tuscany-api
An aggregated jar containing everything tuscany/sca applications might need
to compile - sca-api, SCADomain class from host-embedded, node2-api, jsp
taglib etc. Has no  external dependencies.

4) Single jars for all the binding and implementation type extensions which
add the capability to the minimal tuscany-runtime. We're already starting to
get these with the way extensions are being structured nowadays -
binding-jsonrpc-runtime, binding-ejb-runtime, implementation-widget-runtime
etc.

The above would make life for embedders much easier like the
Tuscany-Geronimo integration code (or JBoss when they come along) less
likely to break over releases as we add remove modules.

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-13 Thread Raymond Feng

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.

Thanks,
Raymond

--
From: "Mike Edwards" <[EMAIL PROTECTED]>
Sent: Friday, June 13, 2008 2:08 PM
To: 
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.




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.


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. 




Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-13 Thread Mike Edwards

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.

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?

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.

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...)


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.




Yours,  Mike.


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-13 Thread ant elder
On Fri, Jun 13, 2008 at 3:50 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

> ant elder wrote:
>
>>
>> So just to be clear on what is being suggested this would be like the
>> launcher we used to have back in M2 days right?
>>
>>   ...ant
>>
>>
> No, the M2 launcher mixed too many different aspects:
> a) load the Tuscany JARs
> b) download then from the network as necessary
> b) launch your application code
> c) turn a client into a a 'client component'
>
> I am talking about what's currently demonstrated in:
> samples/calculator-distributed, in LaunchCalculatorNodeA
> or
> tutorial/store-client, in LaunchStoreClient
>
> for example, which only address (a).
> --
> Jean-Sebastien
>

Fair enough, i think we'd all be a bit nervous about trying "b) download
them from the network as necessary" again :)

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-13 Thread Jean-Sebastien Delfino

ant elder wrote:


So just to be clear on what is being suggested this would be like the
launcher we used to have back in M2 days right?

   ...ant



No, the M2 launcher mixed too many different aspects:
a) load the Tuscany JARs
b) download then from the network as necessary
b) launch your application code
c) turn a client into a a 'client component'

I am talking about what's currently demonstrated in:
samples/calculator-distributed, in LaunchCalculatorNodeA
or
tutorial/store-client, in LaunchStoreClient

for example, which only address (a).
--
Jean-Sebastien


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread ant elder
On Thu, Jun 12, 2008 at 4:31 PM, Simon Nash <[EMAIL PROTECTED]> wrote:

> ant elder wrote:
>
>> On Thu, Jun 12, 2008 at 10:50 AM, Simon Nash <[EMAIL PROTECTED]> wrote:
>>
>>  Jean-Sebastien Delfino wrote:
>>>
>>>  Raymond Feng wrote:

  Hi,
>
> There are a few patterns we use to determine if a maven module is
> required. Let's take the contribution stuff as an example.
>
> 1) contribution contains the interfaces for the contribution model and
> default implementation classes, SPIs and extension points
> 2) contribution-xml deals with the reading/writing the xml document for
> the sca-contribution.xml
> 3) contribution-java, contribution-namspace, contribution-resource deal
> with a specific perspective of the contribution, for example,
> namespace,
> java, resource
> 4) contribution-osgi, contribution-groovy support specific packaging
> schemes of the SCA contributions.
>
> Please note there is a tree-like dependency graph. I don't think it
> makes
> sense to merge the siblings into one module. Since an ancestor (for
> example
> contribution) are shared by mulitple children (-xml, -osgi, etc), it
> also
> not desirable to merge the common ancestor with other modules.
>
> For databinding related modules, we have a similar strcuture:
> 1) databinding: The base model, SPIs and transformers for various XML
> technologies
> 2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The
> individual databinding technologies
> 3) core-databinding: A set of hook code that leverage the databinding
> framework in the invocation chains (data transformation interceptors)
>
> We can use 1 as the data transformation utility in
> binding/implementation
> or even 3rd party code without 3. We can also pick one or more modules
> from
> 2.
>
> What I'm trying to point out is that our maven module structure
> reflects
> the nature of the feature units and dependencies fairly well. IMO, each
> module maps well into an OSGi bundle. IMHO, both the maven module and
> OSGi
> bundle follow the same principles and the results should be consistent.
>
> Thanks,
> Raymond
>
>
>  +1 to all that, makes a lot of sense to me!

  Sorry, but it doesn't make sense to me.  If there is no user scenario

>>> that can pull in contribution-java but not contribution-resource,
>>> or vice versa, I don't see why we would choose to expose these in
>>> our distro as separate bundles.  For the databindings, there are
>>> user scenarios in which a subset would be needed by different users,
>>> so things like databinding-jaxb and databinding-sdo should be in
>>> separate bundles.  However, core-databinding and databinding would
>>> always be used together, so should be in the same bundle.
>>>
>>> There might be a reason for keeping these modules separate in the
>>> maven build, to reflect an internal functional split.  This internal
>>> structure is not relevant to Tuscany users and should not be exposed
>>> to them.
>>>
>>> I think our distro should have a bundle for a minimal basic core and
>>> bunldes for additional optional components that can be used in
>>> different combinations.  The granularity of these bundles should be
>>> determined by what possible combinations make sense for people using
>>> the binary distro.
>>>
>>>  Simon
>>>
>>>
>>>  I do also agree with this despite what i just posted about how if we use
>> the
>> launcher approach then the actual module jars don't matter to users :)
>>
>> One group of "users" we want for Tuscany are those embedding Tuscany in
>> other products, so having some aggregated jars that group modules by
>> functionality would make it easier for them - eg an aggregated jar that
>> contains the minimal Tuscany core runtime modules, another jar with all
>> the
>> web services related modules etc. Its really hard for an outsider (or even
>> insider for that mater) working out what modules are needed for what, look
>> at the tuscany-geronimo integration code which has never managed to keep
>> up
>> with Tuscany changes.
>>
>> I think we could do both, if we go for a new launcher approach and
>> OSGi'ify
>> everything then it might even make it easier to get the aggregated jars
>> working well and its not so much overhead for us to maintain both sets of
>> jars and use which ever are appropriate depending on the circumstances.
>> The
>> key thing will be to get _consensus_ on it so we're all working together
>> instead of what we have now which seems to be we each focus on the bits
>> we're interested in sometimes to the detriment of what other are trying to
>> do.
>>
>>  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 prov

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread Simon Nash

ant elder wrote:

On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

I wonder if some of this debate is due to us not all talking about they same
thing so maybe it would help to go back to this proposal:

Here's what I'd like to see as a user:

- a short list of API JARs that I can add to my dev compile/build path

- a single small launcher or bootstrap JAR that takes care of bootstrapping
the Tuscany runtime

- the launcher should detect the presence of installed extensions in a
particular Tuscany installation

- as a user / app developer I should not have to know the list of JARs from
all these extensions.



This is a fundamentally different approach from what we do today where we
have all the Tuscany jars and dependencies on the application classpath. One
of the main reasons for having jars of aggregated modules is to make it
easier for users but if we change to have a runtime launcher which handles
the all the module jars instead of the user then that reason goes away.

To make this clear, today if a user has an Ant build script for their
application that build script needs to hardcode each Tuscany module jar and
dependency jar name so the build script breaks every time we change things.
The tuscany-all and manifest jars help some but as has been pointed they
have other problems. If we change to use the launcher approach then the Ant
build script just needs to hardcode the Tuscany API and launcher bootstrap
jar names and the location of the Tuscany install, and those few names
should not change much over Tuscany releses so the user application doesn't
get broken when we change Tuscany internal things. It doesn't really matter
to the user if the actual Tuscany install folder has 10 jars or 200 jars all
the they care about is the install location and the launcher handles it all
for them. This is similar to developing webapps for Tomcat, to the user all
they care about is the servlet-api jar and where Tomcat is installed, they
don't care whats in the Tomcat server lib directory.


One place where the number of jars definitely does show through is
when retrieving these artifacts from the maven repos.  Also, as
discussed in your other email on this thread, when embedding and
packaging Tuscany in other environments, it will be necessary to
deal with the physical distributed artifacts.


We did use this launcher approach back in M2 and we changed in 0.90 as a
launcher makes things harder for Tuscany developers, for example when
debugging Tuscany internals, but maybe _now_ it would be better to change
back to a launcher approach as it makes things easier for users.


I can see the advantages, and I'm OK with this as long as we can make
the launcher and registry work conveniently in all the embedded
scenarios where Tuscany might be used.

I'm not quite clear on how 3rd party libraries would be handled using
the registry approach.  Would these continue to be taken from the
classpath, or would they be loaded from the registry?  For ease of
integration with user/application code that uses some of the same
libraries, I think it's best to take these from the classpath, except
when running in an OSGi environment.

  Simon


   ...ant





Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread Simon Nash

ant elder wrote:

On Thu, Jun 12, 2008 at 10:50 AM, Simon Nash <[EMAIL PROTECTED]> wrote:


Jean-Sebastien Delfino wrote:


Raymond Feng wrote:


Hi,

There are a few patterns we use to determine if a maven module is
required. Let's take the contribution stuff as an example.

1) contribution contains the interfaces for the contribution model and
default implementation classes, SPIs and extension points
2) contribution-xml deals with the reading/writing the xml document for
the sca-contribution.xml
3) contribution-java, contribution-namspace, contribution-resource deal
with a specific perspective of the contribution, for example, namespace,
java, resource
4) contribution-osgi, contribution-groovy support specific packaging
schemes of the SCA contributions.

Please note there is a tree-like dependency graph. I don't think it makes
sense to merge the siblings into one module. Since an ancestor (for example
contribution) are shared by mulitple children (-xml, -osgi, etc), it also
not desirable to merge the common ancestor with other modules.

For databinding related modules, we have a similar strcuture:
1) databinding: The base model, SPIs and transformers for various XML
technologies
2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The
individual databinding technologies
3) core-databinding: A set of hook code that leverage the databinding
framework in the invocation chains (data transformation interceptors)

We can use 1 as the data transformation utility in binding/implementation
or even 3rd party code without 3. We can also pick one or more modules from
2.

What I'm trying to point out is that our maven module structure reflects
the nature of the feature units and dependencies fairly well. IMO, each
module maps well into an OSGi bundle. IMHO, both the maven module and OSGi
bundle follow the same principles and the results should be consistent.

Thanks,
Raymond



+1 to all that, makes a lot of sense to me!

 Sorry, but it doesn't make sense to me.  If there is no user scenario

that can pull in contribution-java but not contribution-resource,
or vice versa, I don't see why we would choose to expose these in
our distro as separate bundles.  For the databindings, there are
user scenarios in which a subset would be needed by different users,
so things like databinding-jaxb and databinding-sdo should be in
separate bundles.  However, core-databinding and databinding would
always be used together, so should be in the same bundle.

There might be a reason for keeping these modules separate in the
maven build, to reflect an internal functional split.  This internal
structure is not relevant to Tuscany users and should not be exposed
to them.

I think our distro should have a bundle for a minimal basic core and
bunldes for additional optional components that can be used in
different combinations.  The granularity of these bundles should be
determined by what possible combinations make sense for people using
the binary distro.

 Simon



I do also agree with this despite what i just posted about how if we use the
launcher approach then the actual module jars don't matter to users :)

One group of "users" we want for Tuscany are those embedding Tuscany in
other products, so having some aggregated jars that group modules by
functionality would make it easier for them - eg an aggregated jar that
contains the minimal Tuscany core runtime modules, another jar with all the
web services related modules etc. Its really hard for an outsider (or even
insider for that mater) working out what modules are needed for what, look
at the tuscany-geronimo integration code which has never managed to keep up
with Tuscany changes.

I think we could do both, if we go for a new launcher approach and OSGi'ify
everything then it might even make it easier to get the aggregated jars
working well and its not so much overhead for us to maintain both sets of
jars and use which ever are appropriate depending on the circumstances. The
key thing will be to get _consensus_ on it so we're all working together
instead of what we have now which seems to be we each focus on the bits
we're interested in sometimes to the detriment of what other are trying to
do.


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 an

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread ant elder
On Thu, Jun 12, 2008 at 10:50 AM, Simon Nash <[EMAIL PROTECTED]> wrote:

> Jean-Sebastien Delfino wrote:
>
>> Raymond Feng wrote:
>>
>>> Hi,
>>>
>>> There are a few patterns we use to determine if a maven module is
>>> required. Let's take the contribution stuff as an example.
>>>
>>> 1) contribution contains the interfaces for the contribution model and
>>> default implementation classes, SPIs and extension points
>>> 2) contribution-xml deals with the reading/writing the xml document for
>>> the sca-contribution.xml
>>> 3) contribution-java, contribution-namspace, contribution-resource deal
>>> with a specific perspective of the contribution, for example, namespace,
>>> java, resource
>>> 4) contribution-osgi, contribution-groovy support specific packaging
>>> schemes of the SCA contributions.
>>>
>>> Please note there is a tree-like dependency graph. I don't think it makes
>>> sense to merge the siblings into one module. Since an ancestor (for example
>>> contribution) are shared by mulitple children (-xml, -osgi, etc), it also
>>> not desirable to merge the common ancestor with other modules.
>>>
>>> For databinding related modules, we have a similar strcuture:
>>> 1) databinding: The base model, SPIs and transformers for various XML
>>> technologies
>>> 2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The
>>> individual databinding technologies
>>> 3) core-databinding: A set of hook code that leverage the databinding
>>> framework in the invocation chains (data transformation interceptors)
>>>
>>> We can use 1 as the data transformation utility in binding/implementation
>>> or even 3rd party code without 3. We can also pick one or more modules from
>>> 2.
>>>
>>> What I'm trying to point out is that our maven module structure reflects
>>> the nature of the feature units and dependencies fairly well. IMO, each
>>> module maps well into an OSGi bundle. IMHO, both the maven module and OSGi
>>> bundle follow the same principles and the results should be consistent.
>>>
>>> Thanks,
>>> Raymond
>>>
>>>
>> +1 to all that, makes a lot of sense to me!
>>
>>  Sorry, but it doesn't make sense to me.  If there is no user scenario
> that can pull in contribution-java but not contribution-resource,
> or vice versa, I don't see why we would choose to expose these in
> our distro as separate bundles.  For the databindings, there are
> user scenarios in which a subset would be needed by different users,
> so things like databinding-jaxb and databinding-sdo should be in
> separate bundles.  However, core-databinding and databinding would
> always be used together, so should be in the same bundle.
>
> There might be a reason for keeping these modules separate in the
> maven build, to reflect an internal functional split.  This internal
> structure is not relevant to Tuscany users and should not be exposed
> to them.
>
> I think our distro should have a bundle for a minimal basic core and
> bunldes for additional optional components that can be used in
> different combinations.  The granularity of these bundles should be
> determined by what possible combinations make sense for people using
> the binary distro.
>
>  Simon
>
>
I do also agree with this despite what i just posted about how if we use the
launcher approach then the actual module jars don't matter to users :)

One group of "users" we want for Tuscany are those embedding Tuscany in
other products, so having some aggregated jars that group modules by
functionality would make it easier for them - eg an aggregated jar that
contains the minimal Tuscany core runtime modules, another jar with all the
web services related modules etc. Its really hard for an outsider (or even
insider for that mater) working out what modules are needed for what, look
at the tuscany-geronimo integration code which has never managed to keep up
with Tuscany changes.

I think we could do both, if we go for a new launcher approach and OSGi'ify
everything then it might even make it easier to get the aggregated jars
working well and its not so much overhead for us to maintain both sets of
jars and use which ever are appropriate depending on the circumstances. The
key thing will be to get _consensus_ on it so we're all working together
instead of what we have now which seems to be we each focus on the bits
we're interested in sometimes to the detriment of what other are trying to
do.

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread ant elder
On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

I wonder if some of this debate is due to us not all talking about they same
thing so maybe it would help to go back to this proposal:

Here's what I'd like to see as a user:
>
> - a short list of API JARs that I can add to my dev compile/build path
>
> - a single small launcher or bootstrap JAR that takes care of bootstrapping
> the Tuscany runtime
>
> - the launcher should detect the presence of installed extensions in a
> particular Tuscany installation
>
> - as a user / app developer I should not have to know the list of JARs from
> all these extensions.
>
>
This is a fundamentally different approach from what we do today where we
have all the Tuscany jars and dependencies on the application classpath. One
of the main reasons for having jars of aggregated modules is to make it
easier for users but if we change to have a runtime launcher which handles
the all the module jars instead of the user then that reason goes away.

To make this clear, today if a user has an Ant build script for their
application that build script needs to hardcode each Tuscany module jar and
dependency jar name so the build script breaks every time we change things.
The tuscany-all and manifest jars help some but as has been pointed they
have other problems. If we change to use the launcher approach then the Ant
build script just needs to hardcode the Tuscany API and launcher bootstrap
jar names and the location of the Tuscany install, and those few names
should not change much over Tuscany releses so the user application doesn't
get broken when we change Tuscany internal things. It doesn't really matter
to the user if the actual Tuscany install folder has 10 jars or 200 jars all
the they care about is the install location and the launcher handles it all
for them. This is similar to developing webapps for Tomcat, to the user all
they care about is the servlet-api jar and where Tomcat is installed, they
don't care whats in the Tomcat server lib directory.

We did use this launcher approach back in M2 and we changed in 0.90 as a
launcher makes things harder for Tuscany developers, for example when
debugging Tuscany internals, but maybe _now_ it would be better to change
back to a launcher approach as it makes things easier for users.

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread Simon Nash

Graham Charters wrote:

+1 from me also.  We shouldn't confuse modularity purely with
versioning or whether something can be used on its own.  It's also
about being able to make different combinations of modules to fit
different deployment profiles.


I agree with that, and this should be considered as part of the
use cases that would determine the granularity of the bundles.
If there is no possible deployment profile that can include A and
not B, or vice versa, then I don't see a case for having A and B
as separate bundles.


I think it was Ant who first brought up the distinction between what
make sense in terms of modularity and what makes sense from a user's
perspective.  I think having 1 bundle per Tuscany module and
third-party jar is fine so long as we provide some way of aggregating
those in ways that make sense for how users will consume them.  For
example, I as a user might want to think in terms of a core runtime +
implementation type X and binding Y.  That's three concepts to me, not
123 bundles.


This might be valuable as well as a higher-level grouping of bundles
into different functional profiles.  But it doesn't change the
fundamental question of what is the minimum independently aggregatable
unit of functionality that is encapsulated in a single bundle.

  Simon


Hope this make sense.

Regards, Graham.

2008/6/12 Jean-Sebastien Delfino <[EMAIL PROTECTED]>:

Raymond Feng wrote:

Hi,

There are a few patterns we use to determine if a maven module is
required. Let's take the contribution stuff as an example.

1) contribution contains the interfaces for the contribution model and
default implementation classes, SPIs and extension points
2) contribution-xml deals with the reading/writing the xml document for
the sca-contribution.xml
3) contribution-java, contribution-namspace, contribution-resource deal
with a specific perspective of the contribution, for example, namespace,
java, resource
4) contribution-osgi, contribution-groovy support specific packaging
schemes of the SCA contributions.

Please note there is a tree-like dependency graph. I don't think it makes
sense to merge the siblings into one module. Since an ancestor (for example
contribution) are shared by mulitple children (-xml, -osgi, etc), it also
not desirable to merge the common ancestor with other modules.

For databinding related modules, we have a similar strcuture:
1) databinding: The base model, SPIs and transformers for various XML
technologies
2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The
individual databinding technologies
3) core-databinding: A set of hook code that leverage the databinding
framework in the invocation chains (data transformation interceptors)

We can use 1 as the data transformation utility in binding/implementation
or even 3rd party code without 3. We can also pick one or more modules from
2.

What I'm trying to point out is that our maven module structure reflects
the nature of the feature units and dependencies fairly well. IMO, each
module maps well into an OSGi bundle. IMHO, both the maven module and OSGi
bundle follow the same principles and the results should be consistent.

Thanks,
Raymond


+1 to all that, makes a lot of sense to me!

--
Jean-Sebastien







Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread Simon Nash

Jean-Sebastien Delfino wrote:

Raymond Feng wrote:

Hi,

There are a few patterns we use to determine if a maven module is 
required. Let's take the contribution stuff as an example.


1) contribution contains the interfaces for the contribution model and 
default implementation classes, SPIs and extension points
2) contribution-xml deals with the reading/writing the xml document 
for the sca-contribution.xml
3) contribution-java, contribution-namspace, contribution-resource 
deal with a specific perspective of the contribution, for example, 
namespace, java, resource
4) contribution-osgi, contribution-groovy support specific packaging 
schemes of the SCA contributions.


Please note there is a tree-like dependency graph. I don't think it 
makes sense to merge the siblings into one module. Since an ancestor 
(for example contribution) are shared by mulitple children (-xml, 
-osgi, etc), it also not desirable to merge the common ancestor with 
other modules.


For databinding related modules, we have a similar strcuture:
1) databinding: The base model, SPIs and transformers for various XML 
technologies
2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The 
individual databinding technologies
3) core-databinding: A set of hook code that leverage the databinding 
framework in the invocation chains (data transformation interceptors)


We can use 1 as the data transformation utility in 
binding/implementation or even 3rd party code without 3. We can also 
pick one or more modules from 2.


What I'm trying to point out is that our maven module structure 
reflects the nature of the feature units and dependencies fairly well. 
IMO, each module maps well into an OSGi bundle. IMHO, both the maven 
module and OSGi bundle follow the same principles and the results 
should be consistent.


Thanks,
Raymond



+1 to all that, makes a lot of sense to me!


Sorry, but it doesn't make sense to me.  If there is no user scenario
that can pull in contribution-java but not contribution-resource,
or vice versa, I don't see why we would choose to expose these in
our distro as separate bundles.  For the databindings, there are
user scenarios in which a subset would be needed by different users,
so things like databinding-jaxb and databinding-sdo should be in
separate bundles.  However, core-databinding and databinding would
always be used together, so should be in the same bundle.

There might be a reason for keeping these modules separate in the
maven build, to reflect an internal functional split.  This internal
structure is not relevant to Tuscany users and should not be exposed
to them.

I think our distro should have a bundle for a minimal basic core and
bunldes for additional optional components that can be used in
different combinations.  The granularity of these bundles should be
determined by what possible combinations make sense for people using
the binary distro.

  Simon



Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-12 Thread Graham Charters
+1 from me also.  We shouldn't confuse modularity purely with
versioning or whether something can be used on its own.  It's also
about being able to make different combinations of modules to fit
different deployment profiles.

I think it was Ant who first brought up the distinction between what
make sense in terms of modularity and what makes sense from a user's
perspective.  I think having 1 bundle per Tuscany module and
third-party jar is fine so long as we provide some way of aggregating
those in ways that make sense for how users will consume them.  For
example, I as a user might want to think in terms of a core runtime +
implementation type X and binding Y.  That's three concepts to me, not
123 bundles.

Hope this make sense.

Regards, Graham.

2008/6/12 Jean-Sebastien Delfino <[EMAIL PROTECTED]>:
> Raymond Feng wrote:
>>
>> Hi,
>>
>> There are a few patterns we use to determine if a maven module is
>> required. Let's take the contribution stuff as an example.
>>
>> 1) contribution contains the interfaces for the contribution model and
>> default implementation classes, SPIs and extension points
>> 2) contribution-xml deals with the reading/writing the xml document for
>> the sca-contribution.xml
>> 3) contribution-java, contribution-namspace, contribution-resource deal
>> with a specific perspective of the contribution, for example, namespace,
>> java, resource
>> 4) contribution-osgi, contribution-groovy support specific packaging
>> schemes of the SCA contributions.
>>
>> Please note there is a tree-like dependency graph. I don't think it makes
>> sense to merge the siblings into one module. Since an ancestor (for example
>> contribution) are shared by mulitple children (-xml, -osgi, etc), it also
>> not desirable to merge the common ancestor with other modules.
>>
>> For databinding related modules, we have a similar strcuture:
>> 1) databinding: The base model, SPIs and transformers for various XML
>> technologies
>> 2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The
>> individual databinding technologies
>> 3) core-databinding: A set of hook code that leverage the databinding
>> framework in the invocation chains (data transformation interceptors)
>>
>> We can use 1 as the data transformation utility in binding/implementation
>> or even 3rd party code without 3. We can also pick one or more modules from
>> 2.
>>
>> What I'm trying to point out is that our maven module structure reflects
>> the nature of the feature units and dependencies fairly well. IMO, each
>> module maps well into an OSGi bundle. IMHO, both the maven module and OSGi
>> bundle follow the same principles and the results should be consistent.
>>
>> Thanks,
>> Raymond
>>
>
> +1 to all that, makes a lot of sense to me!
>
> --
> Jean-Sebastien
>


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Jean-Sebastien Delfino

Raymond Feng wrote:

Hi,

There are a few patterns we use to determine if a maven module is 
required. Let's take the contribution stuff as an example.


1) contribution contains the interfaces for the contribution model and 
default implementation classes, SPIs and extension points
2) contribution-xml deals with the reading/writing the xml document for 
the sca-contribution.xml
3) contribution-java, contribution-namspace, contribution-resource deal 
with a specific perspective of the contribution, for example, namespace, 
java, resource
4) contribution-osgi, contribution-groovy support specific packaging 
schemes of the SCA contributions.


Please note there is a tree-like dependency graph. I don't think it 
makes sense to merge the siblings into one module. Since an ancestor 
(for example contribution) are shared by mulitple children (-xml, -osgi, 
etc), it also not desirable to merge the common ancestor with other 
modules.


For databinding related modules, we have a similar strcuture:
1) databinding: The base model, SPIs and transformers for various XML 
technologies
2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The 
individual databinding technologies
3) core-databinding: A set of hook code that leverage the databinding 
framework in the invocation chains (data transformation interceptors)


We can use 1 as the data transformation utility in 
binding/implementation or even 3rd party code without 3. We can also 
pick one or more modules from 2.


What I'm trying to point out is that our maven module structure reflects 
the nature of the feature units and dependencies fairly well. IMO, each 
module maps well into an OSGi bundle. IMHO, both the maven module and 
OSGi bundle follow the same principles and the results should be 
consistent.


Thanks,
Raymond



+1 to all that, makes a lot of sense to me!

--
Jean-Sebastien


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Raymond Feng

Hi,

There are a few patterns we use to determine if a maven module is required. 
Let's take the contribution stuff as an example.


1) contribution contains the interfaces for the contribution model and 
default implementation classes, SPIs and extension points
2) contribution-xml deals with the reading/writing the xml document for the 
sca-contribution.xml
3) contribution-java, contribution-namspace, contribution-resource deal with 
a specific perspective of the contribution, for example, namespace, java, 
resource
4) contribution-osgi, contribution-groovy support specific packaging schemes 
of the SCA contributions.


Please note there is a tree-like dependency graph. I don't think it makes 
sense to merge the siblings into one module. Since an ancestor (for example 
contribution) are shared by mulitple children (-xml, -osgi, etc), it also 
not desirable to merge the common ancestor with other modules.


For databinding related modules, we have a similar strcuture:
1) databinding: The base model, SPIs and transformers for various XML 
technologies
2) databinding-jaxb, databinding-sdo, databinding-axiom, ... The individual 
databinding technologies
3) core-databinding: A set of hook code that leverage the databinding 
framework in the invocation chains (data transformation interceptors)


We can use 1 as the data transformation utility in binding/implementation or 
even 3rd party code without 3. We can also pick one or more modules from 2.


What I'm trying to point out is that our maven module structure reflects the 
nature of the feature units and dependencies fairly well. IMO, each module 
maps well into an OSGi bundle. IMHO, both the maven module and OSGi bundle 
follow the same principles and the results should be consistent.


Thanks,
Raymond

--
From: "Simon Nash" <[EMAIL PROTECTED]>
Sent: Wednesday, June 11, 2008 12:33 PM
To: 
Subject: Re: Tracking Tuscany extensions, was: Distribution zips and what 
they contain, was: SCA runtimes



Comments inline.

  Simon

Rajini Sivaram wrote:

On 6/10/08, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

ant elder wrote:


On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

Simon Nash wrote:

ant elder wrote:

On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <

[EMAIL PROTECTED]> wrote:

Jean-Sebastien Delfino wrote:
I'd like to discuss the following: "What distro Zips are we 
building

and
what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget
components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the 
potential

for
releasing the above zips independently in this discussion and I'm

assuming

that we release all of the above together.

I'm also assuming that the relevant samples are included in each 
zip.


 This email was from 1/22/08, generated a lot of discussion for 
about

3


weeks, lots of opinions, no conclusion, no commits :)


No commits as we haven't found much consensus yet.

 I still think the same as what I had posted then, plus additional
ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, 
and


refine

the contents of the distros and their dependencies.
Disclaimer - Please don't get me wrong I'm not saying that one 
distro

==

one

OSGi bundle, as I've already said several times on the list that the
big-OSGi-bundle approach didn't make sense to me :) I just think 
that

declaring and enforcing clean dependencies using OSGi will help us
refine
the contents of each distro.

 The term "enforcing" seems to suggest that there might be an OSGi


dependency for the Tuscany runtime.  I don't know if this was

intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.

Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi

environment...


What would be the granularity of these OSGi bundles?  If the bundles

are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Ex

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Simon Nash

Comments inline.

  Simon

Rajini Sivaram wrote:

On 6/10/08, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

ant elder wrote:


On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

Simon Nash wrote:

ant elder wrote:

On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <

[EMAIL PROTECTED]> wrote:

Jean-Sebastien Delfino wrote:

I'd like to discuss the following: "What distro Zips are we building

and
what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget
components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential
for
releasing the above zips independently in this discussion and I'm

assuming

that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.

 This email was from 1/22/08, generated a lot of discussion for about
3


weeks, lots of opinions, no conclusion, no commits :)


No commits as we haven't found much consensus yet.

 I still think the same as what I had posted then, plus additional
ideas:


- Use OSGi exports/imports to export clean SPIs, hide internals, and

refine

the contents of the distros and their dependencies.

Disclaimer - Please don't get me wrong I'm not saying that one distro
==

one

OSGi bundle, as I've already said several times on the list that the

big-OSGi-bundle approach didn't make sense to me :) I just think that
declaring and enforcing clean dependencies using OSGi will help us
refine
the contents of each distro.

 The term "enforcing" seems to suggest that there might be an OSGi


dependency for the Tuscany runtime.  I don't know if this was

intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.

Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi

environment...


What would be the granularity of these OSGi bundles?  If the bundles

are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Export more than we really believe is correct.  This
  leaves us in the current unsatisfactory position of exposing
  unwanted implementation internals.
 b) Combine multiple maven modules with a close implementation
  affinity into a single OSGi bundle, and only expose true
  APIs or SPIs from these bundles.
 c) Refactor the code to remove dependencies on internals of other
  modules, and create new SPIs or APIs when this isn't possible.

I believe a combination of b) and c) is the best approach.

We've already rehashed this (and disagreed on this) in several other

threads, where I've already given my opinion:
- 1 bundle per module
- clean API/SPI imports/exports



By "1 bundle per module" do you mean any sort bundled jar combining
multiple
of our tuscany/java/sca/module jars is not worth pursuing?

  ...ant



I think that the right design is one bundle per maven module.





From an OSGi point of view I would like to ensure that we will continue to

have one bundle per 3rd party jar and that these will not be aggregated
regardless of how the distribution is zipped up.

As for one bundle per maven module, I think there are pros and cons for
finely grained and coarsely grained bundles, and it is really just a matter
of preference. Since we anyway have nearly 150 3rd party bundles/jars
anyway, I personally dont see any problem with one bundle per module.


I have a different view on this.  See below.


I don't think that aggregating multiple modules into a single bundle makes

much sense, or they should be aggregated in a single Maven module in the
first place.



IMHO modularizing Tuscany is about code quality and maintenance - something
internal benefitting Tuscany developers. So we have 100 "modules" based on
the developer's view of Tuscany internals. That does not necessarily mean
that end users have to deal with 100 bundles. If 20 core modules are very
tightly coupled together and will only operate with each other, as far as an
end user is concerned, this could as well be one bundle. Can a Tuscany user
combine assembly-xml version 1.3.0 with assembly version 1.3.1? Or even
implementation-java with implementation-java-r

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Graham Charters
Hi Rajini, couple of comments below

2008/6/11 Rajini Sivaram <[EMAIL PROTECTED]>:
> On 6/11/08, Graham Charters <[EMAIL PROTECTED]> wrote:
>>
>> If we assume one bundle per Tuscany module for developers, perhaps
>> there's a need for a separate concept that provides a simplified view
>> for users?  The SpringSource Application Platform has the concept of a
>> library, which has caused much debate in the OSGi world (it has its
>> own manifest header).  A library is a collection of bundles which
>> gives the developer a single 'thing' on which to depend.  At runtime
>> the concept goes away and just results in Import/Export-Package
>> statements created through manifest re-writing (the library does not
>> affect package visibility).  I'm not suggesting we use the same
>> approach, but it just highlights that others a felt the need for an
>> 'aggregation' concept.
>>
>> I wonder if a bundle repository might also provide such a capability,
>> but I'm not too familiar with things like OBR at the moment.
>
>
> OBR does provide similar capability, but IMO the problem with all these
> approaches (OBR, SpringSource library) is that none of them is a standard. I
> just hope we dont invent yet another one.
>

RFC 112 covers the design for a Bundle Repository (inspired by OBR) so
is some way along the path to being a standard.  This might make the
OBR approach a safer bet.

> On the subject of the ExtensionRegistry.  This is not a standard OSGi
>> feature, but I've been told the Equinox implementation should run on
>> any standard OSGi implementation (e.g. Felix).  Is there any reason
>> why we wouldn't just use the standard service registry?  It has all
>> the features required to manage the lifecycle of new extensions being
>> installed/uninstalled, etc.
>
>
> You have probably read this already, but others may find Neil Bartlett's
> discussion useful:
> http://www.eclipsezone.com/articles/extensions-vs-services/
> I dont actually have an opinion, just pointing to the docs.
>

Yes, but thanks for the pointer.  It's an excellent article.  My
comment was less about the technical pros/cons of each approach and
more about the standards aspect, although the technical aspects need
to be considered.

> Regards, Graham.
>>
>> 2008/6/11 ant elder <[EMAIL PROTECTED]>:
>> > On Wed, Jun 11, 2008 at 9:09 AM, Rajini Sivaram <
>> > [EMAIL PROTECTED]> wrote:
>> >
>> > 
>> >
>> > If we are anyway going to require a "launcher" of some form,
>> >> wouldn't it be just as easy to maintain one-bundle-per-module?
>> >>
>> >
>> > I agree, if we go back to requiring a launcher that changes a lot how
>> we'd
>> > could put this together. I'm not at all against requiring a launcher as
>> that
>> > does make things easier in some respects, but lets remember why we did
>> used
>> > to do this and then chucked it out in the 0.90 rewrite ;)
>> >
>> >   ...ant
>> >
>>
>
>
>
> --
> Thank you...
>
> Regards,
>
> Rajini
>


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Graham Charters
2008/6/11 ant elder <[EMAIL PROTECTED]>:
> On Wed, Jun 11, 2008 at 2:31 PM, Rajini Sivaram <
> [EMAIL PROTECTED]> wrote:
>
> ,snip>
>
>
>>
>> You have probably read this already, but others may find Neil Bartlett's
>> discussion useful:
>> http://www.eclipsezone.com/articles/extensions-vs-services/
>>
>
> Great article, thanks for the link. Thats over a year old now so has much
> changed eg in relation to comments like "The "delayed" services feature
> requires some small tweaks to the basic Equinox runtime, and these tweaks
> have not been implemented yet in the released version 3.2. They do not
> appear at all yet (at the time of writing) in the other open source OSGi
> runtimes, Apache Felix and Knopflerfish."?
>
>   ...ant
>

The delayed services feature is supported in Equinox.  The equinox
implementation was improved by a contribution from Prosyst.

Felix has DS support and documentation mentions the "immediate"
attribute used to control delayed services, so I'm guessing it is also
supported in that project.

I've not looked at Knopflerfish.

Regards, Graham


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread ant elder
On Wed, Jun 11, 2008 at 2:31 PM, Rajini Sivaram <
[EMAIL PROTECTED]> wrote:

,snip>


>
> You have probably read this already, but others may find Neil Bartlett's
> discussion useful:
> http://www.eclipsezone.com/articles/extensions-vs-services/
>

Great article, thanks for the link. Thats over a year old now so has much
changed eg in relation to comments like "The "delayed" services feature
requires some small tweaks to the basic Equinox runtime, and these tweaks
have not been implemented yet in the released version 3.2. They do not
appear at all yet (at the time of writing) in the other open source OSGi
runtimes, Apache Felix and Knopflerfish."?

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Rajini Sivaram
On 6/11/08, Graham Charters <[EMAIL PROTECTED]> wrote:
>
> If we assume one bundle per Tuscany module for developers, perhaps
> there's a need for a separate concept that provides a simplified view
> for users?  The SpringSource Application Platform has the concept of a
> library, which has caused much debate in the OSGi world (it has its
> own manifest header).  A library is a collection of bundles which
> gives the developer a single 'thing' on which to depend.  At runtime
> the concept goes away and just results in Import/Export-Package
> statements created through manifest re-writing (the library does not
> affect package visibility).  I'm not suggesting we use the same
> approach, but it just highlights that others a felt the need for an
> 'aggregation' concept.
>
> I wonder if a bundle repository might also provide such a capability,
> but I'm not too familiar with things like OBR at the moment.


OBR does provide similar capability, but IMO the problem with all these
approaches (OBR, SpringSource library) is that none of them is a standard. I
just hope we dont invent yet another one.

On the subject of the ExtensionRegistry.  This is not a standard OSGi
> feature, but I've been told the Equinox implementation should run on
> any standard OSGi implementation (e.g. Felix).  Is there any reason
> why we wouldn't just use the standard service registry?  It has all
> the features required to manage the lifecycle of new extensions being
> installed/uninstalled, etc.


You have probably read this already, but others may find Neil Bartlett's
discussion useful:
http://www.eclipsezone.com/articles/extensions-vs-services/
I dont actually have an opinion, just pointing to the docs.

Regards, Graham.
>
> 2008/6/11 ant elder <[EMAIL PROTECTED]>:
> > On Wed, Jun 11, 2008 at 9:09 AM, Rajini Sivaram <
> > [EMAIL PROTECTED]> wrote:
> >
> > 
> >
> > If we are anyway going to require a "launcher" of some form,
> >> wouldn't it be just as easy to maintain one-bundle-per-module?
> >>
> >
> > I agree, if we go back to requiring a launcher that changes a lot how
> we'd
> > could put this together. I'm not at all against requiring a launcher as
> that
> > does make things easier in some respects, but lets remember why we did
> used
> > to do this and then chucked it out in the 0.90 rewrite ;)
> >
> >   ...ant
> >
>



-- 
Thank you...

Regards,

Rajini


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Graham Charters
If we assume one bundle per Tuscany module for developers, perhaps
there's a need for a separate concept that provides a simplified view
for users?  The SpringSource Application Platform has the concept of a
library, which has caused much debate in the OSGi world (it has its
own manifest header).  A library is a collection of bundles which
gives the developer a single 'thing' on which to depend.  At runtime
the concept goes away and just results in Import/Export-Package
statements created through manifest re-writing (the library does not
affect package visibility).  I'm not suggesting we use the same
approach, but it just highlights that others a felt the need for an
'aggregation' concept.

I wonder if a bundle repository might also provide such a capability,
but I'm not too familiar with things like OBR at the moment.

On the subject of the ExtensionRegistry.  This is not a standard OSGi
feature, but I've been told the Equinox implementation should run on
any standard OSGi implementation (e.g. Felix).  Is there any reason
why we wouldn't just use the standard service registry?  It has all
the features required to manage the lifecycle of new extensions being
installed/uninstalled, etc.

Regards, Graham.

2008/6/11 ant elder <[EMAIL PROTECTED]>:
> On Wed, Jun 11, 2008 at 9:09 AM, Rajini Sivaram <
> [EMAIL PROTECTED]> wrote:
>
> 
>
> If we are anyway going to require a "launcher" of some form,
>> wouldn't it be just as easy to maintain one-bundle-per-module?
>>
>
> I agree, if we go back to requiring a launcher that changes a lot how we'd
> could put this together. I'm not at all against requiring a launcher as that
> does make things easier in some respects, but lets remember why we did used
> to do this and then chucked it out in the 0.90 rewrite ;)
>
>   ...ant
>


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread ant elder
On Wed, Jun 11, 2008 at 9:09 AM, Rajini Sivaram <
[EMAIL PROTECTED]> wrote:



If we are anyway going to require a "launcher" of some form,
> wouldn't it be just as easy to maintain one-bundle-per-module?
>

I agree, if we go back to requiring a launcher that changes a lot how we'd
could put this together. I'm not at all against requiring a launcher as that
does make things easier in some respects, but lets remember why we did used
to do this and then chucked it out in the 0.90 rewrite ;)

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-11 Thread Rajini Sivaram
On 6/10/08, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>
> ant elder wrote:
>
>> On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
>> [EMAIL PROTECTED]> wrote:
>>
>> Simon Nash wrote:
>>>
>>> ant elder wrote:

 On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
> [EMAIL PROTECTED]> wrote:
>
> Jean-Sebastien Delfino wrote:
>>
>> I'd like to discuss the following: "What distro Zips are we building
>>> and
>>> what do they contain?"
>>>
>>> I think we could improve our distro scheme to provide:
>>> - smaller packages
>>> - easier for people to find what they need
>>>
>>> I was thinking about the following binary distro zips:
>>>
>>> - tuscany-core.zip - The base that everybody needs.
>>>  core assembly model and runtime
>>>  Java APIs, Java components
>>>
>>> - tuscany-web.zip - For WS and Web developers
>>>  WS binding, Web 2.0 bindings, Scripting components, Widget
>>> components
>>>
>>> - tuscany-jee.zip - For JEE app integration
>>>  EJB, RMI and JMS bindings, Spring components
>>>
>>> - tuscany-process.zip - For process development
>>>  BPEL and XQuery components
>>>
>>> - tuscany-all.zip - all of the above
>>>
>>> Note that I'm not trying to tackle release cycles and the potential
>>> for
>>> releasing the above zips independently in this discussion and I'm
>>>
>>> assuming
>> that we release all of the above together.
>>
>>> I'm also assuming that the relevant samples are included in each zip.
>>>
>>>  This email was from 1/22/08, generated a lot of discussion for about
>>> 3
>>>
>> weeks, lots of opinions, no conclusion, no commits :)
>>
>>
>> No commits as we haven't found much consensus yet.
>
>  I still think the same as what I had posted then, plus additional
> ideas:
>
>> - Use OSGi exports/imports to export clean SPIs, hide internals, and
>>
>> refine
>
> the contents of the distros and their dependencies.
>>
>> Disclaimer - Please don't get me wrong I'm not saying that one distro
>> ==
>>
>> one
>
> OSGi bundle, as I've already said several times on the list that the
>> big-OSGi-bundle approach didn't make sense to me :) I just think that
>> declaring and enforcing clean dependencies using OSGi will help us
>> refine
>> the contents of each distro.
>>
>>  The term "enforcing" seems to suggest that there might be an OSGi
>>
> dependency for the Tuscany runtime.  I don't know if this was
 intended.  I think the right approach is to have a Tuscany+OSGi
 runtime (as we are building in itest\osgi-tuscany) which would
 actually do enforcement, and a non-OSGi Tuscany runtime in which
 the exports/imports are present in the jars but not enforced.

 Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
>>> environment...
>>>
>>>
>>> What would be the granularity of these OSGi bundles?  If the bundles
 are the current maven modules, I think we will find a number of
 classes that need to be exported even though these classes are not
 considered part of the SPI or API that the module provides.
 To resolve this I see the following options:
  a) Export more than we really believe is correct.  This
   leaves us in the current unsatisfactory position of exposing
   unwanted implementation internals.
  b) Combine multiple maven modules with a close implementation
   affinity into a single OSGi bundle, and only expose true
   APIs or SPIs from these bundles.
  c) Refactor the code to remove dependencies on internals of other
   modules, and create new SPIs or APIs when this isn't possible.

 I believe a combination of b) and c) is the best approach.

 We've already rehashed this (and disagreed on this) in several other
>>> threads, where I've already given my opinion:
>>> - 1 bundle per module
>>> - clean API/SPI imports/exports
>>>
>>
>>
>> By "1 bundle per module" do you mean any sort bundled jar combining
>> multiple
>> of our tuscany/java/sca/module jars is not worth pursuing?
>>
>>   ...ant
>>
>>
> I think that the right design is one bundle per maven module.



>From an OSGi point of view I would like to ensure that we will continue to
have one bundle per 3rd party jar and that these will not be aggregated
regardless of how the distribution is zipped up.

As for one bundle per maven module, I think there are pros and cons for
finely grained and coarsely grained bundles, and it is really just a matter
of preference. Since we anyway have nearly 150 3rd party bundles/jars
anyway, I personally dont see any problem with one bundle per module.

I don't think that aggregating multiple modules into a single bundle makes
> much sense, or they should be aggregated in a single Maven module in the
> first place.


IMHO

Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 10:59 PM, Mike Edwards <
[EMAIL PROTECTED]> wrote:




> Good debate here, but let's be clear about the big picture before the
> details swamp the debate.
>

Big +1 to that, i really hope we can some consensus on what the
distributions and runtimes should look like before we decide what registries
etc we need to use to implement them.

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 7:03 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

> ant elder wrote:
>
>> On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
>> [EMAIL PROTECTED]> wrote:
>>
>>  Simon Nash wrote:
>>>
>>>  ant elder wrote:

  On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
> [EMAIL PROTECTED]> wrote:
>
>  Jean-Sebastien Delfino wrote:
>>
>>  I'd like to discuss the following: "What distro Zips are we building
>>> and
>>> what do they contain?"
>>>
>>> I think we could improve our distro scheme to provide:
>>> - smaller packages
>>> - easier for people to find what they need
>>>
>>> I was thinking about the following binary distro zips:
>>>
>>> - tuscany-core.zip - The base that everybody needs.
>>>  core assembly model and runtime
>>>  Java APIs, Java components
>>>
>>> - tuscany-web.zip - For WS and Web developers
>>>  WS binding, Web 2.0 bindings, Scripting components, Widget
>>> components
>>>
>>> - tuscany-jee.zip - For JEE app integration
>>>  EJB, RMI and JMS bindings, Spring components
>>>
>>> - tuscany-process.zip - For process development
>>>  BPEL and XQuery components
>>>
>>> - tuscany-all.zip - all of the above
>>>
>>> Note that I'm not trying to tackle release cycles and the potential
>>> for
>>> releasing the above zips independently in this discussion and I'm
>>>
>>>  assuming
>> that we release all of the above together.
>>
>>> I'm also assuming that the relevant samples are included in each zip.
>>>
>>>  This email was from 1/22/08, generated a lot of discussion for about
>>> 3
>>>
>> weeks, lots of opinions, no conclusion, no commits :)
>>
>>
>>  No commits as we haven't found much consensus yet.
>
>  I still think the same as what I had posted then, plus additional
> ideas:
>
>> - Use OSGi exports/imports to export clean SPIs, hide internals, and
>>
>>  refine
>
>  the contents of the distros and their dependencies.
>>
>> Disclaimer - Please don't get me wrong I'm not saying that one distro
>> ==
>>
>>  one
>
>  OSGi bundle, as I've already said several times on the list that the
>> big-OSGi-bundle approach didn't make sense to me :) I just think that
>> declaring and enforcing clean dependencies using OSGi will help us
>> refine
>> the contents of each distro.
>>
>>  The term "enforcing" seems to suggest that there might be an OSGi
>>
> dependency for the Tuscany runtime.  I don't know if this was
 intended.  I think the right approach is to have a Tuscany+OSGi
 runtime (as we are building in itest\osgi-tuscany) which would
 actually do enforcement, and a non-OSGi Tuscany runtime in which
 the exports/imports are present in the jars but not enforced.

  Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
>>> environment...
>>>
>>>
>>>  What would be the granularity of these OSGi bundles?  If the bundles
 are the current maven modules, I think we will find a number of
 classes that need to be exported even though these classes are not
 considered part of the SPI or API that the module provides.
 To resolve this I see the following options:
  a) Export more than we really believe is correct.  This
   leaves us in the current unsatisfactory position of exposing
   unwanted implementation internals.
  b) Combine multiple maven modules with a close implementation
   affinity into a single OSGi bundle, and only expose true
   APIs or SPIs from these bundles.
  c) Refactor the code to remove dependencies on internals of other
   modules, and create new SPIs or APIs when this isn't possible.

 I believe a combination of b) and c) is the best approach.

  We've already rehashed this (and disagreed on this) in several other
>>> threads, where I've already given my opinion:
>>> - 1 bundle per module
>>> - clean API/SPI imports/exports
>>>
>>
>>
>> By "1 bundle per module" do you mean any sort bundled jar combining
>> multiple
>> of our tuscany/java/sca/module jars is not worth pursuing?
>>
>>   ...ant
>>
>>
> I think that the right design is one bundle per maven module. I don't think
> that aggregating multiple modules into a single bundle makes much sense, or
> they should be aggregated in a single Maven module in the first place.
>
>
I'm not sure i agree with that, individual small maven modules are for
making things easier for developers, aggregated jars are for making things
easier for users. There is lots of prior discussion about the pros and cons
of this eg just search for all the projects using the shade plugin and then
their mailing lists when they did that. Though if we do go back to a runtime
launcher approach then users don't need to care so much as the launcher will
hide 

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 6:52 PM, Raymond Feng <[EMAIL PROTECTED]> wrote:

> Hi,
>
> Please see my comments inline.
>
> Thanks,
> Raymond
>
> [snip]
>
>> Good requirement, but I don't think that the current manifest +
>> tuscany-all JAR solution is a good one (for example it mixes APIs and
>> internals in the same JAR, doesn't work well with IDEs, works only for one
>> big distro, requires different settings in J2SE and webapps)
>>
>>
> IMHO, the all-in-one package pretty much defeats our modularity. For
> example, all module activators will be called even the extension won't be
> used at all.


Calling a module activator is pretty minimal initialization overhead
especially if it just fails right away with something like a
ClassNotFoundException and the runtime carries on, and this is what happens
with the our bundle jar - you can just use it without the extension
dependencies you don't need and it works fine.  Note I'm not necessarily
saying we should be keeping the single one big bundle jar, i'm just trying
to avoid the impression that the _only_ option we have is everything in
individual separate jars.



> Two extension cannot have different versions of a 3rd party jar.
>
>  Here's what I'd like to see as a user:
>>
>> - a short list of API JARs that I can add to my dev compile/build path
>>
>> - a single small launcher or bootstrap JAR that takes care of
>> bootstrapping the Tuscany runtime
>>
>>
> This is similar to JEE launchClient. If I can invoke the Launcher directly
> in java, I would be happy.
>

So just to be clear on what is being suggested this would be like the
launcher we used to have back in M2 days right?

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Jean-Sebastien Delfino

Mike Edwards wrote:
...

Are people interested in exploring these ideas?

Jean-Sebastien,

I'll start with the last question first: YES.

But I'd next like to step back from what I can see is developing into a 
somewhat "active" debate (to use a neutral euphemism)


:)

and investigate

the big picture here.


Let me try to understand the motivations (yes, plural, I think) for 
multiple binary distro zips of Tuscany.  My initial reaction to seeing a 
list like the one above is "hmm - complexity - for the end user"  - they 
now have to understand which of those packages they need and install 
each of them separately.  The more packages, the more complexity.


Now, this is only looking at one side of things - why is splitting 
things into packages like that a good idea?  Well, I suppose there is 
the question of download size and size on disk.  More packages = each 
package can be smaller.  You get what you ask for.  The other side is 
smaller runtime size - no unnecessary things get loaded.


For the download size, I see the merits of bacon slicing into sets of 
independent packages.  For the runtime size, other methods (eg lazy 
loading) might be an alternative.


I can see the argument to use an install system like Eclipse, but on the 
other hand, as a user of Eclipse, I have to say that this aspect is one 
of the less satisfactory parts of Eclipse, and it can be frustratingly 
hard to know that you've got the right set of stuff installed.  Part of 
this is about the number of packages and the set of valid combinations.  
If it's a small number then OK, perhaps not a problem.  Once the number 
grows, I think it does become a problem for the end user.


I'm aiming for a small number of packages, similar to the Eclipse 
distributions that people build (a Java developer distro, a Web 
developer distro, an Enterprise distro, a Mobile device distro etc) to 
not have to worry about the bits and pieces. We already had that 
discussion in January and IIRC I had also brought up the similarity 
with Eclipse distros then :)




The question of the approach to OSGi is perhaps different.  I think it 
does make sense to create a bundle-per-module.  It does make sense to 
have clean interfaces for each module with crisp lists of imports and 
exports. (and yes, I know that we are a long way from that today!)


Yes, but I'm not sure we're a long way from that today, except for the 
few cases where people have gone around SPIs. OSGi imports/exports will 
help prevent that, as going around exported SPIs will break the build.




But I don't expect that OSGi bundles should be directly reflected into 
the bigger scale packaging. In other words, the bigger scale packaging 
is aimed at satisfying the user's needs and a big package could have 10 
or 100 module-sized bundles in it, as necessary.  That depends on 
overall function, not on details of the modules used to provide that 
function.


Exactly!
- 1 bundle per module
- n bundles per 'bigger packaging' distro



Good debate here, but let's be clear about the big picture before the 
details swamp the debate.




:)

--
Jean-Sebastien


Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Mike Edwards

Jean-Sebastien Delfino wrote:

Jean-Sebastien Delfino wrote:


I'd like to discuss the following: "What distro Zips are we building 
and what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential 
for releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.



This email was from 1/22/08, generated a lot of discussion for about 3 
weeks, lots of opinions, no conclusion, no commits :)


I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and 
refine the contents of the distros and their dependencies.


Disclaimer - Please don't get me wrong I'm not saying that one distro == 
one OSGi bundle, as I've already said several times on the list that the 
big-OSGi-bundle approach didn't make sense to me :) I just think that 
declaring and enforcing clean dependencies using OSGi will help us 
refine the contents of each distro.


- Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension 
registry mechanism (what we have now in Tuscany or better a combination 
of what we have now and the Eclipse Equinox registry for example) to 
detect which pieces are installed and activate their capabilities.


Are people interested in exploring these ideas?

Jean-Sebastien,

I'll start with the last question first: YES.

But I'd next like to step back from what I can see is developing into a somewhat "active" debate (to 
use a neutral euphemism) and investigate the big picture here.



Let me try to understand the motivations (yes, plural, I think) for multiple binary distro zips of 
Tuscany.  My initial reaction to seeing a list like the one above is "hmm - complexity - for the end 
user"  - they now have to understand which of those packages they need and install each of them 
separately.  The more packages, the more complexity.


Now, this is only looking at one side of things - why is splitting things into packages like that a 
good idea?  Well, I suppose there is the question of download size and size on disk.  More packages 
= each package can be smaller.  You get what you ask for.  The other side is smaller runtime size - 
no unnecessary things get loaded.


For the download size, I see the merits of bacon slicing into sets of independent packages.  For the 
runtime size, other methods (eg lazy loading) might be an alternative.


I can see the argument to use an install system like Eclipse, but on the other hand, as a user of 
Eclipse, I have to say that this aspect is one of the less satisfactory parts of Eclipse, and it can 
be frustratingly hard to know that you've got the right set of stuff installed.  Part of this is 
about the number of packages and the set of valid combinations.  If it's a small number then OK, 
perhaps not a problem.  Once the number grows, I think it does become a problem for the end user.



The question of the approach to OSGi is perhaps different.  I think it does make sense to create a 
bundle-per-module.  It does make sense to have clean interfaces for each module with crisp lists of 
imports and exports. (and yes, I know that we are a long way from that today!)


But I don't expect that OSGi bundles should be directly reflected into the bigger scale packaging. 
In other words, the bigger scale packaging is aimed at satisfying the user's needs and a big package 
could have 10 or 100 module-sized bundles in it, as necessary.  That depends on overall function, 
not on details of the modules used to provide that function.



Good debate here, but let's be clear about the big picture before the details 
swamp the debate.


Yours,  Mike.


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Jean-Sebastien Delfino

ant elder wrote:

On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:


Simon Nash wrote:


ant elder wrote:


On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:


Jean-Sebastien Delfino wrote:


I'd like to discuss the following: "What distro Zips are we building
and
what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for
releasing the above zips independently in this discussion and I'm


assuming
that we release all of the above together.

I'm also assuming that the relevant samples are included in each zip.

 This email was from 1/22/08, generated a lot of discussion for about 3

weeks, lots of opinions, no conclusion, no commits :)



No commits as we haven't found much consensus yet.

 I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and


refine


the contents of the distros and their dependencies.

Disclaimer - Please don't get me wrong I'm not saying that one distro ==


one


OSGi bundle, as I've already said several times on the list that the
big-OSGi-bundle approach didn't make sense to me :) I just think that
declaring and enforcing clean dependencies using OSGi will help us
refine
the contents of each distro.

 The term "enforcing" seems to suggest that there might be an OSGi

dependency for the Tuscany runtime.  I don't know if this was
intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.


Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
environment...



What would be the granularity of these OSGi bundles?  If the bundles
are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Export more than we really believe is correct.  This
   leaves us in the current unsatisfactory position of exposing
   unwanted implementation internals.
 b) Combine multiple maven modules with a close implementation
   affinity into a single OSGi bundle, and only expose true
   APIs or SPIs from these bundles.
 c) Refactor the code to remove dependencies on internals of other
   modules, and create new SPIs or APIs when this isn't possible.

I believe a combination of b) and c) is the best approach.


We've already rehashed this (and disagreed on this) in several other
threads, where I've already given my opinion:
- 1 bundle per module
- clean API/SPI imports/exports



 - Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension

registry mechanism (what we have now in Tuscany or better a combination
of
what we have now and the Eclipse Equinox registry for example) to detect
which pieces are installed and activate their capabilities.



Can you say a bit more about what an "extension registry mechanism" would
look like?

What the tuscany-all/manifest jar are trying to do is to have users not
need
to know about the internal makeup of Tuscany. So they can simply use
tuscany-all and avoid needing to know about all the dozens of different
Tuscany modules and their dependencies, and that should keep working over
many Tuscany releases whereas as we keep adding/deleting/changing the
modules we keep breaking user builds for each Tuscany release if they
refer
to the individual modules. Maybe the granularity isn't quite right yet
and
we need something in between the all jar and all the individual modules.

Is there much agreement that avoiding users needing to know about the
internal Tuscany modules is a Good Thing?

 Yes, I think this is important.  Ideally the Tuscany core runtime

would figure out which pieces are needed for the domain configuration
and load these pieces automatically.



Good requirement, but I don't think that the current manifest + tuscany-all
JAR solution is a good one (for example it mixes APIs and internals in the
same JAR, doesn't work well with IDEs, works only for one big distro,
requires different settings in J2SE and webapps)



I'm not saying I disagree that the all jar isn't quite the right granu

Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Jean-Sebastien Delfino

Raymond Feng wrote:

Hi,

Please see my comments inline.

Thanks,
Raymond

[snip]
Good requirement, but I don't think that the current manifest + 
tuscany-all JAR solution is a good one (for example it mixes APIs and 
internals in the same JAR, doesn't work well with IDEs, works only for 
one big distro, requires different settings in J2SE and webapps)




IMHO, the all-in-one package pretty much defeats our modularity. For 
example, all module activators will be called even the extension won't 
be used at all. Two extension cannot have different versions of a 3rd 
party jar.


That's what I was trying to convey too.


Here's what I'd like to see as a user:

- a short list of API JARs that I can add to my dev compile/build path

- a single small launcher or bootstrap JAR that takes care of 
bootstrapping the Tuscany runtime




This is similar to JEE launchClient. If I can invoke the Launcher 
directly in java, I would be happy.


- the launcher should detect the presence of installed extensions in a 
particular Tuscany installation


+1.


- as a user / app developer I should not have to know the list of JARs 
from all these extensions.


Do we expect the launcher to be smart enough to pick the right set of 
extensions based on the SCA assembly?




Not so fast. I'm trying not to mix these different aspects. That would 
be a separate step.


That's what I've been trying to do with the Node launcher and the 
library provided by the Tuscany Eclipse plugin. More work is required 
to get that vision in place (as the current launcher is still pretty 
rudimentary and only scans an installation directory for JARs).


There's a good extension registry mechanism in Eclipse Equinox [1]. It 
would allow us to rely on a robust mechanism for detecting installed 
extensions, tracking what they provide in an extension registry [2], 
and use a more user friendly syntax for registering extensions using 
plugin.xml files. If we start to integrate more with OSGi I think we 
should just use it (maybe in combination with what we currently have 
with META-INF/services for the cases where we don't use OSGi).




We can have a SPI so that different mechanism of extension discovery can 
be plugged in.


ExtensionRegistry is designed for that, it was modeled after the Eclipse 
IExtensionRegistry. I had been careful at the time to not put anything 
in it that wouldn't map easily to IExtensionRegistry.


 prefer to see both OSGi and META-INF/services

based approaches available.


Me too.




[1] http://www.eclipse.org/equinox/
[2] 
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox.registry/


-- Sebastien 




--
Jean-Sebastien


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Jean-Sebastien Delfino

ant elder wrote:

On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:


Simon Nash wrote:


ant elder wrote:


On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:


Jean-Sebastien Delfino wrote:


I'd like to discuss the following: "What distro Zips are we building
and
what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for
releasing the above zips independently in this discussion and I'm


assuming
that we release all of the above together.

I'm also assuming that the relevant samples are included in each zip.

 This email was from 1/22/08, generated a lot of discussion for about 3

weeks, lots of opinions, no conclusion, no commits :)



No commits as we haven't found much consensus yet.

 I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and


refine


the contents of the distros and their dependencies.

Disclaimer - Please don't get me wrong I'm not saying that one distro ==


one


OSGi bundle, as I've already said several times on the list that the
big-OSGi-bundle approach didn't make sense to me :) I just think that
declaring and enforcing clean dependencies using OSGi will help us
refine
the contents of each distro.

 The term "enforcing" seems to suggest that there might be an OSGi

dependency for the Tuscany runtime.  I don't know if this was
intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.


Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
environment...



What would be the granularity of these OSGi bundles?  If the bundles
are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Export more than we really believe is correct.  This
   leaves us in the current unsatisfactory position of exposing
   unwanted implementation internals.
 b) Combine multiple maven modules with a close implementation
   affinity into a single OSGi bundle, and only expose true
   APIs or SPIs from these bundles.
 c) Refactor the code to remove dependencies on internals of other
   modules, and create new SPIs or APIs when this isn't possible.

I believe a combination of b) and c) is the best approach.


We've already rehashed this (and disagreed on this) in several other
threads, where I've already given my opinion:
- 1 bundle per module
- clean API/SPI imports/exports



By "1 bundle per module" do you mean any sort bundled jar combining multiple
of our tuscany/java/sca/module jars is not worth pursuing?

   ...ant



I think that the right design is one bundle per maven module. I don't 
think that aggregating multiple modules into a single bundle makes much 
sense, or they should be aggregated in a single Maven module in the 
first place.


--
Jean-Sebastien


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Raymond Feng

Hi,

Please see my comments inline.

Thanks,
Raymond

[snip]
Good requirement, but I don't think that the current manifest + 
tuscany-all JAR solution is a good one (for example it mixes APIs and 
internals in the same JAR, doesn't work well with IDEs, works only for one 
big distro, requires different settings in J2SE and webapps)




IMHO, the all-in-one package pretty much defeats our modularity. For 
example, all module activators will be called even the extension won't be 
used at all. Two extension cannot have different versions of a 3rd party 
jar.



Here's what I'd like to see as a user:

- a short list of API JARs that I can add to my dev compile/build path

- a single small launcher or bootstrap JAR that takes care of 
bootstrapping the Tuscany runtime




This is similar to JEE launchClient. If I can invoke the Launcher directly 
in java, I would be happy.


- the launcher should detect the presence of installed extensions in a 
particular Tuscany installation


+1.


- as a user / app developer I should not have to know the list of JARs 
from all these extensions.


Do we expect the launcher to be smart enough to pick the right set of 
extensions based on the SCA assembly?




That's what I've been trying to do with the Node launcher and the library 
provided by the Tuscany Eclipse plugin. More work is required to get that 
vision in place (as the current launcher is still pretty rudimentary and 
only scans an installation directory for JARs).


There's a good extension registry mechanism in Eclipse Equinox [1]. It 
would allow us to rely on a robust mechanism for detecting installed 
extensions, tracking what they provide in an extension registry [2], and 
use a more user friendly syntax for registering extensions using 
plugin.xml files. If we start to integrate more with OSGi I think we 
should just use it (maybe in combination with what we currently have with 
META-INF/services for the cases where we don't use OSGi).




We can have a SPI so that different mechanism of extension discovery can be 
plugged in. I would prefer to see both OSGi and META-INF/services based 
approaches available.



[1] http://www.eclipse.org/equinox/
[2] http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox.registry/

-- Sebastien 




Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

> Simon Nash wrote:
>
>> ant elder wrote:
>>
>>> On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
>>> [EMAIL PROTECTED]> wrote:
>>>
 Jean-Sebastien Delfino wrote:

> I'd like to discuss the following: "What distro Zips are we building
> and
> what do they contain?"
>
> I think we could improve our distro scheme to provide:
> - smaller packages
> - easier for people to find what they need
>
> I was thinking about the following binary distro zips:
>
> - tuscany-core.zip - The base that everybody needs.
>  core assembly model and runtime
>  Java APIs, Java components
>
> - tuscany-web.zip - For WS and Web developers
>  WS binding, Web 2.0 bindings, Scripting components, Widget components
>
> - tuscany-jee.zip - For JEE app integration
>  EJB, RMI and JMS bindings, Spring components
>
> - tuscany-process.zip - For process development
>  BPEL and XQuery components
>
> - tuscany-all.zip - all of the above
>
> Note that I'm not trying to tackle release cycles and the potential for
> releasing the above zips independently in this discussion and I'm
>
 assuming
>>>
 that we release all of the above together.
>
> I'm also assuming that the relevant samples are included in each zip.
>
>  This email was from 1/22/08, generated a lot of discussion for about 3
 weeks, lots of opinions, no conclusion, no commits :)


>>> No commits as we haven't found much consensus yet.
>>>
>>>  I still think the same as what I had posted then, plus additional ideas:

 - Use OSGi exports/imports to export clean SPIs, hide internals, and

>>> refine
>>>
 the contents of the distros and their dependencies.

 Disclaimer - Please don't get me wrong I'm not saying that one distro ==

>>> one
>>>
 OSGi bundle, as I've already said several times on the list that the
 big-OSGi-bundle approach didn't make sense to me :) I just think that
 declaring and enforcing clean dependencies using OSGi will help us
 refine
 the contents of each distro.

  The term "enforcing" seems to suggest that there might be an OSGi
>> dependency for the Tuscany runtime.  I don't know if this was
>> intended.  I think the right approach is to have a Tuscany+OSGi
>> runtime (as we are building in itest\osgi-tuscany) which would
>> actually do enforcement, and a non-OSGi Tuscany runtime in which
>> the exports/imports are present in the jars but not enforced.
>>
>
> Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
> environment...
>
>
>> What would be the granularity of these OSGi bundles?  If the bundles
>> are the current maven modules, I think we will find a number of
>> classes that need to be exported even though these classes are not
>> considered part of the SPI or API that the module provides.
>> To resolve this I see the following options:
>>  a) Export more than we really believe is correct.  This
>>leaves us in the current unsatisfactory position of exposing
>>unwanted implementation internals.
>>  b) Combine multiple maven modules with a close implementation
>>affinity into a single OSGi bundle, and only expose true
>>APIs or SPIs from these bundles.
>>  c) Refactor the code to remove dependencies on internals of other
>>modules, and create new SPIs or APIs when this isn't possible.
>>
>> I believe a combination of b) and c) is the best approach.
>>
>
> We've already rehashed this (and disagreed on this) in several other
> threads, where I've already given my opinion:
> - 1 bundle per module
> - clean API/SPI imports/exports


By "1 bundle per module" do you mean any sort bundled jar combining multiple
of our tuscany/java/sca/module jars is not worth pursuing?

   ...ant


Re: Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 5:37 PM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

> Simon Nash wrote:
>
>> ant elder wrote:
>>
>>> On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
>>> [EMAIL PROTECTED]> wrote:
>>>
 Jean-Sebastien Delfino wrote:

> I'd like to discuss the following: "What distro Zips are we building
> and
> what do they contain?"
>
> I think we could improve our distro scheme to provide:
> - smaller packages
> - easier for people to find what they need
>
> I was thinking about the following binary distro zips:
>
> - tuscany-core.zip - The base that everybody needs.
>  core assembly model and runtime
>  Java APIs, Java components
>
> - tuscany-web.zip - For WS and Web developers
>  WS binding, Web 2.0 bindings, Scripting components, Widget components
>
> - tuscany-jee.zip - For JEE app integration
>  EJB, RMI and JMS bindings, Spring components
>
> - tuscany-process.zip - For process development
>  BPEL and XQuery components
>
> - tuscany-all.zip - all of the above
>
> Note that I'm not trying to tackle release cycles and the potential for
> releasing the above zips independently in this discussion and I'm
>
 assuming
>>>
 that we release all of the above together.
>
> I'm also assuming that the relevant samples are included in each zip.
>
>  This email was from 1/22/08, generated a lot of discussion for about 3
 weeks, lots of opinions, no conclusion, no commits :)


>>> No commits as we haven't found much consensus yet.
>>>
>>>  I still think the same as what I had posted then, plus additional ideas:

 - Use OSGi exports/imports to export clean SPIs, hide internals, and

>>> refine
>>>
 the contents of the distros and their dependencies.

 Disclaimer - Please don't get me wrong I'm not saying that one distro ==

>>> one
>>>
 OSGi bundle, as I've already said several times on the list that the
 big-OSGi-bundle approach didn't make sense to me :) I just think that
 declaring and enforcing clean dependencies using OSGi will help us
 refine
 the contents of each distro.

  The term "enforcing" seems to suggest that there might be an OSGi
>> dependency for the Tuscany runtime.  I don't know if this was
>> intended.  I think the right approach is to have a Tuscany+OSGi
>> runtime (as we are building in itest\osgi-tuscany) which would
>> actually do enforcement, and a non-OSGi Tuscany runtime in which
>> the exports/imports are present in the jars but not enforced.
>>
>
> Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi
> environment...
>
>
>> What would be the granularity of these OSGi bundles?  If the bundles
>> are the current maven modules, I think we will find a number of
>> classes that need to be exported even though these classes are not
>> considered part of the SPI or API that the module provides.
>> To resolve this I see the following options:
>>  a) Export more than we really believe is correct.  This
>>leaves us in the current unsatisfactory position of exposing
>>unwanted implementation internals.
>>  b) Combine multiple maven modules with a close implementation
>>affinity into a single OSGi bundle, and only expose true
>>APIs or SPIs from these bundles.
>>  c) Refactor the code to remove dependencies on internals of other
>>modules, and create new SPIs or APIs when this isn't possible.
>>
>> I believe a combination of b) and c) is the best approach.
>>
>
> We've already rehashed this (and disagreed on this) in several other
> threads, where I've already given my opinion:
> - 1 bundle per module
> - clean API/SPI imports/exports
>
>
>>  - Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension
 registry mechanism (what we have now in Tuscany or better a combination
 of
 what we have now and the Eclipse Equinox registry for example) to detect
 which pieces are installed and activate their capabilities.


>>> Can you say a bit more about what an "extension registry mechanism" would
>>> look like?
>>>
>>> What the tuscany-all/manifest jar are trying to do is to have users not
>>> need
>>> to know about the internal makeup of Tuscany. So they can simply use
>>> tuscany-all and avoid needing to know about all the dozens of different
>>> Tuscany modules and their dependencies, and that should keep working over
>>> many Tuscany releases whereas as we keep adding/deleting/changing the
>>> modules we keep breaking user builds for each Tuscany release if they
>>> refer
>>> to the individual modules. Maybe the granularity isn't quite right yet
>>> and
>>> we need something in between the all jar and all the individual modules.
>>>
>>> Is there much agreement that avoiding users needing to know about the
>>> internal Tuscany modules is a Good Thing?
>>>
>>>  Yes, I think this is important.  Ideally the 

Tracking Tuscany extensions, was: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Jean-Sebastien Delfino

Simon Nash wrote:

ant elder wrote:

On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

Jean-Sebastien Delfino wrote:
I'd like to discuss the following: "What distro Zips are we building 
and

what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for
releasing the above zips independently in this discussion and I'm

assuming

that we release all of the above together.

I'm also assuming that the relevant samples are included in each zip.


This email was from 1/22/08, generated a lot of discussion for about 3
weeks, lots of opinions, no conclusion, no commits :)



No commits as we haven't found much consensus yet.


I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and

refine

the contents of the distros and their dependencies.

Disclaimer - Please don't get me wrong I'm not saying that one distro ==

one

OSGi bundle, as I've already said several times on the list that the
big-OSGi-bundle approach didn't make sense to me :) I just think that
declaring and enforcing clean dependencies using OSGi will help us 
refine

the contents of each distro.


The term "enforcing" seems to suggest that there might be an OSGi
dependency for the Tuscany runtime.  I don't know if this was
intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.


Huh, Yes sure, we'd enforce OSGi rules when running in an OSGi 
environment...




What would be the granularity of these OSGi bundles?  If the bundles
are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Export more than we really believe is correct.  This
leaves us in the current unsatisfactory position of exposing
unwanted implementation internals.
 b) Combine multiple maven modules with a close implementation
affinity into a single OSGi bundle, and only expose true
APIs or SPIs from these bundles.
 c) Refactor the code to remove dependencies on internals of other
modules, and create new SPIs or APIs when this isn't possible.

I believe a combination of b) and c) is the best approach.


We've already rehashed this (and disagreed on this) in several other 
threads, where I've already given my opinion:

- 1 bundle per module
- clean API/SPI imports/exports




- Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension
registry mechanism (what we have now in Tuscany or better a 
combination of

what we have now and the Eclipse Equinox registry for example) to detect
which pieces are installed and activate their capabilities.



Can you say a bit more about what an "extension registry mechanism" would
look like?

What the tuscany-all/manifest jar are trying to do is to have users 
not need

to know about the internal makeup of Tuscany. So they can simply use
tuscany-all and avoid needing to know about all the dozens of different
Tuscany modules and their dependencies, and that should keep working over
many Tuscany releases whereas as we keep adding/deleting/changing the
modules we keep breaking user builds for each Tuscany release if they 
refer
to the individual modules. Maybe the granularity isn't quite right yet 
and

we need something in between the all jar and all the individual modules.

Is there much agreement that avoiding users needing to know about the
internal Tuscany modules is a Good Thing?


Yes, I think this is important.  Ideally the Tuscany core runtime
would figure out which pieces are needed for the domain configuration
and load these pieces automatically.



Good requirement, but I don't think that the current manifest + 
tuscany-all JAR solution is a good one (for example it mixes APIs and 
internals in the same JAR, doesn't work well with IDEs, works only for 
one big distro, requires different settings in J2SE and webapps)


Here's what I'd like to see as a user:

- a short list of API JARs that I can add to my dev compile/build path

- a single small launcher or bootstrap JAR that takes

Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread Simon Nash

ant elder wrote:

On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:

Jean-Sebastien Delfino wrote:

I'd like to discuss the following: "What distro Zips are we building and
what do they contain?"

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
 core assembly model and runtime
 Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
 WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
 EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
 BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for
releasing the above zips independently in this discussion and I'm

assuming

that we release all of the above together.

I'm also assuming that the relevant samples are included in each zip.


This email was from 1/22/08, generated a lot of discussion for about 3
weeks, lots of opinions, no conclusion, no commits :)



No commits as we haven't found much consensus yet.


I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and

refine

the contents of the distros and their dependencies.

Disclaimer - Please don't get me wrong I'm not saying that one distro ==

one

OSGi bundle, as I've already said several times on the list that the
big-OSGi-bundle approach didn't make sense to me :) I just think that
declaring and enforcing clean dependencies using OSGi will help us refine
the contents of each distro.


The term "enforcing" seems to suggest that there might be an OSGi
dependency for the Tuscany runtime.  I don't know if this was
intended.  I think the right approach is to have a Tuscany+OSGi
runtime (as we are building in itest\osgi-tuscany) which would
actually do enforcement, and a non-OSGi Tuscany runtime in which
the exports/imports are present in the jars but not enforced.

What would be the granularity of these OSGi bundles?  If the bundles
are the current maven modules, I think we will find a number of
classes that need to be exported even though these classes are not
considered part of the SPI or API that the module provides.
To resolve this I see the following options:
 a) Export more than we really believe is correct.  This
leaves us in the current unsatisfactory position of exposing
unwanted implementation internals.
 b) Combine multiple maven modules with a close implementation
affinity into a single OSGi bundle, and only expose true
APIs or SPIs from these bundles.
 c) Refactor the code to remove dependencies on internals of other
modules, and create new SPIs or APIs when this isn't possible.

I believe a combination of b) and c) is the best approach.


- Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension
registry mechanism (what we have now in Tuscany or better a combination of
what we have now and the Eclipse Equinox registry for example) to detect
which pieces are installed and activate their capabilities.



Can you say a bit more about what an "extension registry mechanism" would
look like?

What the tuscany-all/manifest jar are trying to do is to have users not need
to know about the internal makeup of Tuscany. So they can simply use
tuscany-all and avoid needing to know about all the dozens of different
Tuscany modules and their dependencies, and that should keep working over
many Tuscany releases whereas as we keep adding/deleting/changing the
modules we keep breaking user builds for each Tuscany release if they refer
to the individual modules. Maybe the granularity isn't quite right yet and
we need something in between the all jar and all the individual modules.

Is there much agreement that avoiding users needing to know about the
internal Tuscany modules is a Good Thing?


Yes, I think this is important.  Ideally the Tuscany core runtime
would figure out which pieces are needed for the domain configuration
and load these pieces automatically.

  Simon


  ...ant





Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-10 Thread ant elder
On Tue, Jun 10, 2008 at 3:02 AM, Jean-Sebastien Delfino <
[EMAIL PROTECTED]> wrote:
> Jean-Sebastien Delfino wrote:
>>
>> I'd like to discuss the following: "What distro Zips are we building and
>> what do they contain?"
>>
>> I think we could improve our distro scheme to provide:
>> - smaller packages
>> - easier for people to find what they need
>>
>> I was thinking about the following binary distro zips:
>>
>> - tuscany-core.zip - The base that everybody needs.
>>  core assembly model and runtime
>>  Java APIs, Java components
>>
>> - tuscany-web.zip - For WS and Web developers
>>  WS binding, Web 2.0 bindings, Scripting components, Widget components
>>
>> - tuscany-jee.zip - For JEE app integration
>>  EJB, RMI and JMS bindings, Spring components
>>
>> - tuscany-process.zip - For process development
>>  BPEL and XQuery components
>>
>> - tuscany-all.zip - all of the above
>>
>> Note that I'm not trying to tackle release cycles and the potential for
>> releasing the above zips independently in this discussion and I'm
assuming
>> that we release all of the above together.
>>
>> I'm also assuming that the relevant samples are included in each zip.
>>
>
> This email was from 1/22/08, generated a lot of discussion for about 3
> weeks, lots of opinions, no conclusion, no commits :)
>

No commits as we haven't found much consensus yet.

> I still think the same as what I had posted then, plus additional ideas:
>
> - Use OSGi exports/imports to export clean SPIs, hide internals, and
refine
> the contents of the distros and their dependencies.
>
> Disclaimer - Please don't get me wrong I'm not saying that one distro ==
one
> OSGi bundle, as I've already said several times on the list that the
> big-OSGi-bundle approach didn't make sense to me :) I just think that
> declaring and enforcing clean dependencies using OSGi will help us refine
> the contents of each distro.
>
> - Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension
> registry mechanism (what we have now in Tuscany or better a combination of
> what we have now and the Eclipse Equinox registry for example) to detect
> which pieces are installed and activate their capabilities.
>

Can you say a bit more about what an "extension registry mechanism" would
look like?

What the tuscany-all/manifest jar are trying to do is to have users not need
to know about the internal makeup of Tuscany. So they can simply use
tuscany-all and avoid needing to know about all the dozens of different
Tuscany modules and their dependencies, and that should keep working over
many Tuscany releases whereas as we keep adding/deleting/changing the
modules we keep breaking user builds for each Tuscany release if they refer
to the individual modules. Maybe the granularity isn't quite right yet and
we need something in between the all jar and all the individual modules.

Is there much agreement that avoiding users needing to know about the
internal Tuscany modules is a Good Thing?

  ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-06-09 Thread Jean-Sebastien Delfino

Jean-Sebastien Delfino wrote:


I'd like to discuss the following: "What distro Zips are we building and 
what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for 
releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.



This email was from 1/22/08, generated a lot of discussion for about 3 
weeks, lots of opinions, no conclusion, no commits :)


I still think the same as what I had posted then, plus additional ideas:

- Use OSGi exports/imports to export clean SPIs, hide internals, and 
refine the contents of the distros and their dependencies.


Disclaimer - Please don't get me wrong I'm not saying that one distro == 
one OSGi bundle, as I've already said several times on the list that the 
big-OSGi-bundle approach didn't make sense to me :) I just think that 
declaring and enforcing clean dependencies using OSGi will help us 
refine the contents of each distro.


- Instead of a tuscany-manifest JAR or tuscany-all JAR, use an extension 
registry mechanism (what we have now in Tuscany or better a combination 
of what we have now and the Eclipse Equinox registry for example) to 
detect which pieces are installed and activate their capabilities.


Are people interested in exploring these ideas?
--
Jean-Sebastien


Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-15 Thread Simon Nash

Sorry for the delay in responding.  I have been out sick for a few
days and I am just getting back to my Tuscany mail.  Comments inline.

  Simon

Jean-Sebastien Delfino wrote:

Comments inline.

Simon Nash wrote:
Well, I think the smart installer approach will be a nightmare. We 
had a similar approach in M2 and people didn't like it.



The M2 approach was very different from what I was proposing.  M2
downloaded everything on demand at runtime.  A smart installer would
set things up ahead of time with the necessary features for the
desired runtime configuration.  This is much more manageable if
there are any problems with the downloads.


OK, you scared me :)

If you're talking about analyzing the features required by a composite 
at deployment time, calculating the set of JARs providing these 
features, and making them available for installation, then you get my +1.


The work I've started with the Maven Ant generator plugin is a step in 
that direction. If you hook it with a composite model analyzer and 
remove the Ant specifics you get what I just described, allowing you to 
tailor a minimal runtime for a particular SCA application.



Yes, the tailored runtime could be based on the needs of a single composite
or on a predefined user-selected list of features.

You're right that the Eclipse feature install approach is a little 
like that. IMHO it has been a nightmare and probably one of the 
reasons why their download page [1] now shows targeted distros :)

- for Java developers
- for Java EE developers
- for Plugin developers
- for C++ developers
- for Web developers (on a separate page).
- and the classic IDE mix

Very similar to the approach I was proposing... I'm just seeing 
Spring and Eclipse, two extensible and successful projects adopt 
similar approaches, and thought they'd be good examples to follow :)



I think these are good examples to follow.  Tuscany is rather similar
in that it contains a base framework and many optional extensions, and
there is probably no user who wants to use all the optional features.



+1

But that's OK, if people don't like that split I can also live with a 
single big runtime distro.



Over time, we will add more and more optional features and this will
become more and more of a problem.  IMO, it's bad enough now that we
need to do something.


I agree with you, but there is no consensus on this.

I see several options:
a) a vote to pick a common direction now
b) have people develop their different visions to get user feedback
c) continue with the current distro scheme

Like I said I could live with (c). However, I would prefer (a) or (b).


I could live with c) only if we start doing baby steps towards better
modularity within a single distro as I proposed here.  So I'd like
to try to understand others' views on this baby step towards better
modularity before I take a firm position on a), b) or c).


I'd like to suggest a first baby step towards partitioning the contents
of the distro.  In this first step, there's still a single binary distro
with all the dependencies.  The difference is that the modules and lib
directories are broken down into subdirectories along the lines that
Sebastien and others have suggested.  Based on earlier discussions, the
subdirectories could be:

core - The base that everybody needs
  core assembly model and runtime
  Java APIs, Java components, SCA binding, Web Service binding

web - For Web developers
  Web 2.0 bindings, Scripting components, Widget components

JEE - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

process - For process development
  BPEL and XQuery components

Each of these could be built and tested separately.  Dependencies
between them would only use documented SPIs.  There would no
longer be a single catch-all tuscany-manifest jar or a single
tuscany-all jar.  If this first step is successful, we could think
about what further steps we could take to improve modularity.



I don't see what that baby step buys us. If we think that partitioning 
is the right approach, why not just simply do it cleanly and partition 
the distro?



Please take a look at my other email on this thread responding to Ant.
I think the main piece of work needed is to create a runtime that's
truly modular, and this baby step is a first move towards that.  Once
we have that, almost any configuration or reconfiguration will be
possible.  Doing a zip repackaging without solving the modularity
isssues might just move us from one inflexible packaging to a different
packaging that's equally inflexible.  For me, having the internal
flexibility enabled is the first step that provides the key to many
different scenarios under headings a) and b) above.

  Simon


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-11 Thread Jean-Sebastien Delfino

Comments inline.

Simon Nash wrote:
Well, I think the smart installer approach will be a nightmare. We had 
a similar approach in M2 and people didn't like it.



The M2 approach was very different from what I was proposing.  M2
downloaded everything on demand at runtime.  A smart installer would
set things up ahead of time with the necessary features for the
desired runtime configuration.  This is much more manageable if
there are any problems with the downloads.


OK, you scared me :)

If you're talking about analyzing the features required by a composite 
at deployment time, calculating the set of JARs providing these 
features, and making them available for installation, then you get my +1.


The work I've started with the Maven Ant generator plugin is a step in 
that direction. If you hook it with a composite model analyzer and 
remove the Ant specifics you get what I just described, allowing you to 
tailor a minimal runtime for a particular SCA application.


You're right that the Eclipse feature install approach is a little 
like that. IMHO it has been a nightmare and probably one of the 
reasons why their download page [1] now shows targeted distros :)

- for Java developers
- for Java EE developers
- for Plugin developers
- for C++ developers
- for Web developers (on a separate page).
- and the classic IDE mix

Very similar to the approach I was proposing... I'm just seeing Spring 
and Eclipse, two extensible and successful projects adopt similar 
approaches, and thought they'd be good examples to follow :)



I think these are good examples to follow.  Tuscany is rather similar
in that it contains a base framework and many optional extensions, and
there is probably no user who wants to use all the optional features.



+1

But that's OK, if people don't like that split I can also live with a 
single big runtime distro.



Over time, we will add more and more optional features and this will
become more and more of a problem.  IMO, it's bad enough now that we
need to do something.


I agree with you, but there is no consensus on this.

I see several options:
a) a vote to pick a common direction now
b) have people develop their different visions to get user feedback
c) continue with the current distro scheme

Like I said I could live with (c). However, I would prefer (a) or (b).


I'd like to suggest a first baby step towards partitioning the contents
of the distro.  In this first step, there's still a single binary distro
with all the dependencies.  The difference is that the modules and lib
directories are broken down into subdirectories along the lines that
Sebastien and others have suggested.  Based on earlier discussions, the
subdirectories could be:

core - The base that everybody needs
  core assembly model and runtime
  Java APIs, Java components, SCA binding, Web Service binding

web - For Web developers
  Web 2.0 bindings, Scripting components, Widget components

JEE - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

process - For process development
  BPEL and XQuery components

Each of these could be built and tested separately.  Dependencies
between them would only use documented SPIs.  There would no
longer be a single catch-all tuscany-manifest jar or a single
tuscany-all jar.  If this first step is successful, we could think
about what further steps we could take to improve modularity.



I don't see what that baby step buys us. If we think that partitioning 
is the right approach, why not just simply do it cleanly and partition 
the distro?


--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-11 Thread Simon Nash

ant elder wrote:

On Feb 10, 2008 10:06 PM, Simon Nash <[EMAIL PROTECTED]> wrote:




But that's OK, if people don't like that split I can also live with a

single big runtime distro.


Over time, we will add more and more optional features and this will
become more and more of a problem.  IMO, it's bad enough now that we
need to do something.



We don't seem to be reaching much consensus on this and i wonder if its
because we don't understand what each of our priorities are. There was an
attempt to find that out over at
http://apache.markmail.org/message/4wldk6zdjxaxz4kf but now here on this
thread I'm a bit lost after the many weeks of discussion so could you say
more about which aspect is "bad enough" now and maybe summarise the
important aspects you'd like the distribution(s) to have?

   ...ant


From a user perspective, if the user is doing personal development,
I suppose most users these days can put up with a 60MB download and
a 60MB runtime.  Where this becomes an issue is for people building
applications or services that depend on the Tuscany runtime and need
to be deployed into various environments.

Examples are packaging the Tuscany runtime packaged inside a webapp,
placing it in a shared library on a JEE appserver, placing it on
the classpath in a J2SE environment, and maybe others.  In all these
cases, it's desirable for the deployed runtime to contain only what's
needed to run the deployed applications.  This is particularly important
for Tuscany's external library dependencies, partly because of the
number and diversity of these (read: risk), and partly because the
versions of these libraries that we ship could potentially conflict
with other things within the runtime environment.

I also have a number of concerns from the Tuscany architecture, design
and implementation perspective.  As a Tuscany developer, I think the
present situation is bad for the following reasons.

1. We claim to have a "modular architecture" but all evidence suggests
   that this isn't the case.  For Tuscany SCA Java, we have to build it
   as one unit, test it as one unit, package it as one unit, and deliver
   it as one unit.  Where is the modularity?  What are the modules?

2. We know that there are dependency issues with some parts of the
   current codebase, with various parts of the runtime dragging
   dependencies that they shouldn't (either other parts of Tuscany or
   external libraries).  How much of the Tuscany runtime, and how
   many external libraries, are needed to run a simple "Hello World"?
   How many of these things are we comfortable with having as
   dependencies, and how many do we think are a problem that should
   be eliminated?  The present structure provides no answers to
   these questions.

3. We know that some of the maven modules are directly using
   implementation code within other maven modules rather than going
   through SPIs, but we don't know exactly what these non-SPI
   couplings are.  Our claim to have a stable and well-defined SPI
   is a little shaky until we get a handle on these exception cases
   and address them.

4. To make Tuscany successful, we need a modular architecture and
   implementation that addresses all the above issues.  This is because
   Tuscany needs to run in many different environments with many different
   configurations.  Without modularity, we won't be able to do this.
   This doesn't necessarily mean that we need to split the distribution
   right now, but I think it does mean that we need to work on improving
   modularity in the code, in at least some of the ways listed above.
   This would give us and our users some flexibility to build and deploy
   different combinations of capability to meet their needs.

  Simon


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-11 Thread ant elder
On Feb 10, 2008 10:06 PM, Simon Nash <[EMAIL PROTECTED]> wrote:



> But that's OK, if people don't like that split I can also live with a
> > single big runtime distro.
> >
> Over time, we will add more and more optional features and this will
> become more and more of a problem.  IMO, it's bad enough now that we
> need to do something.
>

We don't seem to be reaching much consensus on this and i wonder if its
because we don't understand what each of our priorities are. There was an
attempt to find that out over at
http://apache.markmail.org/message/4wldk6zdjxaxz4kf but now here on this
thread I'm a bit lost after the many weeks of discussion so could you say
more about which aspect is "bad enough" now and maybe summarise the
important aspects you'd like the distribution(s) to have?

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-10 Thread Simon Nash

Comments inline.

  Simon

Jean-Sebastien Delfino wrote:

Mike Edwards wrote:

Jean-Sebastien,

Let's chat some more about objectives, to see why we're seeming to 
look at this differently:




[snip]

Jean-Sebastien Delfino wrote:
I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget 
components


- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above




Mike Edwards wrote:
I'm not convinced that this is a particularly useful split.  Sorry 
to disagree, but it is worth debating this before folk do a lot of 
work.


 From the perspective of an end-user, their main goal in life is to 
get their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime 
materials) and a way of installing that with my runtime.  Then tell 
me how and where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not 
seem to help me very much.  Now I have to go read and understand 
what each package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime
2) have an install script of some kind that knows how to take 
content from the download package and put it "in the right place(s)" 
for it to be usable with my runtime (may be one script per runtime 
type)


- the partitioning which Jean-Sebastien describes above is actually 
more appropriately done by the install script.  It will either KNOW 
that only certain pieces are appropriate for a given runtime (eg no 
point in installing JEE related stuff on a non-JEE runtime), or it 
will be able to ask some simple questions about whether I will need 
some of the less common pieces


- am I asking for too much here, or is this the best approach for 
the end users?





Jean-Sebastien Delfino wrote:
Sorry, I'm not convinced:

- The packages I've proposed are relevant to all the runtimes you've 
listed (including the JEE one).


- If I'm an application developer or a system administrator and I'm 
not able to say if I'm going to use Web 2.0, JEE integration or 
business processes, I won't be able to answer the install script 
questions either.


I find the organization of the Spring framework download page [1] 
clear and useful and I was envisioning a similar download page 
organization for Tuscany. Do people find it confusing and can they 
say why?


[1] http://www.springframework.org/download



Mike edwards wrote:

The problem I have with the Spring download page, which I think is the 
same as the reason I'm not keen on the split you've suggested above, 
is that I first have to get to grips with what each download is about.


So, if I'm a newbie to Spring, I first have to learn about "Web Flow", 
"Security", "Web Services" and so on, in order to know whether I need 
them or not.  For someone already familiar with Spring, this split 
might be OK.


I was thinking about two categories of users:

A) The user who knows what he wants to achieve:
- I am a Web app developer and want to compose a Web app
- I want to compose Web Services
- I want to integrate existing EJBs from my JEE app server
- I want to develop business processes

These packages would help him get the distro he needs.

B) The lurker who wants to try out Tuscany.

The different packages on the download page would give him an overview 
of the high-level features. He'd pick one path and start to explore it, 
instead of drowning in a sea of features and JARs that he doesn't need 
to start experimenting.


 For a newbie, it isn't.


Let's go back to the reason to want to split things up.  We've 
previously discussed:


- splitting to make the download smaller
- making it easier for people to find what they need

I've said before that I think making things easier for people should 
be the more important of the goals.  The trouble is that these 
requirements are actually in conflict.  The simplest package is a 
single package that I download and then run as an installer - and I 
get everything I want. No more searching.  No sudden discovery that 
something does not work because I don't have some needed dependency.


I agree that package size is important, but it is less important to me 
than making things easy.  Even 100Mb ain't too big a deal these days 
with Broadband a general commodity.  (Microsoft certainly seem to 
think so when you look at some of their update bundles !!).


I note Simon

Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-04 Thread ant elder
On Feb 3, 2008 7:49 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:



> One thing looking at those Spring downloads is that i think they're more
> > comaprable to out SCA, SDO, and DAS downloads.
>
> I don't understand why you're saying that. I was following a scheme
> similar to Spring in my proposal.
>
> - tuscany-core - Spring core framework
> - tuscany-web - Spring web flow / Spring Web services
> - tuscany-process - Spring integration
>

What I was trying to say is that I don't think the Spring Framework does map
to only our tuscany-core as the Spring Framework also includes support for
all those other things i listed out before (ws, scripting,...), so following
the Spring model the tuscany-core, web, and process would be included in the
one distribution. The other Spring downloads are for completely separate
projects with separate release cycles just as our SDO and DAS projects are,
for example, Spring Web services is a complete WS stack comparable to Axis2
or CXF.

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-03 Thread Jean-Sebastien Delfino

Mike Edwards wrote:

Jean-Sebastien,

Let's chat some more about objectives, to see why we're seeming to look 
at this differently:




[snip]

Jean-Sebastien Delfino wrote:
I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above




Mike Edwards wrote:
I'm not convinced that this is a particularly useful split.  Sorry to 
disagree, but it is worth debating this before folk do a lot of work.


 From the perspective of an end-user, their main goal in life is to 
get their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime 
materials) and a way of installing that with my runtime.  Then tell 
me how and where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not 
seem to help me very much.  Now I have to go read and understand what 
each package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime
2) have an install script of some kind that knows how to take content 
from the download package and put it "in the right place(s)" for it 
to be usable with my runtime (may be one script per runtime type)


- the partitioning which Jean-Sebastien describes above is actually 
more appropriately done by the install script.  It will either KNOW 
that only certain pieces are appropriate for a given runtime (eg no 
point in installing JEE related stuff on a non-JEE runtime), or it 
will be able to ask some simple questions about whether I will need 
some of the less common pieces


- am I asking for too much here, or is this the best approach for the 
end users?





Jean-Sebastien Delfino wrote:
Sorry, I'm not convinced:

- The packages I've proposed are relevant to all the runtimes you've 
listed (including the JEE one).


- If I'm an application developer or a system administrator and I'm 
not able to say if I'm going to use Web 2.0, JEE integration or 
business processes, I won't be able to answer the install script 
questions either.


I find the organization of the Spring framework download page [1] 
clear and useful and I was envisioning a similar download page 
organization for Tuscany. Do people find it confusing and can they say 
why?


[1] http://www.springframework.org/download



Mike edwards wrote:

The problem I have with the Spring download page, which I think is the 
same as the reason I'm not keen on the split you've suggested above, is 
that I first have to get to grips with what each download is about.


So, if I'm a newbie to Spring, I first have to learn about "Web Flow", 
"Security", "Web Services" and so on, in order to know whether I need 
them or not.  For someone already familiar with Spring, this split might 
be OK.


I was thinking about two categories of users:

A) The user who knows what he wants to achieve:
- I am a Web app developer and want to compose a Web app
- I want to compose Web Services
- I want to integrate existing EJBs from my JEE app server
- I want to develop business processes

These packages would help him get the distro he needs.

B) The lurker who wants to try out Tuscany.

The different packages on the download page would give him an overview 
of the high-level features. He'd pick one path and start to explore it, 
instead of drowning in a sea of features and JARs that he doesn't need 
to start experimenting.


 For a newbie, it isn't.


Let's go back to the reason to want to split things up.  We've 
previously discussed:


- splitting to make the download smaller
- making it easier for people to find what they need

I've said before that I think making things easier for people should be 
the more important of the goals.  The trouble is that these requirements 
are actually in conflict.  The simplest package is a single package that 
I download and then run as an installer - and I get everything I want. 
No more searching.  No sudden discovery that something does not work 
because I don't have some needed dependency.


I agree that package size is important, but it is less important to me 
than making things easy.  Even 100Mb ain't too big a deal these days 
with Broadband a general commodity.  (Microsoft certainly seem to think 
so when you look at some of their update bundles !!).


I note Simon Nash's comment about the potential of a small download 
packa

Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-03 Thread Mike Edwards

Jean-Sebastien,

Let's chat some more about objectives, to see why we're seeming to look 
at this differently:


Jean-Sebastien Delfino wrote:

Mike Edwards wrote:
[snip]
 >> Jean-Sebastien Delfino wrote:

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need



I agree with the objectives.  The second of the two is more important 
from my perspective.



I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above



I'm not convinced that this is a particularly useful split.  Sorry to 
disagree, but it is worth debating this before folk do a lot of work.


 From the perspective of an end-user, their main goal in life is to 
get their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime materials) 
and a way of installing that with my runtime.  Then tell me how and 
where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not seem 
to help me very much.  Now I have to go read and understand what each 
package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime
2) have an install script of some kind that knows how to take content 
from the download package and put it "in the right place(s)" for it to 
be usable with my runtime (may be one script per runtime type)


- the partitioning which Jean-Sebastien describes above is actually 
more appropriately done by the install script.  It will either KNOW 
that only certain pieces are appropriate for a given runtime (eg no 
point in installing JEE related stuff on a non-JEE runtime), or it 
will be able to ask some simple questions about whether I will need 
some of the less common pieces


- am I asking for too much here, or is this the best approach for the 
end users?




Sorry, I'm not convinced:

- The packages I've proposed are relevant to all the runtimes you've 
listed (including the JEE one).


- If I'm an application developer or a system administrator and I'm not 
able to say if I'm going to use Web 2.0, JEE integration or business 
processes, I won't be able to answer the install script questions either.


I find the organization of the Spring framework download page [1] clear 
and useful and I was envisioning a similar download page organization 
for Tuscany. Do people find it confusing and can they say why?


[1] http://www.springframework.org/download


The problem I have with the Spring download page, which I think is the 
same as the reason I'm not keen on the split you've suggested above, is 
that I first have to get to grips with what each download is about.


So, if I'm a newbie to Spring, I first have to learn about "Web Flow", 
"Security", "Web Services" and so on, in order to know whether I need 
them or not.  For someone already familiar with Spring, this split might 
be OK.  For a newbie, it isn't.


Let's go back to the reason to want to split things up.  We've 
previously discussed:


- splitting to make the download smaller
- making it easier for people to find what they need

I've said before that I think making things easier for people should be 
the more important of the goals.  The trouble is that these requirements 
are actually in conflict.  The simplest package is a single package that 
I download and then run as an installer - and I get everything I want. 
No more searching.  No sudden discovery that something does not work 
because I don't have some needed dependency.


I agree that package size is important, but it is less important to me 
than making things easy.  Even 100Mb ain't too big a deal these days 
with Broadband a general commodity.  (Microsoft certainly seem to think 
so when you look at some of their update bundles !!).


I note Simon Nash's comment about the potential of a small download 
package that has some installer that then goes and fetches the rest. 
This is a bit like the Eclipse approach.  I could live with that - as 
long as it's also possible to get a big bundle that I can download for 
any offline work.



If we don't think that folk can answer questions - and you may be right 
on that - then best to assume they need everything and avoid problems 
that way.



Hope this helps,

Yours,  Mike.

PS I definitely agree with the idea of h

Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-03 Thread Jean-Sebastien Delfino

ant elder wrote:
[snip]

I'm leaning more towards what Mike is suggesting.


OK it doesn't look like we're reaching a consensus as at least two 
people don't seem to like the scheme I proposed.


I take it back then, forget about my proposal, but I still think that a 
single download containing all kinds of extensions that I don't need 
most of the times is overkill.



One thing looking at those Spring downloads is that i think they're more
comaprable to out SCA, SDO, and DAS downloads. 


I don't understand why you're saying that. I was following a scheme 
similar to Spring in my proposal.


- tuscany-core - Spring core framework
- tuscany-web - Spring web flow / Spring Web services
- tuscany-process - Spring integration

--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-03 Thread ant elder
On Feb 2, 2008 3:23 AM, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

> Mike Edwards wrote:
> [snip]
>  >> Jean-Sebastien Delfino wrote:
> >> I think we could improve our distro scheme to provide:
> >> - smaller packages
> >> - easier for people to find what they need
> >>
> >
> > I agree with the objectives.  The second of the two is more important
> > from my perspective.
> >
> >> I was thinking about the following binary distro zips:
> >>
> >> - tuscany-core.zip - The base that everybody needs.
> >>   core assembly model and runtime
> >>   Java APIs, Java components
> >>
> >> - tuscany-web.zip - For WS and Web developers
> >>   WS binding, Web 2.0 bindings, Scripting components, Widget components
> >>
> >> - tuscany-jee.zip - For JEE app integration
> >>   EJB, RMI and JMS bindings, Spring components
> >>
> >> - tuscany-process.zip - For process development
> >>   BPEL and XQuery components
> >>
> >> - tuscany-all.zip - all of the above
> >>
> >
> > I'm not convinced that this is a particularly useful split.  Sorry to
> > disagree, but it is worth debating this before folk do a lot of work.
> >
> >  From the perspective of an end-user, their main goal in life is to get
> > their applications working on their runtime.
> >
> > I view this as something like:
> >
> > - give me a Tuscany package (containing the Tuscany runtime materials)
> > and a way of installing that with my runtime.  Then tell me how and
> > where I put my application stuff so that it will run.
> >
> > - splitting up the Tuscany package into several packages does not seem
> > to help me very much.  Now I have to go read and understand what each
> > package does and what I need to do with it.
> >
> > - let's envisage a series of potential runtimes which I could be using:
> > a) standalone Tuscany
> > b) Tomcat
> > c) Geronimo
> > d) WebSphere
> > e) a. n. other runtime
> > What I think I'd really like is to be told
> > 1) go get this (one) download package containing the runtime
> > 2) have an install script of some kind that knows how to take content
> > from the download package and put it "in the right place(s)" for it to
> > be usable with my runtime (may be one script per runtime type)
> >
> > - the partitioning which Jean-Sebastien describes above is actually more
> > appropriately done by the install script.  It will either KNOW that only
> > certain pieces are appropriate for a given runtime (eg no point in
> > installing JEE related stuff on a non-JEE runtime), or it will be able
> > to ask some simple questions about whether I will need some of the less
> > common pieces
> >
> > - am I asking for too much here, or is this the best approach for the
> > end users?
> >
>
> Sorry, I'm not convinced:
>
> - The packages I've proposed are relevant to all the runtimes you've
> listed (including the JEE one).
>
> - If I'm an application developer or a system administrator and I'm not
> able to say if I'm going to use Web 2.0, JEE integration or business
> processes, I won't be able to answer the install script questions either.
>
> I find the organization of the Spring framework download page [1] clear
> and useful and I was envisioning a similar download page organization
> for Tuscany. Do people find it confusing and can they say why?
>
> [1] http://www.springframework.org/download
> --
> Jean-Sebastien
>
>
I'm leaning more towards what Mike is suggesting.

One thing looking at those Spring downloads is that i think they're more
comaprable to out SCA, SDO, and DAS downloads. If you look within the main
Spring Framework distribution its actually very similar to our SCA one and,
as we do, it includes code for all sorts of stuff and their dependencies -

aop, beans, caching, context, core, dao, ejb, glassfixh, oc4j, tomcat,
weblogic, websphere, jca, jdbc, jms, jmx, jndi, mail, orm, hibernate,
ibatis, jdo, jpa, toplink, remoting with caucho, jaxrpc, jaxws, rmi and
soap, scheduling and quartz, scripting with bsh, groovy and jruby,
transactions and jta, and ui stuff with freemaker, jasper and velocity, jsf,
portlets, servlets, tiles, struts

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-02 Thread sebb
On 02/02/2008, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
> Mike Edwards wrote:
> [snip]
>  >> Jean-Sebastien Delfino wrote:
> >> I think we could improve our distro scheme to provide:
> >> - smaller packages
> >> - easier for people to find what they need
> >>
> >
> > I agree with the objectives.  The second of the two is more important
> > from my perspective.
> >
> >> I was thinking about the following binary distro zips:
> >>
> >> - tuscany-core.zip - The base that everybody needs.
> >>   core assembly model and runtime
> >>   Java APIs, Java components
> >>
> >> - tuscany-web.zip - For WS and Web developers
> >>   WS binding, Web 2.0 bindings, Scripting components, Widget components
> >>
> >> - tuscany-jee.zip - For JEE app integration
> >>   EJB, RMI and JMS bindings, Spring components
> >>
> >> - tuscany-process.zip - For process development
> >>   BPEL and XQuery components
> >>
> >> - tuscany-all.zip - all of the above
> >>
> >
> > I'm not convinced that this is a particularly useful split.  Sorry to
> > disagree, but it is worth debating this before folk do a lot of work.
> >
> >  From the perspective of an end-user, their main goal in life is to get
> > their applications working on their runtime.
> >
> > I view this as something like:
> >
> > - give me a Tuscany package (containing the Tuscany runtime materials)
> > and a way of installing that with my runtime.  Then tell me how and
> > where I put my application stuff so that it will run.
> >
> > - splitting up the Tuscany package into several packages does not seem
> > to help me very much.  Now I have to go read and understand what each
> > package does and what I need to do with it.
> >
> > - let's envisage a series of potential runtimes which I could be using:
> > a) standalone Tuscany
> > b) Tomcat
> > c) Geronimo
> > d) WebSphere
> > e) a. n. other runtime
> > What I think I'd really like is to be told
> > 1) go get this (one) download package containing the runtime
> > 2) have an install script of some kind that knows how to take content
> > from the download package and put it "in the right place(s)" for it to
> > be usable with my runtime (may be one script per runtime type)
> >
> > - the partitioning which Jean-Sebastien describes above is actually more
> > appropriately done by the install script.  It will either KNOW that only
> > certain pieces are appropriate for a given runtime (eg no point in
> > installing JEE related stuff on a non-JEE runtime), or it will be able
> > to ask some simple questions about whether I will need some of the less
> > common pieces
> >
> > - am I asking for too much here, or is this the best approach for the
> > end users?
> >
>
> Sorry, I'm not convinced:
>
> - The packages I've proposed are relevant to all the runtimes you've
> listed (including the JEE one).
>
> - If I'm an application developer or a system administrator and I'm not
> able to say if I'm going to use Web 2.0, JEE integration or business
> processes, I won't be able to answer the install script questions either.
>
> I find the organization of the Spring framework download page [1] clear
> and useful and I was envisioning a similar download page organization
> for Tuscany. Do people find it confusing and can they say why?
>

I know nothing about Spring or Tuscany, so take these comments as you wish.

It's not clear to me if Webflow is a part of Framework or independent
- does one have to download both? Similarly for the other
products/addons on the page. There is a long list of Homepages at the
bottom - why do only some of them have download sections on this page?

I find the packaging of the Framework a bit annoying. Suppose I
downloaded the binary only, and then decide I need the documentation -
I've got to download the binary as well.  Likewise if I just want the
documentation. Why not just provide the documentation separately?

BTW, the heading

"For More Information Access Spring Project Homepages"

could be clearer, e.g.

For more information on Spring projects, please visit their homepages

> [1] http://www.springframework.org/download
> --
> Jean-Sebastien
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-02-01 Thread Jean-Sebastien Delfino

Mike Edwards wrote:
[snip]
>> Jean-Sebastien Delfino wrote:

I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need



I agree with the objectives.  The second of the two is more important 
from my perspective.



I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above



I'm not convinced that this is a particularly useful split.  Sorry to 
disagree, but it is worth debating this before folk do a lot of work.


 From the perspective of an end-user, their main goal in life is to get 
their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime materials) 
and a way of installing that with my runtime.  Then tell me how and 
where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not seem 
to help me very much.  Now I have to go read and understand what each 
package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime
2) have an install script of some kind that knows how to take content 
from the download package and put it "in the right place(s)" for it to 
be usable with my runtime (may be one script per runtime type)


- the partitioning which Jean-Sebastien describes above is actually more 
appropriately done by the install script.  It will either KNOW that only 
certain pieces are appropriate for a given runtime (eg no point in 
installing JEE related stuff on a non-JEE runtime), or it will be able 
to ask some simple questions about whether I will need some of the less 
common pieces


- am I asking for too much here, or is this the best approach for the 
end users?




Sorry, I'm not convinced:

- The packages I've proposed are relevant to all the runtimes you've 
listed (including the JEE one).


- If I'm an application developer or a system administrator and I'm not 
able to say if I'm going to use Web 2.0, JEE integration or business 
processes, I won't be able to answer the install script questions either.


I find the organization of the Spring framework download page [1] clear 
and useful and I was envisioning a similar download page organization 
for Tuscany. Do people find it confusing and can they say why?


[1] http://www.springframework.org/download
--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-31 Thread sebb
On 31/01/2008, Simon Nash <[EMAIL PROTECTED]> wrote:
> Comments inline.
>
>Simon
>
> Mike Edwards wrote:
>
> > Folks,
> >
> > As with Simon Nash - sorry for my slow reply but the SCA spec work has
> > been a hard master over the past 2 weeks  ;-)
> >
> > Jean-Sebastien Delfino wrote:
> >
> >> Simon Nash wrote:
> >>  >> Jean-Sebastien Delfino wrote:
> >>
>  - What distro Zips are we building and what do they contain? just
>  the runtime? samples or not? dependencies or not? are we building
>  specialized distros for different use cases?
> >>
> >> [snip]
> >>
> >>> With a big topic like this, dividing it into separate threads makes it
> >>> easier for people to follow and participate in the discussions.  The
> >>> split you are suggesting looks good to me.
> >>
> >> [snip]
> >>
> >> I'd like to discuss the following: "What distro Zips are we building
> >> and what do they contain?"
> >>
> >> I think we could improve our distro scheme to provide:
> >> - smaller packages
> >> - easier for people to find what they need
> >>
> >
> > I agree with the objectives.  The second of the two is more important
> > from my perspective.
> >
> >> I was thinking about the following binary distro zips:
> >>
> >> - tuscany-core.zip - The base that everybody needs.
> >>   core assembly model and runtime
> >>   Java APIs, Java components
> >>
> >> - tuscany-web.zip - For WS and Web developers
> >>   WS binding, Web 2.0 bindings, Scripting components, Widget components
> >>
> >> - tuscany-jee.zip - For JEE app integration
> >>   EJB, RMI and JMS bindings, Spring components
> >>
> >> - tuscany-process.zip - For process development
> >>   BPEL and XQuery components
> >>
> >> - tuscany-all.zip - all of the above
> >>
> >
> > I'm not convinced that this is a particularly useful split.  Sorry to
> > disagree, but it is worth debating this before folk do a lot of work.
> >
> >  From the perspective of an end-user, their main goal in life is to get
> > their applications working on their runtime.
> >
> > I view this as something like:
> >
> > - give me a Tuscany package (containing the Tuscany runtime materials)
> > and a way of installing that with my runtime.  Then tell me how and
> > where I put my application stuff so that it will run.
> >
> > - splitting up the Tuscany package into several packages does not seem
> > to help me very much.  Now I have to go read and understand what each
> > package does and what I need to do with it.
> >
> > - let's envisage a series of potential runtimes which I could be using:
> > a) standalone Tuscany
> > b) Tomcat
> > c) Geronimo
> > d) WebSphere
> > e) a. n. other runtime
> > What I think I'd really like is to be told
> > 1) go get this (one) download package containing the runtime
>  >
> I'd like to focus on "...containing the runtime".  This is the heart
> of this discussion.  What is "the runtime"?  If it's about 2 megs of
> Tuscany jars, this is a good approach.  If it includes about 50 megs
> of dependent jars, plus samples/demos/etc., this suffers from all the
> problems that we have today.
>
> > 2) have an install script of some kind that knows how to take content
> > from the download package and put it "in the right place(s)" for it to
> > be usable with my runtime (may be one script per runtime type)
> >
> If this script can also pull down the dependencies needed, I am ++1
> with doing this.  It can't be too hard, surely, to find the repos
> where they all live and pull them down.  It shouldn't take any more
> time to do this than having them downloaded as part of the Tuscany
> distro.  Actually, it should take less time because the script could
> be more intelligent about only pulling down what's needed and not
> already present in the user's environment.
>

+1

Just need to be careful with downloading jars that are not released
under AL 2.0 that the user is made aware of the license requirements.

This might mean having to agree to a prompt.

> > - the partitioning which Jean-Sebastien describes above is actually more
> > appropriately done by the install script.  It will either KNOW that only
> > certain pieces are appropriate for a given runtime (eg no point in
> > installing JEE related stuff on a non-JEE runtime), or it will be able
> > to ask some simple questions about whether I will need some of the less
> > common pieces
> >
>
> > - am I asking for too much here, or is this the best approach for the
> > end users?
> >
> For many end users, it would be a good approach.  However, it doesn't
> (on its own) solve the issue about making it easier for users to find
> what they need, as the scope of Tuscany gets broader and more diverse
> over time.  I'd like to see some progress on that as well.
>
>Simon
>
> >> Note that I'm not trying to tackle release cycles and the potential
> >> for releasing the above zips independently in this discussion and I'm
> >> assuming that we release all of the above together.
> >>
> >> I'm also assuming that the relevant samples a

Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-31 Thread Simon Nash

Comments inline.

  Simon

Mike Edwards wrote:


Folks,

As with Simon Nash - sorry for my slow reply but the SCA spec work has 
been a hard master over the past 2 weeks  ;-)


Jean-Sebastien Delfino wrote:


Simon Nash wrote:
 >> Jean-Sebastien Delfino wrote:

- What distro Zips are we building and what do they contain? just 
the runtime? samples or not? dependencies or not? are we building 
specialized distros for different use cases?


[snip]


With a big topic like this, dividing it into separate threads makes it
easier for people to follow and participate in the discussions.  The
split you are suggesting looks good to me.


[snip]

I'd like to discuss the following: "What distro Zips are we building 
and what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need



I agree with the objectives.  The second of the two is more important 
from my perspective.



I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above



I'm not convinced that this is a particularly useful split.  Sorry to 
disagree, but it is worth debating this before folk do a lot of work.


 From the perspective of an end-user, their main goal in life is to get 
their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime materials) 
and a way of installing that with my runtime.  Then tell me how and 
where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not seem 
to help me very much.  Now I have to go read and understand what each 
package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime

>
I'd like to focus on "...containing the runtime".  This is the heart
of this discussion.  What is "the runtime"?  If it's about 2 megs of
Tuscany jars, this is a good approach.  If it includes about 50 megs
of dependent jars, plus samples/demos/etc., this suffers from all the
problems that we have today.

2) have an install script of some kind that knows how to take content 
from the download package and put it "in the right place(s)" for it to 
be usable with my runtime (may be one script per runtime type)



If this script can also pull down the dependencies needed, I am ++1
with doing this.  It can't be too hard, surely, to find the repos
where they all live and pull them down.  It shouldn't take any more
time to do this than having them downloaded as part of the Tuscany
distro.  Actually, it should take less time because the script could
be more intelligent about only pulling down what's needed and not
already present in the user's environment.

- the partitioning which Jean-Sebastien describes above is actually more 
appropriately done by the install script.  It will either KNOW that only 
certain pieces are appropriate for a given runtime (eg no point in 
installing JEE related stuff on a non-JEE runtime), or it will be able 
to ask some simple questions about whether I will need some of the less 
common pieces




- am I asking for too much here, or is this the best approach for the 
end users?



For many end users, it would be a good approach.  However, it doesn't
(on its own) solve the issue about making it easier for users to find
what they need, as the scope of Tuscany gets broader and more diverse
over time.  I'd like to see some progress on that as well.

  Simon

Note that I'm not trying to tackle release cycles and the potential 
for releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.

Thoughts?



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-31 Thread Mike Edwards

Folks,

As with Simon Nash - sorry for my slow reply but the SCA spec work has 
been a hard master over the past 2 weeks  ;-)


Jean-Sebastien Delfino wrote:

Simon Nash wrote:
 >> Jean-Sebastien Delfino wrote:
- What distro Zips are we building and what do they contain? just the 
runtime? samples or not? dependencies or not? are we building 
specialized distros for different use cases?

[snip]

With a big topic like this, dividing it into separate threads makes it
easier for people to follow and participate in the discussions.  The
split you are suggesting looks good to me.

[snip]

I'd like to discuss the following: "What distro Zips are we building and 
what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need



I agree with the objectives.  The second of the two is more important 
from my perspective.



I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above



I'm not convinced that this is a particularly useful split.  Sorry to 
disagree, but it is worth debating this before folk do a lot of work.


From the perspective of an end-user, their main goal in life is to get 
their applications working on their runtime.


I view this as something like:

- give me a Tuscany package (containing the Tuscany runtime materials) 
and a way of installing that with my runtime.  Then tell me how and 
where I put my application stuff so that it will run.


- splitting up the Tuscany package into several packages does not seem 
to help me very much.  Now I have to go read and understand what each 
package does and what I need to do with it.


- let's envisage a series of potential runtimes which I could be using:
a) standalone Tuscany
b) Tomcat
c) Geronimo
d) WebSphere
e) a. n. other runtime
What I think I'd really like is to be told
1) go get this (one) download package containing the runtime
2) have an install script of some kind that knows how to take content 
from the download package and put it "in the right place(s)" for it to 
be usable with my runtime (may be one script per runtime type)


- the partitioning which Jean-Sebastien describes above is actually more 
appropriately done by the install script.  It will either KNOW that only 
certain pieces are appropriate for a given runtime (eg no point in 
installing JEE related stuff on a non-JEE runtime), or it will be able 
to ask some simple questions about whether I will need some of the less 
common pieces


- am I asking for too much here, or is this the best approach for the 
end users?


Note that I'm not trying to tackle release cycles and the potential for 
releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.

Thoughts?


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-29 Thread ant elder
On Jan 29, 2008 3:09 PM, Simon Nash <[EMAIL PROTECTED]> wrote:

> Sorry for the late response.  I have been travelling and in OASIS
> meetings, and I'm just catching up with the ML now.
>
> See comments inline.
>
>   Simon
>
> Jean-Sebastien Delfino wrote:
>
> > Simon Nash wrote:
> >  >> Jean-Sebastien Delfino wrote:
> >
> >>> - What distro Zips are we building and what do they contain? just the
> >>> runtime? samples or not? dependencies or not? are we building
> >>> specialized distros for different use cases?
> >
> > [snip]
> >
> >> With a big topic like this, dividing it into separate threads makes it
> >> easier for people to follow and participate in the discussions.  The
> >> split you are suggesting looks good to me.
> >
> > [snip]
> >
> > I'd like to discuss the following: "What distro Zips are we building and
> > what do they contain?"
> >
> > I think we could improve our distro scheme to provide:
> > - smaller packages
> > - easier for people to find what they need
> >
> +1 to both of these.  It would also help modularity by eliminating
> some undesired dependencies, and it would give people a better
> understanding of the true size of Tuscany.
>
> > I was thinking about the following binary distro zips:
> >
> > - tuscany-core.zip - The base that everybody needs.
> >   core assembly model and runtime
> >   Java APIs, Java components
> >
> I think it would make sense to have binding.ws in here.  If we are
> including binding.sca (as auggested by Sebastien), this implies a
> need for binding.ws to handle remote endpoints.
>

I agree with that. Not sure i agree all the other distro's will really help
the goal of making things "easier for people to find what they need" but if
we do have a core distro then i think it should include WS support.

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-29 Thread Simon Nash

Sorry for the late response.  I have been travelling and in OASIS
meetings, and I'm just catching up with the ML now.

See comments inline.

  Simon

Jean-Sebastien Delfino wrote:


Simon Nash wrote:
 >> Jean-Sebastien Delfino wrote:

- What distro Zips are we building and what do they contain? just the 
runtime? samples or not? dependencies or not? are we building 
specialized distros for different use cases?


[snip]


With a big topic like this, dividing it into separate threads makes it
easier for people to follow and participate in the discussions.  The
split you are suggesting looks good to me.


[snip]

I'd like to discuss the following: "What distro Zips are we building and 
what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need


+1 to both of these.  It would also help modularity by eliminating
some undesired dependencies, and it would give people a better
understanding of the true size of Tuscany.


I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components


I think it would make sense to have binding.ws in here.  If we are
including binding.sca (as auggested by Sebastien), this implies a
need for binding.ws to handle remote endpoints.


- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components


+1 (see comment above).


- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components


+1


- tuscany-process.zip - For process development
  BPEL and XQuery components


+1


- tuscany-all.zip - all of the above


If this is exactly equal to the sum of all of the above, then we just
need a zipzip file that contains the other zips, with a script to
unzip them all into the same set of directories.

Note that I'm not trying to tackle release cycles and the potential for 
releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.



+1 for taking this as a first step.


I'm also assuming that the relevant samples are included in each zip.


+1

  Simon


Thoughts?




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-25 Thread Rajini Sivaram
Thank you, Sebastien. Graham or I will provide the changes once the new
distribution poms are ready.

Thank you...

Regards,

Rajini


On 1/24/08, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>
> Rajini Sivaram wrote:
> > Would it be possible to add an OSGi manifest header into these zip files
> so
> > that the zips can be directly installed into an OSGi runtime? The
> entries
> > will not have any impact when used without OSGi.
>
> +1
>
> The only issue would be the
> > creation of these entries. We have two options - 1)generate them
> > automatically during the build process using the maven-bundle-plugin,
>
> +1 or another automated process
>
> or 2)
> > hand-code a manifest file. It would be easiest to go with option 2) to
> start
> > with to avoid any build issues. If it becomes difficult to maintain the
> > hand-coded manifest file, we can move to option 1).
>
> I'd suggest to write it by hand once to define the target to automate,
> then automate its generation right away.
>
> > The manifest entries will contain bundle names, versions, imported
> packages,
> > exported packages and a bundle classpath(which lists jars contained
> inside
> > the zip).
>
> Can you post an example or put it in SVN? Thanks.
>
> --
> Jean-Sebastien
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread Luciano Resende
I just want to throw my 0.02 cents here...

I haven't made up my mind if these multiple distros are going to
really help or not, but once we implement this, we will need very
clear user documentation, to avoid confusion. We should also state
very clear the limitations, otherwise people will start to download
distribution A and will start to ask how to add binding X, etc...

Also, we should double check all modules that have derby db in SVN and
make that created by the build process. This would also help on
reducing the size of distributions.

On Jan 24, 2008 9:59 AM, Raymond Feng <[EMAIL PROTECTED]> wrote:
> There are two tools in Apache felix can probably help:
>
> 1) mangen - OSGi Bundle Manifest generator
> http://cwiki.apache.org/confluence/display/FELIX/Bundle+Manifest+Generator+%28mangen%29
>
> We could use it to create OSGi bundles out of the existing jars.
>
> 2) Maven Bundle Plugin 1.2.0
>
> We could use it to automate the generating OSGi manifests as part of the
> maven build.
>
> Thanks,
> Raymond
>
> - Original Message -
> From: "Jean-Sebastien Delfino" <[EMAIL PROTECTED]>
> To: 
>
> Sent: Thursday, January 24, 2008 9:46 AM
> Subject: Re: Distribution zips and what they contain, was: SCA runtimes
>
>
> > Rajini Sivaram wrote:
> >> Would it be possible to add an OSGi manifest header into these zip files
> >> so
> >> that the zips can be directly installed into an OSGi runtime? The entries
> >> will not have any impact when used without OSGi.
> >
> > +1
> >
> > The only issue would be the
> >> creation of these entries. We have two options - 1)generate them
> >> automatically during the build process using the maven-bundle-plugin,
> >
> > +1 or another automated process
> >
> > or 2)
> >> hand-code a manifest file. It would be easiest to go with option 2) to
> >> start
> >> with to avoid any build issues. If it becomes difficult to maintain the
> >> hand-coded manifest file, we can move to option 1).
> >
> > I'd suggest to write it by hand once to define the target to automate,
> > then automate its generation right away.
> >
> >> The manifest entries will contain bundle names, versions, imported
> >> packages,
> >> exported packages and a bundle classpath(which lists jars contained
> >> inside
> >> the zip).
> >
> > Can you post an example or put it in SVN? Thanks.
> >
> > --
> > Jean-Sebastien
> >
> > -
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread Raymond Feng

There are two tools in Apache felix can probably help:

1) mangen - OSGi Bundle Manifest generator
http://cwiki.apache.org/confluence/display/FELIX/Bundle+Manifest+Generator+%28mangen%29

We could use it to create OSGi bundles out of the existing jars.

2) Maven Bundle Plugin 1.2.0

We could use it to automate the generating OSGi manifests as part of the 
maven build.


Thanks,
Raymond

- Original Message - 
From: "Jean-Sebastien Delfino" <[EMAIL PROTECTED]>

To: 
Sent: Thursday, January 24, 2008 9:46 AM
Subject: Re: Distribution zips and what they contain, was: SCA runtimes



Rajini Sivaram wrote:
Would it be possible to add an OSGi manifest header into these zip files 
so

that the zips can be directly installed into an OSGi runtime? The entries
will not have any impact when used without OSGi.


+1

The only issue would be the

creation of these entries. We have two options - 1)generate them
automatically during the build process using the maven-bundle-plugin,


+1 or another automated process

or 2)
hand-code a manifest file. It would be easiest to go with option 2) to 
start

with to avoid any build issues. If it becomes difficult to maintain the
hand-coded manifest file, we can move to option 1).


I'd suggest to write it by hand once to define the target to automate, 
then automate its generation right away.


The manifest entries will contain bundle names, versions, imported 
packages,
exported packages and a bundle classpath(which lists jars contained 
inside

the zip).


Can you post an example or put it in SVN? Thanks.

--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread ant elder
On Jan 24, 2008 5:36 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]>
wrote:

> ant elder wrote:
> > On Jan 23, 2008 5:53 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]>
> > wrote:
> >
> > 
> >
> >> If this is mainly about reducing the size of the download
> >> [snip]
> >>
> >> No
> >
> >
> > I'm puzzled by this. One of the two goals at the start of this thread
> was
> > "smaller packages".
>
> I'm puzzled that you find that puzzling :)
>
> I had spelled two goals:
> - smaller packages
> - easier for people to find what they need
>
> You asked "Is this *mainly* about reducing the size...", I replied "No",
> i.e. this is not *mainly* about smaller packages, it's about:
> (A) smaller packages
> (B) easier for people to find what they need
> and (B) is more important to me.
>
> If size really isn't an issue then whats the problem
> > with the distro including unneeded clutter - it can just be ignored?
> >
> > I would like to try have this reorg exercise get to a smaller download
> size
> > if possible - am I the only one that would like this?
> >
>
> Me too, one of my two goals was: (A) smaller packages.
>
> --
> Jean-Sebastien
>
>
Thanks for clarifying :-) I shall go and try to prioritize the goals over on
that other thread and ask others to do the same, that way maybe we'll all
understand better what everyone would like to achieve.

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread Jean-Sebastien Delfino

Rajini Sivaram wrote:

Would it be possible to add an OSGi manifest header into these zip files so
that the zips can be directly installed into an OSGi runtime? The entries
will not have any impact when used without OSGi.


+1

The only issue would be the

creation of these entries. We have two options - 1)generate them
automatically during the build process using the maven-bundle-plugin,


+1 or another automated process

or 2)

hand-code a manifest file. It would be easiest to go with option 2) to start
with to avoid any build issues. If it becomes difficult to maintain the
hand-coded manifest file, we can move to option 1).


I'd suggest to write it by hand once to define the target to automate, 
then automate its generation right away.



The manifest entries will contain bundle names, versions, imported packages,
exported packages and a bundle classpath(which lists jars contained inside
the zip).


Can you post an example or put it in SVN? Thanks.

--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread Jean-Sebastien Delfino

ant elder wrote:

On Jan 23, 2008 5:53 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]>
wrote:




If this is mainly about reducing the size of the download
[snip]

No



I'm puzzled by this. One of the two goals at the start of this thread was
"smaller packages". 


I'm puzzled that you find that puzzling :)

I had spelled two goals:
- smaller packages
- easier for people to find what they need

You asked "Is this *mainly* about reducing the size...", I replied "No", 
i.e. this is not *mainly* about smaller packages, it's about:

(A) smaller packages
(B) easier for people to find what they need
and (B) is more important to me.

If size really isn't an issue then whats the problem

with the distro including unneeded clutter - it can just be ignored?

I would like to try have this reorg exercise get to a smaller download size
if possible - am I the only one that would like this?



Me too, one of my two goals was: (A) smaller packages.

--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread ant elder
On Jan 23, 2008 5:53 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]>
wrote:



> If this is mainly about reducing the size of the download
> [snip]
>
> No


I'm puzzled by this. One of the two goals at the start of this thread was
"smaller packages".  If size really isn't an issue then whats the problem
with the distro including unneeded clutter - it can just be ignored?

I would like to try have this reorg exercise get to a smaller download size
if possible - am I the only one that would like this?

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-24 Thread Rajini Sivaram
Would it be possible to add an OSGi manifest header into these zip files so
that the zips can be directly installed into an OSGi runtime? The entries
will not have any impact when used without OSGi. The only issue would be the
creation of these entries. We have two options - 1)generate them
automatically during the build process using the maven-bundle-plugin, or 2)
hand-code a manifest file. It would be easiest to go with option 2) to start
with to avoid any build issues. If it becomes difficult to maintain the
hand-coded manifest file, we can move to option 1).
The manifest entries will contain bundle names, versions, imported packages,
exported packages and a bundle classpath(which lists jars contained inside
the zip).

Thoughts?



Thank you...

Regards,

Rajini

On 1/23/08, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>
> ant elder wrote:
> [snip]
> > Would each distro include everthing it needs or is tuscany-core.zip a
> > prereq?
>
> tuscany-core is a prereq. That's what I meant with "tuscany-core - The
> base that everybody needs."
>
> > Where do all the different data bindings go?
>
> Some in tuscany-core, some in tuscany-web, some (saxon for example) in
> tuscany-process or tuscany-all.
>
> > Doesn't one of the SCA specs say an SCA runtime MUST support binding.ws?
>
> Yes in the assembly spec. Is that an issue?
>
> > Is interface.wsdl supported in the others or only with tuscany-web?
>
> I view interface.wsdl as part of tuscany-core.
>
> > Is the core distro really so useful with nothing except
> > implementation.javaand no bindings
>
> The SCA binding should be in tuscany-core.
>
> > Do all those distro's include everything to support both tomcat and
> Jetty
> > standalone and webapps...and all the runtimes being discussed like
> Geronimo
> > and Tomcat deep integration?
>
> I'd rather stick to a small number of runtimes. I must admit I'm
> confused by the growing list of runtimes and their different capabilities.
>
> My naive view is:
> - Webapp support in tuscany-web
> - Geronimo support in tuscany-jee (as I'll want to use Geronimo to
> integrate JEE artifacts)
> - or Geronimo support in its own tuscany-geronimo package?
>
> What do others think?
>
> > Would any/all of those work with all the new domain/node stuff? And i
> think
> > right now that requires things like the WS and JSON support?
>
> IMO the new domain/node stuff drags too much of Tuscany at the moment
> and needs more work to simplify it.
>
> We could put the domain management application in a separate package, as
> people won't install it on all their nodes. Thoughts?
>
> > Where would all the demo's get included?
> >
>
> In the most relevant package, alert-aggregator in the tuscany-web
> package, xml-bigbank in tuscany-process, some in tuscany-all.
>
> > If this is mainly about reducing the size of the download
> [snip]
>
> No, I want to provide people with packages that fit their scenarios, not
> cluttered with other things they don't need.
>
> --
> Jean-Sebastien
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-23 Thread Jean-Sebastien Delfino

ant elder wrote:
[snip]

Would each distro include everthing it needs or is tuscany-core.zip a
prereq?


tuscany-core is a prereq. That's what I meant with "tuscany-core - The 
base that everybody needs."



Where do all the different data bindings go?


Some in tuscany-core, some in tuscany-web, some (saxon for example) in 
tuscany-process or tuscany-all.



Doesn't one of the SCA specs say an SCA runtime MUST support binding.ws?


Yes in the assembly spec. Is that an issue?


Is interface.wsdl supported in the others or only with tuscany-web?


I view interface.wsdl as part of tuscany-core.


Is the core distro really so useful with nothing except
implementation.javaand no bindings


The SCA binding should be in tuscany-core.


Do all those distro's include everything to support both tomcat and Jetty
standalone and webapps...and all the runtimes being discussed like Geronimo
and Tomcat deep integration?


I'd rather stick to a small number of runtimes. I must admit I'm 
confused by the growing list of runtimes and their different capabilities.


My naive view is:
- Webapp support in tuscany-web
- Geronimo support in tuscany-jee (as I'll want to use Geronimo to 
integrate JEE artifacts)

- or Geronimo support in its own tuscany-geronimo package?

What do others think?


Would any/all of those work with all the new domain/node stuff? And i think
right now that requires things like the WS and JSON support?


IMO the new domain/node stuff drags too much of Tuscany at the moment 
and needs more work to simplify it.


We could put the domain management application in a separate package, as 
people won't install it on all their nodes. Thoughts?



Where would all the demo's get included?



In the most relevant package, alert-aggregator in the tuscany-web 
package, xml-bigbank in tuscany-process, some in tuscany-all.



If this is mainly about reducing the size of the download

[snip]

No, I want to provide people with packages that fit their scenarios, not 
cluttered with other things they don't need.


--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-23 Thread Jean-Sebastien Delfino

Raymond Feng wrote:
[snip]

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components



I think we should have WS binding in tuscany-jee.zip as WS is part of 
JEE. (Maybe -jee should be a superset of -web).




JEE like other platforms supports Web Services but I didn't think that 
WS was "part of jee". The idea of tuscany-jee is to package the software 
I need to integrate JEE artifacts (EJBs etc.) in an SCA based solution.


These packages are not exclusive. If I need to integrate JEE artifacts 
and WS in a solution I'll install both tuscany-jee and tuscany-web.



- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above


Are the BPEL/XQuery mature enough to have a separate 
tuscany-process.zip? Maybe the users could download tuscany-all.zip for 
now if they want to work with BEPL and XQuery.



[snip]

+1

--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-22 Thread ant elder
On Jan 22, 2008 5:36 PM, Jean-Sebastien Delfino <[EMAIL PROTECTED]>
wrote:

> Simon Nash wrote:
>  >> Jean-Sebastien Delfino wrote:
> >> - What distro Zips are we building and what do they contain? just the
> >> runtime? samples or not? dependencies or not? are we building
> >> specialized distros for different use cases?
> [snip]
> > With a big topic like this, dividing it into separate threads makes it
> > easier for people to follow and participate in the discussions.  The
> > split you are suggesting looks good to me.
> [snip]
>
> I'd like to discuss the following: "What distro Zips are we building and
> what do they contain?"
>
> I think we could improve our distro scheme to provide:
> - smaller packages
> - easier for people to find what they need
>

We do need to do something about the distribution but having multiple
distro's doesn't actually make it easier to find what you need does it? It
actually makes it harder as right now we have a single distro so its pretty
easy to know where to look :)


> I was thinking about the following binary distro zips:
>
> - tuscany-core.zip - The base that everybody needs.
>   core assembly model and runtime
>   Java APIs, Java components
>
> - tuscany-web.zip - For WS and Web developers
>   WS binding, Web 2.0 bindings, Scripting components, Widget components
>
> - tuscany-jee.zip - For JEE app integration
>   EJB, RMI and JMS bindings, Spring components
>
> - tuscany-process.zip - For process development
>   BPEL and XQuery components
>
> - tuscany-all.zip - all of the above
>

Would each distro include everthing it needs or is tuscany-core.zip a
prereq?
Where do all the different data bindings go?
Doesn't one of the SCA specs say an SCA runtime MUST support binding.ws?
Is interface.wsdl supported in the others or only with tuscany-web?
Is the core distro really so useful with nothing except
implementation.javaand no bindings
Do all those distro's include everything to support both tomcat and Jetty
standalone and webapps...and all the runtimes being discussed like Geronimo
and Tomcat deep integration?
Would any/all of those work with all the new domain/node stuff? And i think
right now that requires things like the WS and JSON support?
Where would all the demo's get included?

If this is mainly about reducing the size of the download then as an
alternative way of splitting things - what sort of size would be "ok" and
using that number could we then add the most useful extensions until we get
to that size and make the others optional downloads?

   ...ant


Re: Distribution zips and what they contain, was: SCA runtimes

2008-01-22 Thread Raymond Feng

Please see my comments inline.

Thanks,
Raymond

- Original Message - 
From: "Jean-Sebastien Delfino" <[EMAIL PROTECTED]>

To: 
Sent: Tuesday, January 22, 2008 9:36 AM
Subject: Distribution zips and what they contain, was: SCA runtimes



Simon Nash wrote:
>> Jean-Sebastien Delfino wrote:
- What distro Zips are we building and what do they contain? just the 
runtime? samples or not? dependencies or not? are we building 
specialized distros for different use cases?

[snip]

With a big topic like this, dividing it into separate threads makes it
easier for people to follow and participate in the discussions.  The
split you are suggesting looks good to me.

[snip]

I'd like to discuss the following: "What distro Zips are we building and 
what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components


+1.



- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components



+1.


- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components



I think we should have WS binding in tuscany-jee.zip as WS is part of JEE. 
(Maybe -jee should be a superset of -web).



- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above


Are the BPEL/XQuery mature enough to have a separate tuscany-process.zip? 
Maybe the users could download tuscany-all.zip for now if they want to work 
with BEPL and XQuery.




Note that I'm not trying to tackle release cycles and the potential for 
releasing the above zips independently in this discussion and I'm assuming 
that we release all of the above together.


+1 to keep the zips at the same level.



I'm also assuming that the relevant samples are included in each zip.

Thoughts?
--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Distribution zips and what they contain, was: SCA runtimes

2008-01-22 Thread Jean-Sebastien Delfino

Simon Nash wrote:
>> Jean-Sebastien Delfino wrote:
- What distro Zips are we building and what do they contain? just the 
runtime? samples or not? dependencies or not? are we building 
specialized distros for different use cases?

[snip]

With a big topic like this, dividing it into separate threads makes it
easier for people to follow and participate in the discussions.  The
split you are suggesting looks good to me.

[snip]

I'd like to discuss the following: "What distro Zips are we building and 
what do they contain?"


I think we could improve our distro scheme to provide:
- smaller packages
- easier for people to find what they need

I was thinking about the following binary distro zips:

- tuscany-core.zip - The base that everybody needs.
  core assembly model and runtime
  Java APIs, Java components

- tuscany-web.zip - For WS and Web developers
  WS binding, Web 2.0 bindings, Scripting components, Widget components

- tuscany-jee.zip - For JEE app integration
  EJB, RMI and JMS bindings, Spring components

- tuscany-process.zip - For process development
  BPEL and XQuery components

- tuscany-all.zip - all of the above

Note that I'm not trying to tackle release cycles and the potential for 
releasing the above zips independently in this discussion and I'm 
assuming that we release all of the above together.


I'm also assuming that the relevant samples are included in each zip.

Thoughts?
--
Jean-Sebastien

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]