You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by Nicola Ken Barozzi <ni...@apache.org> on 2002/06/16 23:33:25 UTC
Vindico == GumpNG (was Re: readying the cross-project build environment)
Stefano Mazzocchi wrote:
>
> In my vision, forrestbot is automatic, just like Gump, it runs, build,
> copies and nags. Everyday. Helps you when you do the right thing and
> nags you when you do the bad thing, just like a wise boss :)
>
> It's simple, effective and keeps up the social experiment concept that
> Gump started.
>
> The only difference is that Gump doesn't affect anything directly (we
> don't build distributions with Gump or things like that), while Forrest
> will do both: perform the social test *and* do actual work on the
> project (by publishing their docos)
>
> Is this difference important enough to force us to change the Gump
> model?
>
> What do you think?
I've been discussing this topic for weeks on alexandria-dev (Gump),
krysalis-dev (Centipede), partially here and with many friends :-)
We've come to the unanimous conclusion that there is a Gump-like work
pattern that can be general enough to work with Gump and Forrest, a sort
of big workspace job handler.
This has made me make a proposal of intent on the Gump list that has had
a good reception.
I will refer to this new thing to as "Vindico", the name of one of the
other Alexandria proposals.
There are still conceptual-architectural things to resolve that prevent
me from making a solid-final proposal, and I would like to discuss it
with you guys :-)
-oOo-
(warning: below is my current stream of consciousness;
please read with an open mind)
Attatched is a very crude image of what I currently have in mind, with
all the imperfections and doubts ;-)
Basically, Forrest and Gump could be just modules to plug into a generic
system that runs them on project definitions.
(on the lower part from left to right)
Sources are gotten from a repository, placed locally and "something" is
run on them.
Then results are published somewhere.
As you see, this description can be used to define a build system:
sources are copied in a "build" dir, an ant target is run, then results
are put in a resulting dir under "build".
What makes this different? It works on *workspaces*, ie multiple projects.
Centipede has build components called cents already: junit cent,
forrest.cent...
Yes, forrest.cent (still to upgrade, but the concept remains). I should
be able to run forrest on my local docs during the build... why then
duplicate Forrest as a .cent and as a bot?
Another step: on krysalis-dev, we have defined a buildmap, ie a big
build descriptor that basically assembles macro build components.
Similarly as in Avalon stuff, Centipede becomes a Container of build
Components for a local build.
Vindico would be a Container on a higher level.
So we would have this conceptual build-space:
Workspace (list of projects to build)
|
Projectspace
|
MiniProjectSpace (like Excalibur projects)
Forrest should be able to operate in all spaces... how to do it?
I think that we should keep Forrest, Gump, Centipede, Alexandria (source
xref and Javadocs) in ProjectSpace, and collapse MiniProjectSpace and
Projectspace in a single space; a Projectspace of many mimiprojects is
in reality a Workspace of Projectspaces.
So we will have:
- workspace builders
- project builders
A workspace builder should be able to call project builders on each
project in a workspace or on an aggregation of them, so it needs a
dependency system, both between projectspaces and between build systems.
-oOo-
In essence, Vindico should be able to get the required sources and call
Forrest (for docs), Gump (for fresh builds), Centipede and Maven (for
daily builds), AlexandriaNG (for Javadocs) on each project and publish
the results, all while keeping track of dependencies.
Any ideas?
--
Nicola Ken Barozzi nicolaken@apache.org
- verba volant, scripta manent -
(discussions get forgotten, just code remains)
---------------------------------------------------------------------