It's late and I can't write much today. A few comments inline.
More tomorrow.
Simon
ant elder wrote:
Thanks very much for finding the time to respond, comments inline.
...ant
On Jan 10, 2008 11:18 AM, Simon Nash <[EMAIL PROTECTED]> wrote:
Comments inline.
Simon
ant elder wrote:
I know everyone is busy with the 1.1 release but any comments on this?
...ant
On Jan 7, 2008 6:03 PM, ant elder < [EMAIL PROTECTED]> wrote:
Spitting the email below out into a separate thread to discuss runtime:
The suggestion is that we should be building:
a) runtimes of various kinds (SCA standalone, embedded within Tomcat,
etc)
Yes in principle, but let's keep the number of different flavours of
the complete runtime down to the minimum.
I agree we should keep the number of different downloads on the download
page to a minimum, is that what you mean? But what if there are available
flavours that are only in Maven repositories or only available for use from
build scripts and not up as downloadable distributions on the download page?
I mean having as few separate/duplicated copies of the complete Tuscany
runtime around as possible, wherever they are. Ideally that would be
one copy for download and one copy in Maven repos.
b) applications, containing only the code and other artifacts required
for
the application itself
Yes, definitely.
To see what this looks like I've started creating some of this in the
sca/modules/runtime-* projects and associated projects in
sca/distributions.
Applications become just jar files with no reference to Tuscany modules
and
the runtimes pick up the contributions from a repository folder.
Currently
the standalone, and war ones are working, eg you can build
distribution/war
and it creates a tuscany.war that can be deployed in Tomcat. The war
distribution includes repository in the top-level webapp folder which
includes a couple of the Tuscany samples to show it works, or you can
update
the web.xml to move the repository out of the webapp to make it easier
to
add your own contributions.
If we went for this I was thinking we'd have runtimes like standalone,
war, webapp, tomcat, etc.
>
If we can do this with a smaller number of distinct runtimes, I think
that would be preferable to having the complete runtime in 4 or more
different packagings.
Well how to do that is part of what I'm looking for with this discussion :)
If samples become just simple sca contribution jars with no mention of
Tuscany we need somewhere to run them. The distribution/war is an attempt at
a complete runtime for this for a webapp container, its about 30meg and
could be a single separate distribution download. If we want to run samples
outside of a webapp container, say standalone, then we need a runtime for
that which would also be about 30 meg. That could be a separate download
from the war distribution which then makes two downloads, or both combined
into one distribution which is then 60 meg. If we want a pre-built runtime
for tomcat deep integration then thats another 30 meg runtime which could be
a separate download or bundled with one of the others, and if we want
something like a webapp distribution (see below) then thats another 30 meg
to be either downloadable separately or bundled up with something making the
download even bigger.
One alternative is to find a way to share some of the jars between runtimes,
eg, if the standalone distribution includes all the jars then it is possible
to get Tomcat deep integration to work running off those jars outside of the
Tomcat install. So that way we could have both the standalone and tomcat
deep integration working from one 30 meg download sharing dependency jars
and a single sca contribution repository with all the samples, and only a
little manual configuration required in Tomcat.
This is what I have in mind. Share everything than can be shared.
I'm not so convinced about putting all the samples into a "hot"
contribution repository, though. I'd be more inclined to put
them somewhere else and let user copy over the ones they want
to run.
I can't see how to do that with webapps though, either we don't ship them
prebuilt or they need a runtime included for each sample. The WAR
distribution is an attempt to have one single prebuilt WAR that runs all the
samples.
My earlier idea which seems to have got a little lost in the debate
was for the wwebapp to contain a minimal Tuscany bootstrapper that
pulls in the needed jars from wherever the full runtime is installed.
So webapps wouldn't contain the whole Tuscany runtime, but would use
jars from a runtime installed somewhere that the webapp bootstrapper
could find.
The webapp runtime is as you described below, i guess it is actually pretty
much the same code as used in the WAR distribution, just the WAR
distribution is a prebuilt WAR which includes all the sample contribution
jars whereas the webapp runtime is just for when you're building you own
webapps with your own sca contributions, so the webapp runtime would not be
a separately downloadable distribution.
I would not include all the samples within the WAR runtime. They can
be in the distro, but it should need explicit user action to deploy
them to the runtime.
Maybe the name "standalone" distribution is wrong, if we can get it
including the webapp and tomcat tuscany jars but have those jars ignored
when running standalone , and have the standalone Jetty module ignored when
running in webapps or tomcat, then its more a binary distribution that can
be use for standalone, tomcat deep, and when building webapps locally
without using maven with a remote maven repository. So that would be just
two distributions the binary and the war, and thats like what a lot of other
projects do.
+1 except that I think we can do even better by having the war pull in
shared jars from the installed location of the binary.
The current binary distribution would go away
and
be replaced by the standalone and war distributions, the webapp one only
be
distributed from the Maven repositories and used for building
applications
using Tuscany in a webapp, and the tomcat one would be for the Tomcat
deep
integration. The standalone and war distributions would come with all
the
relevent samples included in their repository folders.
Would the webapp distro be used to put a complete copy of the Tuscany
runtime in the webapp being built, for webapp containers that don't
know anything about Tuscany?
Yes thats what i was thinking. And the application in the webapp (eg
WEB-INF/classes) would be treated as the SCA contribution, perhaps with
optionally being able to put other contributions in another location.
I think an ant tool to do this, based
on a locally installed runtime, would be useful.
Ok, and that would need all the required jars bundled with something like
the binary distribution. Also we could possibly look at Ivy to get
dependencys from maven repositories.
I would start by bundling them. We can add the capability to get
them from maven repos later.
Simon
So what do people think about this approach? Does everyone agree we
should
be doing those (a) and (b) suggested above?
I'd prefer a common core and environment-specific deltas for the various
flavours, if we can work out how to arrange that. I have some ideas
which I'll send in a follow-up post.
Simon
...ant
---------- Forwarded message ----------
From: Mike Edwards < [EMAIL PROTECTED]>
Date: Jan 2, 2008 10:53 AM
Subject: Re: R1.1 - Sample/demo ant builds
To: [email protected]
Folks,
Some comments....
Yours, Mike.
ant elder wrote:
On Jan 2, 2008 8:58 AM, Simon Laws < [EMAIL PROTECTED]> wrote:
For http://issues.apache.org/jira/browse/TUSCANY-1608 I've put in a
change,
based on the ant generator plugin, to bring some automation to the
process
of building the ant files for the samples and demos. For any sample or
demo
that requires explicit dependencies, e.g. the webapp samples, I've
replaced
the static ant file with and automatically generated one. In the case
that
some hand crafted ant script is needed, for example, to generate SDOs,
then
I have the ant generator just build build-dependency.xml which has the
dependencies listed and which can then be included in the manually
generated
build.xml script.
I haven't applied this change to all of the samples but it could be
done.
If
we did have all of the dependencies explicitly described for all of
the
samples can we get rid of the "all" and "manifest" jars?
Simon
I think its better if applications don't have to know or care about
Tuscany
internals, that includes knowing all the different Tuscany module names
and
all the dependencies they use.
+1 - applications should ideally have ZERO dependence on Tuscany
internals. They should be deployed to an "SCA capable runtime" without
having to know anything about that runtime.
We haven't got this right yet so each time we
release our sample Ant builds break as the build.xml files get out of
date -
this will be happening for any Ant builds our users have as well. The
"all"
jar is an attempt to fix this, its a better way IMHO than having
applications specify every Tuscany module but theres a bit of work
still
to
do to make it work better for webapps. We've also talked before about
changing all the samples to be simple sca contributions that don't need
any
mention of the Tuscany internals, this is something I think we really
need
to do. Both of those things seem better to me than messing about trying
to
generate build scripts.
I agree with this sentiment. We should be building:
a) runtimes of various kinds (SCA standalone, embedded within Tomcat,
etc)
b) applications, containing only the code and other artifacts required
for the application itself
and then have some regular means of deploying the applications to
appropriate runtimes - some applications could be deployed to "almost
any" SCA runtime while others need specific runtime capabilities such as
a Web server and Servlet support.
...ant
---------------------------------------------------------------------
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]