On Aug 18, 2006, at 12:24 PM, Robbie Minshall wrote:
> I think that there are two ( ok more than that but still . . . )
> types of
> samples. One type attempts to demonstrate the muscles of the
> technology and
> inspire a 'boy this is great, this is better than what I am
> currently doing'
> thought process. The other is more educational and attempts to
> walk the
> developer through the development/deployment process while giving
> them a
> sense of what they are accomplishing. Both are usefull. However,
> I often
> feel that samples get the goals confused and wind up complicating
> the code
> of educational sample without providing the appropiate tutorial
> updates.
>
I agree. Petstore is probably an example of this happening.
> The key for educational samples is that they should be readable,
> should
> involve deployment and most importantly a concise accurate
> tutorial. They
> should not attempt to be the killer app but in the SCA land should
> definately involve plugging in different service implementations
> etc as a
> part of the tutorial. It is also a little harder than one would
> think to
> provide documentation etc that clearly indicate to the user which
> application they should use for what goal.
>
I'm not sure the education samples all need to plug in different
impls. Maybe as an "extra". For example, I may only be ever
interested in writing Java. Agreed on documentation.
> I would recommend two approaches. Providing a simple sample
> application
> combined with a tutorial for dev, deployment, execution, service
> replacement
> etc that does not provide an runtime environement such tomcat.
Also
> providing a fatter muscle flexing sca application combined with a
> up and
> runing environement.
Agreed on the division but I don't think we need to distribute a host
environment such as Tomcat. For the muscle flexing one (I know have
an image of some 70s muscle car, maybe we can call the sample
"chevelle" ;-) ), I think the only practical environment would be
standalone or OSGi since J2EE is going to constrain us too much.
>
> On an aside I am currently working on a simple POJO Hibernate
> application
> conversion to using SDO and then exposing services via SCA. Kapel
> and I
> plan to write a simple tutorial going over the migration and other
> aspects
> of this task such as comparing a Hibernate RDB DAS to the SDO DAS,
> and hte
> performance cost of using static SDO within our applications POJO
> model.
>
Hmm, that kind of sends the message that people should use SDO/DAS
instead of O/R technologies such as Hibernate, EJB3, or JDO. How
about showing how they are complimentary as I think they really
address different use cases?
> . . . thoughts ?
>
> Robbie
>
> On 8/18/06, Jim Marino <[EMAIL PROTECTED]> wrote:
>>
>> I think there are a couple issues here which would benefit by
>> stepping through what we expect users to actually be doing. From a
>> user standpoint, I imagine most people will have the following
goals:
>>
>> 1. Figure out how to write an SCA application
>> 2. Figure out how to deploy the application
>> 3. Run the application
>>
>> Starting with 3 in a server environment does not really do
anything.
>> For example, I start something up and hit a web page, but can't
>> really debug or step through without setting a project up in my
IDE.
>> What I think most users want is a quick way (i.e 5 minutes) to
do the
>> following:
>>
>> 1. Download a sample that has an automated way to create a dev
>> project
>> 2. Build the sample and deploy it to whatever host environment I
>> typically do my development with. For example, for web app
>> development, I prefer Jetty since it is light, fast, and easily
>> embedded. Others may prefer Resin, Websphere, WebLogic, etc. As I
>> mention below, however, I don't think most Tuscany development
will
>> be done inside a web app.
>> 3. Run the sample and debug it (either remotely or in my IDE) so I
>> can see what is happening
>> 4. Make changes to the sample and goto step 2
>>
>> The most time-consuming parts I have found in using new
technologies
>> is getting my dev environment setup properly. For example, with a
>> binary distro, here is what I would have to go through:
>>
>> 1. Download the binary distro, including a pile of dependencies
>> probably totaling over 200MB
>> 2. Unzip the distro, follow the readme instructions to start the
>> thing
>> 3. Use a browser to hit a web page that prints something out
>>
>> At this point, I still can't really see what is going on much
less do
>> things like changing bindings, adding policy, swapping
implementation
>> types, etc. If I want to use really understand how SCA and Tuscany
>> work, I would have to:
>>
>> 4. Download the source sample, maybe it is included in 1 but maybe
>> not
>> 5. Setup my dev environment with a sample project
>> 6. Build the sample and package it
>> 7. Figure out whether I want to deal with Tomcat the version of
>> Tomcat my Tuscany download just came with. Probably not, since I
>> already have a Tomcat install or use something else.
>> 8. Make any necessary changes to my dev environment so I can debug
>> the sample as it is run
>> 9. Deploy the sample to the host I do my development with
>>
>> IMO what would be much simpler for end users would be to:
>>
>> 1. Download a sample distro
>> 2. Build it with maven, which can generate the IDE project for
me as
>> well as deployment artifacts for whatever host type I choose,
e.g. a
>> WAR file
>> 3. Set my IDE to use the source from the sample I just downloaded
>> 4. Decide where I want to deploy it to. If it is a WAR, I just
drop
>> it in and either run it from within my IDE and debug or attach
to a
>> remote process
>>
>> I think it would be useful to look at projects that have been
highly
>> successful (i.e. one of the most widely used Java projects) and
see
>> how they do things, Spring and Hibernate. Both do not ship a pre-
>> configured host environment.
>>
>> As a further thing to think about, I expect most SCA users will
*not*
>> be developing with or deploying to Tomcat and will probably
instead
>> use the standalone version. This is for a number of reasons:
>>
>> 1. The J2EE deployment model restricts some of the most important
>> features implicit in SCA
>> 2. Related to #1, most of the capabilities people really to
want to
>> see involve things like transactions and policy, dynamic re-
wiring,
>> etc. which are not directly supported in Tomcat. This will mean
>> either having to configure Tomcat with a transaction manager or
>> bundling one in the web application. Standalone can handle this
>> dynamically. Consequently, I suspect the user experience will
be more
>> difficult on Tomcat. I also don't think most are going to be
>> interested in "helloworld" variants as that can be done more
easily
>> with existing technologies.
>> 3. With dependency injection, there is no need to develop
within a
>> container - just use mocks. When I build apps, I typically
don't get
>> them running in a host environment until integration testing.
>>
>> Jim
>>
>>
>>
>> On Aug 18, 2006, at 7:26 AM, Rick wrote:
>>
>> > +1 for both .. does that make 2? :-)
>> > I like the idea of having the bar a low as possible for
someone to
>> > just start playing with samples to learn building SCA
applications.
>> > But I also see Jim's point. There are other set of users (IT
>> > types) that may not even care about Tomcat and we definitely
need
>> > to please them too.
>> > I think the trick here is to for the site documentation about
what
>> > download to to satisfy your particular interests is very
important
>> > and we make perfectly clear that Tuscany is not just a Tomcat/
>> > webserver extension.
>> > Luciano Resende wrote:
>> >> +1 for what Jervis, Ant and Simon are saying... I really
liked the
>> >> pre-configured Tomcat installations available for the
samples in
>> >> M1, made
>> >> my life much easier to get started in Tuscany. I have also
>> >> recently created
>> >> that for DAS samples and it's available today at samples/das/
>> >> testing/tomcat
>> >>
>> >> - Luciano
>> >>
>> >> On 8/18/06, Simon Laws <[EMAIL PROTECTED]> wrote:
>> >>>
>> >>> On 8/18/06, ant elder <[EMAIL PROTECTED]> wrote:
>> >>> >
>> >>> > There are quite a few old threads where we've discussed
>> >>> samples, here's
>> >>> > just
>> >>> > one of them:
>> >>> >
>> >>> >
>> >>> http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/
>> >>> 200604.mbox/%
>> >>> [EMAIL PROTECTED]
%3e
>> >>> >
>> >>> > If we're moving towards multiple Tuscany distributions
>> targeted at
>> >>> > different
>> >>> > areas then i think its fine (and even desirable) for one of
>> those
>> >>> > distributions to contain an entire host environment. One
of the
>> >>> good
>> >>> > things
>> >>> > about the M1 release was that it really did make it easy for
>> >>> new users
>> >>> to
>> >>> > get started, just "unzip and click on startup".
>> >>> >
>> >>> > ...ant
>> >>> >
>> >>> > On 8/18/06, Jim Marino <[EMAIL PROTECTED]> wrote:
>> >>> > >
>> >>> > >
>> >>> > > On Aug 17, 2006, at 11:21 PM, ant elder wrote:
>> >>> > >
>> >>> > > > I agree with Jervis, things just running out-of-box
is much
>> >>> nicer
>> >>> > > > for first
>> >>> > > > time users than having to fiddle about editing config
>> files.
>> >>> > > >
>> >>> > > > Would an alternative be to change the structure of the
>> >>> samples and
>> >>> > > > move
>> >>> > > > these technology specific samples into the extension
that
>> >>> they use.
>> >>> > > > For
>> >>> > > > example, something like having a javascript folder that
>> >>> contained
>> >>> > > > separate
>> >>> > > > projects for the JavaScript container and each
JavaScript
>> >>> sample.
>> >>> > > > There
>> >>> > > > would still be lots of helloworld samples, but not
all in
>> >>> the one
>> >>> > > > top level
>> >>> > > > samples folder so wouldn't be quite so in your face.
>> >>> > > I like the idea of moving the samples into the extensions
>> >>> (except
>> >>> > > maybe the samples that use multiple extensions) and
actually
>> >>> think it
>> >>> > > could correspond to Jeremy's proposal. This would allow
us to
>> >>> > > compartmentalize things more which I think is going to be
>> >>> fundamental
>> >>> > > to scaling the project. I have several caveats for this
>> though:
>> >>> > >
>> >>> > > - there is a clear distinction in the tree between the
>> >>> samples and
>> >>> > > runtime extension code. In other words, each sample
project
>> >>> should
>> >>> > > not be a sibling to the project containing extension
code but
>> >>> should
>> >>> > > go under a samples folder in separate projects
>> >>> > > - the extensions are individually built from the core
>> >>> projects and
>> >>> > > fairly autonomous per my previous email
>> >>> > > - samples are not built with the check-in build for
>> >>> extensions and
>> >>> > > are separately distributable
>> >>> > >
>> >>> > > In terms of end-user experience, I think things are
going to
>> >>> vary
>> >>> > > greatly depending on the host environment. For example, in
>> our
>> >>> > > standalone environment, things can be automated fairly
>> easily:
>> >>> > >
>> >>> > > 1. User downloads core distribution
>> >>> > > 2. User downloads and drops in sample distribution and
starts
>> >>> the
>> >>> > > standalone core
>> >>> > > 3. Core reads the dependencies from the sample SCDL and
pulls
>> >>> down
>> >>> > > the required extensions via the ArtifactFactory from a
Maven
>> >>> > > repository. This would resolve the transitive closure
of all
>> >>> > > extension dependencies. This would allow us to track
>> >>> dependencies for
>> >>> > > extension libraries such as Spring for "free" since most
>> >>> projects
>> >>> > > publish POMs to a Maven repo.
>> >>> > > 4. If user chooses, they could avoid step 4 and just
download
>> >>> the
>> >>> > > extension and plug it in
>> >>> > >
>> >>> > > Something similar to the above could be done for OSGi
except
>> >>> the end
>> >>> > > user would just deploy a core bundle into an existing OSGi
>> >>> host such
>> >>> > > as Equinox they had installed.
>> >>> > >
>> >>> > > If we are deploying to a servlet container, things will
>> >>> likely be
>> >>> > > more complex but not too much:
>> >>> > >
>> >>> > > 1. User downloads sample application and builds it using
>> >>> Maven, which
>> >>> > > retrieves the core as a dependency and bundles everything
>> >>> into a war.
>> >>> > > 2 User deploys the sample war
>> >>> > >
>> >>> > > If we "prepackaged" every sample distribution so it could
>> >>> just be
>> >>> > > dropped in, I think we will wind up with a ton of
packaging
>> >>> problems
>> >>> > > as core will need to be included in every one.
>> >>> > >
>> >>> > > I'm pretty firmly against distributions containing an
entire
>> >>> host
>> >>> > > environment, such as Tomcat. I'd prefer we follow projects
>> like
>> >>> > > Spring, Struts, WebWork, Hibernate (take your pick) and
>> provide
>> >>> > > distributions which are simple to deploy into containers
>> >>> using some
>> >>> > > minimal configuration steps. My reason for this is partly
>> >>> practical.
>> >>> > > First, we should support deploying on a variety of host
>> >>> environments
>> >>> > > and having to rev versions would be a nightmare.
Second, in
>> >>> most data
>> >>> > > centers I have come across, there is a standard image
>> >>> technologies
>> >>> > > must accommodate and they will not accept an "bundle of
>> stuff".
>> >>> > >
>> >>> > >
>> >>> > > Jim
>> >>> > >
>> >>> > > >
>> >>> > > > ...ant
>> >>> > > >
>> >>> > > > On 8/17/06, Liu, Jervis <[EMAIL PROTECTED]> wrote:
>> >>> > > >>
>> >>> > > >> One thing concerns me would be the out-of-box user
>> >>> experience. For
>> >>> > > >> a first
>> >>> > > >> time Tuscany user, don't you think it is more user
>> >>> friendly if
>> >>> > > >> users only
>> >>> > > >> need to follow the readme, go to a directory, run a
>> >>> common, then
>> >>> > > >> everything
>> >>> > > >> works out-of-box? Speaking in my experience, it does
>> >>> encourage me
>> >>> > > >> to explore
>> >>> > > >> a new product further if I can set up and run a typical
>> >>> helloworld
>> >>> > > >> sample
>> >>> > > >> successfully in 5 minutes without any coding. Well,
maybe
>> >>> just me
>> >>> > > >> being too
>> >>> > > >> lazy... ;-)
>> >>> > > >>
>> >>> > > >> Cheers,
>> >>> > > >> Jervis
>> >>> > > >>
>> >>> > > >> > -----Original Message-----
>> >>> > > >> > From: Jeremy Boynes [mailto:[EMAIL PROTECTED]
>> >>> > > >> > Sent: Thursday, August 17, 2006 6:54 AM
>> >>> > > >> > To: tuscany-dev@ws.apache.org
>> >>> > > >> > Subject: Sample framework
>> >>> > > >> >
>> >>> > > >> >
>> >>> > > >> > We have had a rapid increase in the number of samples
>> >>> recently
>> >>> many
>> >>> > > >> > of which do essentially the same thing. Some feedback
>> >>> from M1
>> >>> also
>> >>> > > >> > said that we seemed to have invented the greatest
>> number of
>> >>> > > >> > varieties
>> >>> > > >> > of HelloWorld but that it was hard to tell if SCA
>> could do
>> >>> anything
>> >>> > > >> > else. I'd like to propose a change in how we
>> structure the
>> >>> > > >> > samples so
>> >>> > > >> > that we make it clearer to illustrate the
technology to
>> >>> users.
>> >>> > > >> >
>> >>> > > >> > Rather than having separate projects for each
technology
>> >>> > > >> > variant, I'd
>> >>> > > >> > like to suggest we have just a couple of projects
that
>> >>> provide a
>> >>> > > >> > framework and then have instructions in the
>> >>> documentation for
>> >>> each
>> >>> > > >> > technology that clearly show how to apply it.
>> >>> > > >> >
>> >>> > > >> > For example, I can see two framework environments:
>> >>> > > >> > a) a client environment with a simple command line
>> >>> client wires
>> >>> > > >> > together a couple of local components
>> >>> > > >> > b) a webapp environment with a simple JSP client that
>> >>> also wires
>> >>> > > >> > together a couple of local components
>> >>> > > >> >
>> >>> > > >> > Then, for example, the JavaScript extension could
say:
>> >>> > > >> > To illustrate the use of JavaScript as a
component,
>> >>> take the
>> >>> > > >> > client a) and
>> >>> > > >> > 1) replace <implementation.java class="Foo"/> with
>> >>> > > >> > <implementation.javascript script=" foo.js"/>
>> >>> > > >> > 2) Install javascript extension
>> >>> > > >> > 2) rebuild/run sample
>> >>> > > >> >
>> >>> > > >> > Or, to illustrate the WebService binding:
>> >>> > > >> > Server
>> >>> > > >> > 1) Take webapp and add <service>< binding.ws ...>
>> >>> > > >> > 2) Install Axis binding extension
>> >>> > > >> > 3) Deploy server app to Tomcat
>> >>> > > >> > Client
>> >>> > > >> > 1) Take client application and replace <component
>> >>> > > >> name="foo" ...>
>> >>> > > >> > with <reference><binding.ws ...>
>> >>> > > >> > 2) Install Axis binding extension
>> >>> > > >> > 3) Run client
>> >>> > > >> >
>> >>> > > >> > The basic idea being, have a common framework and the
>> >>> > > >> > instructions on
>> >>> > > >> > how to use the particular extension.
>> >>> > > >> > --
>> >>> > > >> > Jeremy
>> >>> > > >> >
>> >>> > > >> >
>> >>> > > >>
>> >>>
>>
--------------------------------------------------------------------
>> >>> -
>> >>> > > >> > To unsubscribe, e-mail: tuscany-dev-
>> >>> [EMAIL PROTECTED]
>> >>> > > >> > For additional commands, e-mail: tuscany-dev-
>> >>> [EMAIL PROTECTED]
>> >>> > > >> >
>> >>> > > >> >
>> >>> > > >>
>> >>> > > >>
>> >>>
>>
--------------------------------------------------------------------
>> >>> -
>> >>> > > >> To unsubscribe, e-mail: tuscany-dev-
>> [EMAIL PROTECTED]
>> >>> > > >> For additional commands, e-mail: tuscany-dev-
>> >>> [EMAIL PROTECTED]
>> >>> > > >>
>> >>> > > >>
>> >>> > >
>> >>> > >
>> >>> > >
>> >>>
>>
--------------------------------------------------------------------
>> >>> -
>> >>> > > To unsubscribe, e-mail: tuscany-dev-
[EMAIL PROTECTED]
>> >>> > > For additional commands, e-mail: tuscany-dev-
>> [EMAIL PROTECTED]
>> >>> > >
>> >>> > >
>> >>>
>> >>>
>> >>>
>> >>> I agree with Ant. As primarily a user (in the sense that I
>> wanted to
>> >>> understand it and try the samples) of the Java M1 release the
>> >>> presence of
>> >>> the pre-configured Tomcat installation was really handy for
>> quickly
>> >>> running
>> >>> through the samples and getting a feel for what it was all
about.
>> >>> As you
>> >>> are
>> >>> constructing a build and distribution system/approach that
allows
>> >>> you to
>> >>> cut
>> >>> different distros to suit different requirements for
hosting or
>> >>> embedding
>> >>> can you make a standalone samples distro for the interested
>> >>> newbie. No
>> >>> suggestion that this distro would get deployed into
production or
>> >>> used
>> >>> other
>> >>> than to get familiar with the technology or bootstrap a
>> development
>> >>> environment? This doesn't suit the hardcore techy who just
>> wants the
>> >>> latest
>> >>> release of the components they are going to refresh into their
>> hand
>> >>> crafted
>> >>> development/test/deployment environment but then they would go
>> >>> and get one
>> >>> of the other distros.
>> >>>
>> >>> Regards
>> >>>
>> >>> Simon
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
>> >
>>
---------------------------------------------------------------------
>> > 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]
>>
>>
>
>
> --
> * * * Charlie * * *
> Check out some pics of little Charlie at
> http://www.flickr.com/photos/[EMAIL PROTECTED]/sets/
>
> * * * Addresss * * *
> 1914 Overland Drive
> Chapel Hill
> NC 27517
>
> * * * Number * * *
> 919-225-1553
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]