Engage directory structure
Colin Clark
colinbdclark at gmail.com
Thu Sep 24 16:07:01 UTC 2009
Hey all,
Michelle and I talked through all the deployment issues of Engage and
Kettle. Here's a quick summary, along with a proposed directory
structure.
Assumptions:
* Maven is not awesome for build scripts, but it is awesome for
dependency resolution
* Our Infusion WAR file is somewhat broken, in that it has all our
main directories at top level, instead of being nested inside an
infusion/ directory. This was a regression when we restructured SVN
for the Infusion 1.0 release.
Our approach for building Engage:
* Don't mess with being able to easily run and rapidly develop
inside Eclipse with Jetty
* Create separate kettleIncludes.json files, one for in Eclipse, one
for standalone deployment
* Don't worry about separating Kettle from the Engage server code at
the moment
* Build a good, self-contained, production-ready WAR for Engage
containing the following:
1. Infusion
2. Engage client
3. Engage Server and Kettle
* Write an Engage Ant build script that takes care of minification
and preparing the correct WAR directory structure
* Use the Ant script to swap the Eclipse includes for the stand-
alone includes
* Use Maven to build the final WAR and resolve any Java dependencies
Proposed directory structure (this is extremely similar to what we've
already got:
src/
webapp/
infusion/ --> copied/exploded from the product of the Infusion
Ant build
components/
framework/
lib/
engage-client/ --> minified and copied into place
components
engage-server/
kettle/
js/
artifact/
js/
browse/
js/
java/
org/
fluidproject/
kettle/
KettleServlet.java
.. etc ...
jetty/
JettyLauncher.java
... etc ...
We'll also want to restructure the engage-client module to resemble
the structure we use for Infusion.
Seem reasonable?
Colin
On 23-Sep-09, at 9:41 AM, Michelle D'Souza wrote:
> I'm glad this conversation has started - these are exactly the types
> of things I was hoping would come out.
>
> The structure I was proposing was the svn structure for engage.
> Since we work of the 'fluid-all' externals project, this structure
> would be like a sibling to Infusion. So right now, the 'lib' folder
> may not hold anything but in an Infusion like way, as soon as we add
> third party dependencies, these would be in 'lib'. Another note on
> this structure is that 'kettle' should probably be called 'engage-
> server'. I'm not sure what it would look like inside the 'engage-
> server' directory - perhaps someone could take a stab at this?
>
> Does this make sense? Does it still support being able to build a
> deployable WAR of engage easily?
>
> Michelle
>
>
> On 22-Sep-09, at 5:40 PM, antranig at caret.cam.ac.uk wrote:
>
>> Hi there - I think this looks reasonable, but I think it will be
>> hard to make
>> any firm decisions "at 10,000 feet" (without a plane!) without
>> working
>> through some of the fine-grained issues that this brings up. An
>> important
>> issue is what kind of separation we expect between the parts of
>> kettle,
>> for example, which are dependent on the Java infrastructure (or
>> even worse,
>> *are* the Java infrastructure) and those parts which are pure JS.
>> Ominously, of course, this is the kind of issue that depends on us
>> having
>> stabilised some kind of reasonable IoC infrastructure, though that
>> shouldn't
>> prevent us making some kind of interim decision now.
>>
>> What would the "lib" directory contain? Infusion?
>> And if we had a "services" webapp, what would go in it?
>> We should bear in mind that if we are planning for this to coexist
>> in a
>> M2 build structure it needs to work sensibly with respect to "WAR
>> composition"
>> whereby a composite WAR image is build up, in effect, by simply
>> unzipping
>> all the WARs into a common directory and then zipping them up again.
>>
>> In "the bad days" this was a problem given that it meant that paths
>> at
>> development time would differ from those at deploy time - but this
>> kind
>> of slack can now be taken up by "mounts". The problem we do have
>> remaining
>> is to make sure that somehow that the component WARs do not contain
>> contents that collide. This can be awkward, especially since M2 often
>> insists that they have some kind of web.xml file ...
>>
>> Quoting Yura Zenevich <yura.zenevich at gmail.com>:
>>
>>> I was just wondering what kettle directory would mean inside this
>>> structure.
>>> Would it include all kettle server infrastructure and all the
>>> javascript
>>> apps, or these two would be defined somehow separately?
>>>
>>> Regards,
>>>
>>> Yura
>>>
>>> On Sep 22, 2009 5:22 PM, "Colin Clark" <colinbdclark at gmail.com>
>>> wrote:
>>>
>>> Hi Michelle and everyone else,
>>>
>>> On 21-Sep-09, at 3:44 PM, Michelle D'Souza wrote:
>>>
>>> Hi everyone,
>>>>
>>>> As we approach the 0.1 release of Engage we need to decide on the
>>>> directory
>>>> structure of the engage trunk. Here is a suggestion which is
>>>> based on the
>>>> Infusion structure. Please comment and suggest alternatives. One
>>>> question I
>>>> have - should there be a services directory? What would go in
>>>> there?
>>>>
>>>> fluid
>>>> engage
>>>> trunk
>>>> src
>>>> webapp
>>>> components
>>>> demos
>>>> kettle
>>>> lib
>>>> tests
>>>>
>>>
>>> How does this sit with the standard directory structure expected
>>> by Maven 2?
>>>
>>> I'd love to hear from Antranig and Yura about this proposed
>>> directory
>>> structure and if it will suit our needs.
>>>
>>> In the end, our goal is to make building Engage as simple as
>>> possible. Since
>>> it's currently based on Kettle's JVM-based approach, Maven is
>>> probably the
>>> way this will be built. If we need to add an Ant script for other
>>> build-related tasks, we can look at that, too.
>>>
>>> Colin
>>>
>>> ---
>>> Colin Clark
>>> Technical Lead, Fluid Project
>>> http://fluidproject.org
>>>
>>
>>
>>
>>
>> ----------------------------------------------------------------
>> This message was sent using IMP, the Internet Messaging Program.
>>
>
> ------------------------------------------------------
> Michelle D'Souza
> Software Developer, Fluid Project
> Adaptive Technology Resource Centre
> University of Toronto
>
>
>
---
Colin Clark
Technical Lead, Fluid Project
http://fluidproject.org
More information about the fluid-work
mailing list