BATCH: Unable to send...

2005-01-09 Thread brutus
Dear Gumpmeisters,

The following 2 notifys should have been sent

*** G U M P
[EMAIL PROTECTED]: Project wsfx-axis-types (in module muse) failed
[EMAIL PROTECTED]: Project apollo (in module apollo) failed
*** G U M P
[EMAIL PROTECTED]: Project wsfx-axis-types (in module muse) failed
Failed with to: [EMAIL PROTECTED] from: [Ian Springer ipsATapacheDOTorg]
Failed to send notify e-mail: (450, 'FQDN required in the envelope sender', 
'ipsATapacheDOTorg')
To whom it may engage...

This is an automated request, but not an unsolicited one. For 
more information please visit http://gump.apache.org/nagged.html, 
and/or contact the folk at [EMAIL PROTECTED]

Project wsfx-axis-types has an issue affecting its community integration.
This issue affects 2 projects.
The current state of this project is 'Failed', with reason 'Build Failed'.
For reference only, the following projects are affected by this:
- muse :  Muse Project
- wsfx-axis-types :  Muse Project


Full details are available at:
http://brutus.apache.org/gump/public/muse/wsfx-axis-types/index.html

That said, some information snippets are provided here.

The following annotations (debug/informational/warning/error messages) were 
provided:
 -DEBUG- Sole output [wsfx-axis-types-09012005.jar] identifier set to project 
name
 -DEBUG- (Gump generated) Maven Properties in: 
/usr/local/gump/public/workspace/muse/axis-types/build.properties
 -INFO- Failed with reason build failed
 -DEBUG- Maven POM in: 
/usr/local/gump/public/workspace/muse/axis-types/project.xml
 -DEBUG- Maven project properties in: 
/usr/local/gump/public/workspace/muse/axis-types/project.properties
 -INFO- Failed to extract fallback artifacts from Gump Repository



The following work was performed:
http://brutus.apache.org/gump/public/muse/wsfx-axis-types/gump_work/build_muse_wsfx-axis-types.html
Work Name: build_muse_wsfx-axis-types (Type: Build)
Work ended in a state of : Failed
Elapsed: 1 sec
Command Line: maven --offline jar 
[Working Directory: /usr/local/gump/public/workspace/muse/axis-types]
CLASSPATH: 
/opt/jdk1.4/lib/tools.jar:/usr/local/gump/public/workspace/muse/target/classes:/usr/local/gump/public/workspace/jakarta-commons/discovery/dist/commons-discovery.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-swing.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-trax.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-junit.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant-nodeps.jar:/usr/local/gump/public/workspace/ant/dist/lib/ant.jar:/usr/local/gump/public/workspace/dist/junit/junit.jar:/usr/local/gump/public/workspace/xml-commons/java/build/resolver.jar:/usr/local/gump/public/workspace/ant/bootstrap/lib/ant-launcher.jar:/usr/local/gump/public/workspace/ant/bootstrap/lib/ant.jar:/usr/local/gump/public/workspace/jakarta-commons/logging/dist/commons-logging.jar:/usr/local/gump/public/workspace/jakarta-commons/logging/dist/commons-logging-api.jar:/usr/local/gump/public/workspace/ws-axis/java/build/lib/axis.jar:/usr/local/gump/public/workspace/ws-axis/java/build/lib/saaj.jar:/usr/local/gump/public/workspace/ws-axis/java/build/lib/axis-ant.jar:/usr/local/gump/public/workspace/ws-axis/java/build/lib/jaxrpc.jar:/usr/local/gump/public/workspace/xml-security/build/xmlsec.jar:/usr/local/gump/public/workspace/wsdl4j/build/lib/qname.jar:/usr/local/gump/public/workspace/wsdl4j/build/lib/wsdl4j.jar
-
 __  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0

The build cannot continue because of the following unsatisfied dependency:

axis-wsdl4j-1.2-RC2.jar (try downloading from http://ws.apache.org/axis/)

Total time: 1 seconds
Finished at: Sun Jan 09 01:52:32 PST 2005

-

To subscribe to this information via syndicated feeds:
- RSS: http://brutus.apache.org/gump/public/muse/wsfx-axis-types/rss.xml
- Atom: http://brutus.apache.org/gump/public/muse/wsfx-axis-types/atom.xml

== Gump Tracking Only ===
Produced by Gump version 2.2.
Gump Run 3009012005, brutus:brutus-public:3009012005
Gump E-mail Identifier (unique within run) #24.

*** G U M P
[EMAIL PROTECTED]: Project apollo (in module apollo) failed
Failed with to: [EMAIL PROTECTED] from: [Ian Springer ipsATapacheDOTorg]
Failed to send notify e-mail: (450, 'FQDN required in the envelope sender', 
'ipsATapacheDOTorg')
To whom it may engage...

This is an automated request, but not an unsolicited one. For 
more information please visit 

BATCH: All dressed up, with nowhere to go...

2005-01-09 Thread brutus
Dear Gumpmeisters,

The following 12 notifys should have been sent

*** G U M P
[EMAIL PROTECTED]: Module castor success, but with warnings.
[EMAIL PROTECTED]: Module lenya success, but with warnings.
[EMAIL PROTECTED]: Module opensaml success, but with warnings.
[EMAIL PROTECTED]: Project nant (in module nant) failed
[EMAIL PROTECTED]: Project txt2html-task (in module jakarta-servletapi-5) 
success, but with warnings.
[EMAIL PROTECTED]: Module struts success, but with warnings.
[EMAIL PROTECTED]: Project asm (in module asm) failed
[EMAIL PROTECTED]: Project easymock (in module easymock) failed
[EMAIL PROTECTED]: Project myfaces (in module myfaces) failed
[EMAIL PROTECTED]: Project jtidy-cvs (in module jtidy) failed
[EMAIL PROTECTED]: Project JacORB (in module JacORB) failed
[EMAIL PROTECTED]: Project jetty-plus (in module jetty) failed
*** G U M P
[EMAIL PROTECTED]: Module castor success, but with warnings.
To whom it may engage...

This is an automated request, but not an unsolicited one. For 
more information please visit http://gump.apache.org/nagged.html, 
and/or contact the folk at [EMAIL PROTECTED]

Module castor contains errors.
The current state of this module is 'Success'.

Full details are available at:
http://brutus.apache.org/gump/public/castor/index.html

That said, some information snippets are provided here.

The following annotations (debug/informational/warning/error messages) were 
provided:
 -ERROR- *** Failed to update from source control. Stale contents ***



The following work was performed:
http://brutus.apache.org/gump/public/castor/gump_work/update_castor.html
Work Name: update_castor (Type: Update)
Work ended in a state of : Failed
Elapsed: 
Command Line: cvs -q -z3 -d :pserver:[EMAIL PROTECTED]:2401/cvs/castor update 
-P -d -A 
[Working Directory: /usr/local/gump/public/workspace/cvs/castor]
-
/cvs/castor: no such repository
-

To subscribe to this information via syndicated feeds:
- RSS: http://brutus.apache.org/gump/public/castor/rss.xml
- Atom: http://brutus.apache.org/gump/public/castor/atom.xml

== Gump Tracking Only ===
Produced by Gump version 2.2.
Gump Run 3009012005, brutus:brutus-public:3009012005
Gump E-mail Identifier (unique within run) #1.

*** G U M P
[EMAIL PROTECTED]: Module lenya success, but with warnings.
To whom it may engage...

This is an automated request, but not an unsolicited one. For 
more information please visit http://gump.apache.org/nagged.html, 
and/or contact the folk at [EMAIL PROTECTED]

Module lenya contains errors.
The current state of this module is 'Success'.

Full details are available at:
http://brutus.apache.org/gump/public/lenya/index.html

That said, some information snippets are provided here.

The following annotations (debug/informational/warning/error messages) were 
provided:
 -ERROR- *** Failed to update from source control. Stale contents ***



The following work was performed:
http://brutus.apache.org/gump/public/lenya/gump_work/update_lenya.html
Work Name: update_lenya (Type: Update)
Work ended in a state of : Failed
Elapsed: 1 min 4 secs
Command Line: svn --quiet update --non-interactive lenya 
[Working Directory: /usr/local/gump/public/workspace/cvs]
-
svn: Working copy 'lenya/src/webapp/lenya/resources/bxe/plugins' not locked
-

To subscribe to this information via syndicated feeds:
- RSS: http://brutus.apache.org/gump/public/lenya/rss.xml
- Atom: http://brutus.apache.org/gump/public/lenya/atom.xml

== Gump Tracking Only ===
Produced by Gump version 2.2.
Gump Run 3009012005, brutus:brutus-public:3009012005
Gump E-mail Identifier (unique within run) #2.

*** G U M P
[EMAIL PROTECTED]: Module opensaml success, but with warnings.
To whom it may engage...

This is an automated request, but not an unsolicited one. For 
more information please visit http://gump.apache.org/nagged.html, 
and/or contact the folk at [EMAIL PROTECTED]

Module opensaml contains errors.
The current state of this module is 'Success'.

Full details are available at:
http://brutus.apache.org/gump/public/opensaml/index.html

That said, some information snippets are provided here.

The following annotations (debug/informational/warning/error messages) were 
provided:
 -ERROR- *** Failed to update from source control. Stale contents ***



The following work was performed:
http://brutus.apache.org/gump/public/opensaml/gump_work/update_opensaml.html
Work Name: update_opensaml (Type: Update)
Work ended in a state of : Failed
Elapsed: 3 mins 9 secs

Re: The Gump3 branch

2005-01-09 Thread Leo Simons
On 08-01-2005 15:21, Adam R. B. Jack [EMAIL PROTECTED] wrote:
 Phew, have I been busy :-D.
 
 You certainly have.

Ooh, long e-mail! I'm gonna try and split this up... :-D

Inter-component-communication
-
 I'm sure your IOC/container experiences have required you to answer this
 before, but how do you allow components to communicate/collaborate?

I firmly believe there is very little need for different components to
communicate. If you architect things the IOC way, components will use just
one or two other components, and their parent can just set up the references
between all those components.

What will happen is that a component needs a certain kind of result
available. For example, something that pushes information in the dynagump
database needs that information, which might be put there by an ant builder
or something like that. This kind of stuff is trivial in python; you just
set the property on the relevant part of the model and then retrieve it
later.

Note that such communication is pretty indirect. For example the start of
the CvsUpdater plugin I did just pushes information into the model (the log
of the cvs command, exit status, etc) without worrying who uses that
information (at the moment, it is just ignored).

 There
 were times when building logic wanted to know something historically (had
 this built before, etc.) in order to determine how much effort (or what
 switches) to use. Is inter-component communications like this a real no-no,
 or is this something that might be coincidentally allowed via steps in
 pre-processing, etc.

We don't need steps. Think unix command line utilities. You can make them
communicate:

  find . -type f | xargs -v .svn

Without steps. That | there in gump is achieved by setting a property on a
piece of the model.

Threading
-
 Do you think we have a chance to re-instate threading in this model? [It is
 a minor nit, not a show stopper, but I liked the large run-time reduction of
 concurrent checkouts.]

Yes. We can probably reuse the worker code from gump2. I left it out on
purpose because it was clouding the gump2 code (several of the gump2 bits
all worry about multi-threading) and making it difficult to read.

What you can do for example is multithread each of the three stages, then
join the threads in between. And each plugin might do multithreading on its
own. 

What I want to see first is where we need it. Instrument the different bits
of the build and find out where we need the speedups. Keep most of the code
simple! :-D

CLI
---
 I've gotten the Gump3 branch into a state where
 everything works (for me), as far as stuff is implemented. The main
 core
 thing that is missing is cyclic dependency detection. I've got the right
 algorithm written down on paper, just need to make it happen. The hooks
 for
 it are there already though (the gump.engine.modeller.Verifier class).
 
 Mind pumping a few command lines up to a wiki or somewhere? I'd like to run
 the engine, and unit tests, and such. Gump2 was a pain to run (we never
 cured it's confusion) and I'd like to start comfortably with Gump3 fro mthe
 get go.

Uhm, yeah, I do :-D. The interface should be so easy to use you don't need
the docs. Try ./gump help for starters. There's work TODO here, but I
really prefer to update the code rather than the wiki!

 On thought in that regard is partial runs. I think Gump2 was beleived
 (although not actually true) to be less incremental build friendly since
 it wouldn't allow one to do build X, update X. [It was there in Gump3,
 just the command line was so crude folks never got to use it.]. I feel we
 need Gump3 to be easy to run in pieces, and in parts.

I disagree, actually! The reason we needed to do stuff like that was because
gump is so complex and difficult to use that one resorts to a model of
let's try this and see if works. We need to fix gump so that you don't
need to do that. IE, make it easy to write correct metadata.

I would like to make the hacky bits like this not part of the core. If you
need an adjusted profile with just a few projects, then change the profile!

 Easily asking for
 things that include/exclude components on the fly. Nicola's (and Sam's)
 wxPython GUI was a nice user this way. Any thoughts on re-instating that?

I'm not against GUIs, but I feel CLI is way more important to get right
first.

Plugins
--- 
  I think that generating plug-ins (perhaps even for loading, and such) is
 key. I'm not sure (yet) if the new model is any better than the old in
 allowing the core steps (loading, modelling) to be pluged-in, but I think
 it need to be investigated.

Yes, its easy. Change the get_verifier() in config.py to provide a different
implementation, and that's it!

 I see you have a Maven parser, but could/should
 that be a plug-in?

I doubt we should be talking about this kind of stuff as a plugin. There's
very specific bits of functionality that *need* to be performed (right
contracts) for gump to 

Re: The Gump3 branch

2005-01-09 Thread Leo Simons
On 08-01-2005 20:58, Stefano Mazzocchi [EMAIL PROTECTED] wrote:
big snip of lots of stuff/
 I see you have a Maven parser, but could/should
 that be a plug-in?
 
 This is *EXACTLY* the kind of question we should *NOT* be answering. It
 does *NOT* matter if it's a plugin or not, as long as it does the job.
 
 Early refactoring is the root of all evil, even worse than early
 optimization.

Well, I think I disagree that's the case here. What I did was a pretty
late refactoring of gump2. What Adam is basically asking is that
refactoring now done? and the answer is probably not completely. It makes
sense to figure out at this point if there's some big architectural flaws to
catch now and change.

Please do be critical and ask those questions! The answer could just be
no, but that just makes us all more confident that we're on the right
path...I really don't mind takin a week or two to be sure of that.

Thinking more about that Q re the to-be-built maven parser...basically you
could have 0..n Normalizers that chain up to all change small bits of the
xml model. Sounds like a pipeline of cocoon transformers :-D. Fortunately
that change is kind-of isolated since you could just refactor the current
Normalizer internally to consist of multiple smaller components.

An alternative might be replacing the normalizer with a wrapper around an
XSLT script to handle the transformation. Or ... Or ... :-D

The same could probably be said of all the other xml handling bits. For
example the Objectifier could probably be split into one small class for
each different kind of tag that needs to be turned into a python object.

I suggest we don't worry about that for now (no need to build another cocoon
in python! :-D) but keep in mind that its possible.

 A lot of what Leo has done is to reduce the (bloated, percieved or real
 I don't know) complexity of Gump2, if you start moving stuff over from
 Gump2 to Gump3 before *others* had a look at the new (and much simpler)
 code, we go back to a one man show and the entire effort is useless.

If that would really be the case then the refactoring effort would have
failed. I would hope that adding an RDF generator plugin would be adding a
single sourcefile somewhere where it is easily ignored by someone just
learning the system internals.

Nevertheless, I do agree with:
 so, please, let's work as a team in identifying what needs to be done,
 outline the priorities and then allowing code to get in.
 
 priority #1: avoid one man shows.
 priority #2: keep it simple, stupid (to help people understanding the
 code, then helping on #1)
 priority #3: achieve separation of build from presentation
 priority #4: implement a very usable command line interface
 
 everything else (including sending email!) will come later.

Concretely, doing a grep for TODO should show lots of places where I think
the existing code needs work :-D
 
 Avalon had the notion of a component lifecycle and this is what Leo is
 doing here.

Ssssh! :-D

 no, and we don't need one: you need mysql and if you don't have it Gump3
 won't run. That's as simple as that.

+1 to that. Some decisions about that which are implicit in the new CLI as
I've been building it:

* python 2.3 with all its libs
* unix environment (cygwin will do, probably)
* mysql
* bunch of python libraries we choose to use (like MySQLdb)
* bash, java, ...

The bash script simply checks for all this and complains if something is not
there. Grepping that script for the word check hopefully results in a full
list of required software :-D

Next week is scheduled to be rather busy so it might take a while before I
have time to reply!

Cheers,

- Leo



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



Re: gump and Maven IDs

2005-01-09 Thread Leo Simons
On 08-01-2005 03:46, Brett Porter [EMAIL PROTECTED] wrote:
 http://wiki.apache.org/gump/MavenId

Kewl!

 Any thoughts on what the best path is?

As I've said before, I think some fundamental changes to gump are in order
so that it really understands maven and fits the maven project model (which
is quite rich) into its own. The wiki page you wrote really goes a long way
to helping me understand what those changes need to be.

I think you're spot on that gump basically needs to change to support the
maven model of one-jar-per-project-definition. In fact making it
one-output-per-project-definition seems to make even more sense, where a
maven dist is a different project from a maven jar.

It will take a while for us to get there. One thing I wouldn't like to see
happening is that you need 20 project definitions for a single ant command
that results in 20 jars. I.e. Gump needs to support maven's
one-jar-per-project model, but also others, and they all need to be
convenient to set up.

Thinking about just doing (module = groupid, project = artifactid), that
might get us into problems as the module name is also used for other things
at the moment. But IIRC you can override that behaviour, so let's make that
happen!

Cheers,

- Leo



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



DynaGump (was Re: The Gump3 branch)

2005-01-09 Thread Adam R. B. Jack
 The goal now is to allow Gump3 to perform builds and put its data into
 the database so that dynagump can start publishing it.

 Everything else is secondary.

I agree, but I think Gump3 is a good idea and I'd like to see it for the
long run. The *right*/focused plan for now is to accept that Gump3 is months
(and a lot of work) off (I know from experience) and that the shortest path
to DynaGump is not Gump3. Work with me to finish the DynaGump actor for
Gump2 that I wrote for you, and let's get it up and running. Let's start
exercising/integrating DynaGump now, not wait for a core re-write.

The best thing that happened to Gump2 is that folks were running Gump1 in
parrelel. Countless bugs were detected/resolved by being able to run side by
side and compare. The best things we can do for Gump3 is allow Gump2 to talk
to DynaGump in parrellel.

If we create a workspace on Brutus called DynaGump and configure it to a DB
with both old and new DB schemas in it, we can have DynaGump up a running in
no time. Nothing (IMHO) better than running DynaGump against DBs formed by
old and new Gump (2  3) and also comparing it to the HTML results generated
by Gump2.

Let's allow Gump3 to be team formed by giving it time, whilst we make one
incremental improvement and allow DynaGump to be born. Can we agree on this
as a step in the plan?


 But I also hope that we'll work as a team this time.

Stefano, you make me smile. :-) You are so strong in your opinions (at least
how they read to others) that you come perilously close to stymieing the
community you love. I gave up on Depot, leaving behind parts I love/long to
see, mainly 'cos it was becoming a one man band. Gump, however, is thriving
community, and even when I was the only Python coder we had vast community
efforts in metadata/management/communications
(Wikis/Documentation/Blogs)/problem resolution/and so on. Gump's code is
only a small component of it's whole.

I welcome more coders into Gump code, in fact I've longed for it  tried to
encourage entry many times.Gump2 was a one man band 'cos nobody else wished
to invest time and effort in a possibly dying venture, and yet out of it (in
part by you helping it becoming a TLP) Gump was re-born and is once again
thriving. Gump thrives based of it's contributions to the community, and
hence their contributions to it (via metadata/effort) not due to the code. I
welcome Gump3 as great opportunity for discussion and solving some mistakes
of Gump2. Leo has address some, but not all (as I'll write) that need
solving. I see no point in doing a re-write if after months and much effort
we are no better off, and we've just shifted the one man team to a new man
who we'll near burn out w/ all the 'implementation nits' that pure theory
doesn't prepare you for. I'm no Leo, but I know this, I've been there.

Stefano, we are a team, and as a team we will have different world
views/skill sets/insights -- and yes, have different weakness/make different
mistakes. I'll keep raising concerns/issues based off my one-man-band wealth
of experience, and hope we'll all keep an open mind to what is re-instating
a past mistake, and what is a practical insight. Part of being a team is,
perhaps, you educating me into your views/insights and me pressure testing
them on me.

Let's not let our desire for progress to weaken our team.

regards,

Adam


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



Re: The Gump3 branch

2005-01-09 Thread Adam R. B. Jack
 Ooh, long e-mail! I'm gonna try and split this up... :-D

Sorry Dude, I got excited. :-) I'll try to keep them shorter or split them.
[I'll reply a few times to this one.]

Having slept on what I saw, I do have some serious questions, and (to keep
it short, I'll come right to the point, knowing you know I mean it
respectfully) I wonder if there is as much significant difference between
Gump2 and Gump3 as I first thought.  They are much the same.

I have a slight deja-vu feeling here. You've built a nice (clean) start,
like Sam did, but to get from this to a live running system will take much
the same work that I added last time, and I'm not sure the key problems of
Gump2 have been understood/corrected. I'm going to try (over time) to list
every place in Gump2 that I feel would be as bad in Gump3 so we can address
them. This isn't me being petty, but me trying to pressure test this new
approach against my understanding of reality (for all it's/my warts).

 I firmly believe there is very little need for different components to
 communicate. If you architect things the IOC way, components will use just
 one or two other components, and their parent can just set up the
references
 between all those components.

[ BTW: I still could use help with IOC. I have a crude understanding of it,
but please don't forget to enlighten me if you see I'm missing a point.]

Sure, I see that components ought not need to communicate directly. In Gump2
we have a model tree (workspace/modules/projects) and a (theoretically
separate, but not) tree of results. That tree is for a few projects, or all,
based off the filter of work to do. As components do work on that tree they
store data at the right level (run/workspace/module/project), perhaps even
setting state (failed, etc.). This is Gump2, and (as I hear it) Gump3, no
differences.

I feel it is that tree that is the weakness people consider bloat. Not
it's memory size, but it's complexity, all the data stored in there -- and
the fact it is a batch. That is a key similarity between Gump2/Gump3 and
(IMHO) a key issue to address. The closer I look the more I realize the
similarities between Gump2 and Gump3.

 What will happen is that a component needs a certain kind of result
 available. For example, something that pushes information in the dynagump
 database needs that information, which might be put there by an ant
builder
 or something like that. This kind of stuff is trivial in python; you just
 set the property on the relevant part of the model and then retrieve it
 later.
 [...]
 Note that such communication is pretty indirect. For example the start of
 the CvsUpdater plugin I did just pushes information into the model (the
log
 of the cvs command, exit status, etc) without worrying who uses that
 information (at the moment, it is just ignored).

Part of the problem is ordering/sequencing. The CVS updating would not  halt
all efforts on a module (builds would occur) 'cos the CVS failed if it had a
semi-fresh copy. (This was due to SF.net CVS being so flakey for so long
even for Gump-wise stable things like JUnit.) As such, prior to CVS updating
we needed to bring some stats/history information into memory, so enforces
an implicit dependency. [Note: Stats Actor today stores Stats on the Tree,
so users (CVS Actor) just ask for it from there, they don't talk directly.]

I know you can do inter component communications w/ Python properties,
Gump2 does, but it has no contract (as Stefano would say) it is not clean,
it is intricate internals knowledge from one component to annother. It is
stuff like this (and order dependencies like this) that ties components
together, and keeps things fat. [Gump2 at least used typed member
data/methods on the tree in order to allow some contracts.]

What you are suggesting in almost exactly how Gump2 works, and is (I fear)
where the thoughts to bloat come from.

  There
  were times when building logic wanted to know something historically
(had
  this built before, etc.) in order to determine how much effort (or what
  switches) to use. Is inter-component communications like this a real
no-no,
  or is this something that might be coincidentally allowed via steps in
  pre-processing, etc.

 We don't need steps. Think unix command line utilities. You can make
them
 communicate:

   find . -type f | xargs -v .svn

I'm a PIPE lover the much as the next guy, but simple flat stream pipes are
not what we are building. Our components use complex results. Do we need
contracts for those, or things (like DOM tree/XML structures) that we can
persist/stream/validate. [How does Cocoon address this?]

 Without steps. That | there in gump is achieved by setting a property on
a
 piece of the model.

As with Gump2, but the properties grow and need management. They (and
implicit dependencies) are the bloat.

 Plugins
 --- 
   I think that generating plug-ins (perhaps even for loading, and such)
is
  key. I'm not sure (yet) if the new model is any better than 

Re: DynaGump (was Re: The Gump3 branch)

2005-01-09 Thread Stefano Mazzocchi
Boy, this really came across wrong.
First of all (and not for the first time, but probably not for the last 
either.. unfortunately) allow me to apologize: I *really* would love to 
just have time to spend on this, showing how gump could potentially be 
the killer app of the semantic web... but no, I'm supposed to deliver 
other things... :-(

Anyway, this is not an excuse to be rude and disrespectful and I'm sorry 
for that.

Adam R. B. Jack wrote:
The goal now is to allow Gump3 to perform builds and put its data into
the database so that dynagump can start publishing it.
Everything else is secondary.
I agree, but I think Gump3 is a good idea and I'd like to see it for the
long run. The *right*/focused plan for now is to accept that Gump3 is months
(and a lot of work) off (I know from experience) and that the shortest path
to DynaGump is not Gump3. Work with me to finish the DynaGump actor for
Gump2 that I wrote for you, and let's get it up and running. Let's start
exercising/integrating DynaGump now, not wait for a core re-write.\
Good point: SoC also enforces polymorphism.
The best thing that happened to Gump2 is that folks were running Gump1 in
parrelel. Countless bugs were detected/resolved by being able to run side by
side and compare. The best things we can do for Gump3 is allow Gump2 to talk
to DynaGump in parrellel.
Very good point as well.
If we create a workspace on Brutus called DynaGump and configure it to a DB
with both old and new DB schemas in it, we can have DynaGump up a running in
no time. Nothing (IMHO) better than running DynaGump against DBs formed by
old and new Gump (2  3) and also comparing it to the HTML results generated
by Gump2.
Let's allow Gump3 to be team formed by giving it time, whilst we make one
incremental improvement and allow DynaGump to be born. Can we agree on this
as a step in the plan?
+1
But I also hope that we'll work as a team this time.
Stefano, you make me smile. :-) You are so strong in your opinions (at least
how they read to others) that you come perilously close to stymieing the
community you love. 
Yeah, well, (looking down) I know.
I gave up on Depot, leaving behind parts I love/long to
see, mainly 'cos it was becoming a one man band. Gump, however, is thriving
community, and even when I was the only Python coder we had vast community
efforts in metadata/management/communications
(Wikis/Documentation/Blogs)/problem resolution/and so on. Gump's code is
only a small component of it's whole.
Agreed. Yet, we *must* have more people touching the code and, IMO, we 
should do so by thinking that every line of python code puts us a little 
bit farther away from that goal.

I welcome more coders into Gump code, in fact I've longed for it  tried to
encourage entry many times.
Yes, I know. I'm *not* blaming it on you. I'm blaming it more on me.
Gump2 was a one man band 'cos nobody else wished
to invest time and effort in a possibly dying venture, and yet out of it (in
part by you helping it becoming a TLP) Gump was re-born and is once again
thriving. 
Oh, here I really came across wrong: if it wasn't for your effort, I 
wouldn't have been involved in the first place since I thought that 
Sam's try just had failed to attract attention and momentum. Your energy 
and vitality gave me new hope and I think that's why we have a lot more 
gumpers today (even if they still don't touch the code!).

Hopefully, the next wave will be the final one: when the community 
behaves just like any other and it's diversified enough to sustain any 
single individual leaving.

Gump thrives based of it's contributions to the community, and
hence their contributions to it (via metadata/effort) not due to the code. I
welcome Gump3 as great opportunity for discussion and solving some mistakes
of Gump2. Leo has address some, but not all (as I'll write) that need
solving. I see no point in doing a re-write if after months and much effort
we are no better off, and we've just shifted the one man team to a new man
who we'll near burn out w/ all the 'implementation nits' that pure theory
doesn't prepare you for. I'm no Leo, but I know this, I've been there.
Completely agree.
Stefano, we are a team, and as a team we will have different world
views/skill sets/insights -- and yes, have different weakness/make different
mistakes. I'll keep raising concerns/issues based off my one-man-band wealth
of experience, and hope we'll all keep an open mind to what is re-instating
a past mistake, and what is a practical insight. Part of being a team is,
perhaps, you educating me into your views/insights and me pressure testing
them on me.
Let's not let our desire for progress to weaken our team.
Very wise.
Again, I apologize. I came across wrong, rude and disrespectful. It was 
not my intention.

I very much welcome the idea of using gump2 and gump3 *both* to drive 
dynagump.

I say let's do it :-)
--
Stefano.
-
To unsubscribe, e-mail: [EMAIL 

Re: DynaGump (was Re: The Gump3 branch)

2005-01-09 Thread Leo Simons
On 09-01-2005 17:40, Adam R. B. Jack [EMAIL PROTECTED] wrote:
 The goal now is to allow Gump3 to perform builds and put its data into
 the database so that dynagump can start publishing it.
 
 Everything else is secondary.
 
 I agree, but I think Gump3 is a good idea and I'd like to see it for the
 long run.

I think we're all in violent agreement :-D

 The *right*/focused plan for now is to accept that Gump3 is months
 (and a lot of work) off

Yep! Oh man, so much work...

 (I know from experience) and that the shortest path
 to DynaGump is not Gump3. Work with me to finish the DynaGump actor for
 Gump2 that I wrote for you, and let's get it up and running. Let's start
 exercising/integrating DynaGump now, not wait for a core re-write.

The power I'm hoping to maximize on (and I think that was something Stefano
was getting at) is the power of the clean sheet. Sam did this as well,
only the clean sheet he provided was so amazingly smart that we all had the
hardest time understanding it!

I'm guessing one of the key bits that makes a gump2/dynagump integration
difficult is just how much cool ideas Stefano has in his head wrt dynagump
and how immensely difficult it is to figure out how to weld those ideas into
gump2. Since gump3 has no outputs, no builders, no generators, we can start
with the kind of output we need and go from there. A reversed approach if
you will.

By starting with an empty shell like gump3, it becomes easier to visualize
how to do those things (its a hard hard problem to get right). From there,
we should be able to figure out together how to make gump2 deliver the
outputs that dynagump needs to fly.

It's not an or/or decision, its and/and. Let's just go with the flow. That's
always worked for the gump community so far. We're that good ;)

 The best thing that happened to Gump2 is that folks were running Gump1 in
 parrelel. Countless bugs were detected/resolved by being able to run side by
 side and compare. The best things we can do for Gump3 is allow Gump2 to talk
 to DynaGump in parrellel.

That makes a lot of sense.

 If we create a workspace on Brutus called DynaGump and configure it to a DB
 with both old and new DB schemas in it, we can have DynaGump up a running in
 no time.

Hehehe. Don't be too optimistic. The dynagump database schema as stefano
built seems to be completely different in some ways from how gump2 is set
up. Thinking about it hurts :-D

 Nothing (IMHO) better than running DynaGump against DBs formed by
 old and new Gump (2  3) and also comparing it to the HTML results generated
 by Gump2.
 
 Let's allow Gump3 to be team formed by giving it time, whilst we make one
 incremental improvement and allow DynaGump to be born. Can we agree on this
 as a step in the plan?

Like I said, it makes sense. What I'd really love to see would be for you to
fully digest all the fledgling concepts in gump3 (after we figure out what
they are :-D) so you can figure out what kind of migration/integration/
reorganisation strategy makes sense.

And also, as I mentioned in my previous e-mail, I think we really don't need
a grand plan to all agree on. Baby steps. Python makes it so easy to glue
things up, there's a miriad of possibilities to make different versions of
gump all interoperate. We can figure all that out!

 But I also hope that we'll work as a team this time.
 
 Stefano, you make me smile. :-) You are so strong in your opinions (at least
 how they read to others) that you come perilously close to stymieing the
 community you love.

Hehehe. Take that, you passionate Italian! :-D

 Gump, however, is thriving
 community, and even when I was the only Python coder we had vast community
 efforts in metadata/management/communications
 (Wikis/Documentation/Blogs)/problem resolution/and so on. Gump's code is
 only a small component of it's whole.
 
 I welcome more coders into Gump code, in fact I've longed for it  tried to
 encourage entry many times.Gump2 was a one man band 'cos nobody else wished
 to invest time and effort in a possibly dying venture, and yet out of it (in
 part by you helping it becoming a TLP) Gump was re-born and is once again
 thriving. Gump thrives based of it's contributions to the community, and
 hence their contributions to it (via metadata/effort) not due to the code. I
 welcome Gump3 as great opportunity for discussion and solving some mistakes
 of Gump2. Leo has address some, but not all (as I'll write) that need
 solving. I see no point in doing a re-write if after months and much effort
 we are no better off, and we've just shifted the one man team to a new man
 who we'll near burn out w/ all the 'implementation nits' that pure theory
 doesn't prepare you for. I'm no Leo, but I know this, I've been there.
 
 Stefano, we are a team, and as a team we will have different world
 views/skill sets/insights -- and yes, have different weakness/make different
 mistakes. I'll keep raising concerns/issues based off my one-man-band wealth
 of experience, and hope 

Re: The Gump3 branch

2005-01-09 Thread Stefano Mazzocchi
Adam R. B. Jack wrote:
I'm a PIPE lover the much as the next guy, but simple flat stream pipes are
not what we are building. Our components use complex results. Do we need
contracts for those, or things (like DOM tree/XML structures) that we can
persist/stream/validate. [How does Cocoon address this?]
Cocoon pipelines are not streams of characters but streams of structured 
events (using the SAX API). So, for example, if you have ab//a 
to pass along, the events are:

 - startElement(a)
 - startElement(b)
 - endElement(b)
 - endElement(a)
--
Stefano.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: The Gump3 branch

2005-01-09 Thread Leo Simons
On 09-01-2005 18:28, Adam R. B. Jack [EMAIL PROTECTED] wrote:
 Ooh, long e-mail! I'm gonna try and split this up... :-D
 
 Sorry Dude, I got excited. :-)

Excitement is good!

 I wonder if there is as much significant difference between
 Gump2 and Gump3 as I first thought.

Probably not. Then again, I don't know what you thought...

 I have a slight deja-vu feeling here. You've built a nice (clean) start,
 like Sam did, but to get from this to a live running system will take much
 the same work that I added last time, and I'm not sure the key problems of
 Gump2 have been understood/corrected. I'm going to try (over time) to list
 every place in Gump2 that I feel would be as bad in Gump3 so we can address
 them. This isn't me being petty, but me trying to pressure test this new
 approach against my understanding of reality (for all it's/my warts).

It's a good idea. By all means. Software architecture is *hard*.

 [ BTW: I still could use help with IOC. I have a crude understanding of it,
 but please don't forget to enlighten me if you see I'm missing a point.]

That takes years! :-D. Think military and about who is in command. Maybe
you're familiar with patterns like chain of responsibility. IOC is a
pattern in the same sense. Its a tree of commands. General at the top.

 Sure, I see that components ought not need to communicate directly. In Gump2
 we have a model tree (workspace/modules/projects) and a (theoretically
 separate, but not) tree of results. That tree is for a few projects, or all,
 based off the filter of work to do. As components do work on that tree they
 store data at the right level (run/workspace/module/project), perhaps even
 setting state (failed, etc.). This is Gump2, and (as I hear it) Gump3, no
 differences.

There's a few I think. I had the hardest time fully reading through the
gump2 model code. I decided I needed to start with the XML, retrieve the
fundamental abstractions, and rewrite the tree. It was so much fun I just
kept going.

The gump3 tree is totally passive, and much closer to the way a
mathematician would build a tree. You can let loose algorithms on it that
were figured out in the 30s (ie the topological sort in the walker code is
one of those).

The gump3 tree does not do any kind of validation. It does only the most
minimal of defaults.

The gump3 tree is more fully normalized. All references are fully two-way,
like with DOM. The difference between depend/ and option/ sucks
conceptually, so now the option-ness is just a property of the edge that
connects two vertices.

I think its much simpler.

 I feel it is that tree that is the weakness people consider bloat. Not
 it's memory size, but it's complexity, all the data stored in there -- and
 the fact it is a batch. That is a key similarity between Gump2/Gump3 and
 (IMHO) a key issue to address.

Right.

 Part of the problem is ordering/sequencing. The CVS updating would not  halt
 all efforts on a module (builds would occur) 'cos the CVS failed if it had a
 semi-fresh copy. (This was due to SF.net CVS being so flakey for so long
 even for Gump-wise stable things like JUnit.) As such, prior to CVS updating
 we needed to bring some stats/history information into memory, so enforces
 an implicit dependency. [Note: Stats Actor today stores Stats on the Tree,
 so users (CVS Actor) just ask for it from there, they don't talk directly.]

That's a big part of the problem. The solution is in the back of my head,
nearly constantly as I look at gump. Basically these kinds of decisions are
all encapsulated into the graphical algebra formulae Stefano and me found in
September. It would be real nice to meet face-to-face so we could talk about
that one!

 I know you can do inter component communications w/ Python properties,
 Gump2 does, but it has no contract (as Stefano would say) it is not clean,
 it is intricate internals knowledge from one component to annother. It is
 stuff like this (and order dependencies like this) that ties components
 together, and keeps things fat. [Gump2 at least used typed member
 data/methods on the tree in order to allow some contracts.]

That's a fundamental difference right there! Strong typing is the way we
write contracts in java, but that really doesn't work as well in python. We
miss the interface keyword. Python OO needs to be built for dynamism. Take a
look at how hard the Zope people tried and failed to add that in and how
immensely hard that has hit them in the face and how bloated their design is
now!

The way to specify contracts in python is to document them.

The CvsUpdater plugin will set a string property cvs_update_log on each
module that is of type 'cvs'. The property contains the log output from the
cvs update command of course.

That's a contract right there. Solidify the contract in a unit test for the
updater. Model stays clean, and blissfully unaware.

 What you are suggesting in almost exactly how Gump2 works, and is (I fear)
 where the thoughts to bloat come from.

The 

Re: gump and Maven IDs

2005-01-09 Thread Brett Porter
 I think you're spot on that gump basically needs to change to support the
 maven model of one-jar-per-project-definition. 

great!

 In fact making it
 one-output-per-project-definition seems to make even more sense, where a
 maven dist is a different project from a maven jar.

I'm not so sure about this. Which parts of the definition actually
change other than the outputs part?

 It will take a while for us to get there. One thing I wouldn't like to see
 happening is that you need 20 project definitions for a single ant command
 that results in 20 jars. I.e. Gump needs to support maven's
 one-jar-per-project model, but also others, and they all need to be
 convenient to set up.

Right - my solution proposed in there covers that. The JAR ID concept
would continue to work by modifying the artifact ID of the several
outputs:
eg:
jar name=dist/asm.jar artifactId=asm /
jar name=dist/asm-util.jar artifactId=asm-util /

This is very close to what is already there, and in several cases the
same. However, these are effectively being promoted to the level of
projects now. Therefore, id/ids would be removed from depend/.

 Thinking about just doing (module = groupid, project = artifactid), that
 might get us into problems as the module name is also used for other things
 at the moment. But IIRC you can override that behaviour, so let's make that
 happen!

Yes, everything I saw module being used for was as a path and was
configurable elsewhere.

As far as I can tell, this gives a few simple steps forward to the
correct solution. For the long term goal, I agree with Stefano and
yourself - to be able to read the Maven project descriptor directly
and have gump understand it. As is shown by the Maven gump plugin,
everything in the gump descriptor can be derived from that presently.

Cheers,
Brett

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



Shooting in the dark

2005-01-09 Thread Curt Arnold
I've made some committed changes to some long failing projects.  I'm 
not set up to actually test the changes, basically take a shot in the 
dark and check the next morning if I hit anything.

ant-contrib-tests started failing around 8 Dec on the AntServerTest 
with a broken pipe IOException.  I believe it was attempting to open up 
a socket on localhost.  My guess was there was some change to the Gump 
machine that blocked those sockets.  I'm an admin of that project, but 
wasn't aware that I had commit rights on the gump descriptors at the 
time, so I addressed it by removing those tests from the ant target run 
by Gump.

log4j-tests was down for a while since it had a dependency on 
jetty-plus.  The jetty-plus dependency was removed.  In a intervening 
change, it was renamed logging-log4j-tests.

jetty-plus was down since it implemented a log4j interface 
(RepositorySelector) that had a breaking change since log4j 1.2.  In 
the follow up discussion on the log4j-dev mailing list, it was 
confirmed that the change was intended to break apps that had 
implemented the previous interface and that the mortbay jetty effort 
had moved into Apache.  I've changed the jetty-plus descriptor to build 
against logging-log4j-12, but  that hasn't run yet.

logging-log4j went down due to a change in its build file where 
log4j-chainsaw.jar (log monitoring application) was no longer built 
during by the jar target.  That was fixed in the log4j project but it 
was agreed that it would be a good thing to spin off the chainsaw app 
as logging-log4j-chainsaw.  logging-log4j-tests failed last night, but 
the newly added tests have been backed out of the Gump build.

domts-dom3 started failing in early December but took a vacation while 
Xalan was broken.  The problem appears to be that DOM Level 2 
definitions (likely provided by xml-common's xml-apis) are hiding the 
DOM Level 3 definitions during compilation.  I've removed the xml-apis 
and xerces dependencies to see what happens.

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


Problem running Apache Gump [brutus-public]

2005-01-09 Thread brutus
There is a problem with run 'brutus-public' (09012005_180001), location : 
http://brutus.apache.org/gump/public

The log ought be at:
   http://brutus.apache.org/gump/public/gump_log.txt

The last (up to) 50 lines of the log are :
- GUMP run on host   : brutus
- GUMP run @ : 09 Jan 2005 18:00:01
- GUMP run @  UTC: 10 Jan 2005 02:00:01
- GUMP run by Python : '2.3.4 (#2, Sep 24 2004, 08:39:09) \n[GCC 3.3.4 (Debian 
1:3.3.4-12)]'
- GUMP run by Python : '/usr/bin/python2.3'
- GUMP run by Gump   : 2.0.2-alpha-0003
- GUMP run on OS : 'posix'
- GUMP run in env: 
  GUMP_HOME - [/home/gump/workspaces2/public/gump]
  SHELL - [/bin/sh]
  HOST_LOCAL_ENV - [local-env-brutus.sh]
  SHLVL - [2]
  FORREST_HOME - [/opt/forrest]
  CLASSPATH - [/opt/jdk1.4/lib/tools.jar]
  LOCAL_ENV - [local-env.sh]
  GUMP_HOST - [brutus]
  PWD - [/usr/local/gump/public/gump/cron]
  GUMP_PYTHON - [/usr/bin/python2.3]
  LOGNAME - [gump]
  MAVEN_HOME - [/opt/maven]
  PATH - [/usr/bin:/bin:/opt/jdk1.4/bin:/opt/forrest/bin:/opt/maven/bin]
  JAVA_HOME - [/opt/jdk1.4]
  HOME - [/home/gump]
  _ - [/usr/bin/python2.3]
- GUMP base directory : /usr/local/gump/public/workspace
- GUMP base path  : /usr/local/gump/public/workspace
- GUMP mail server: mail.apache.org
- GUMP mail port  : 25
- GUMP mail from  : [EMAIL PROTECTED]
- GUMP mail to: general@gump.apache.org
- GUMP log is @   : http://brutus.apache.org/gump/public
- GUMP log is @   : /usr/local/gump/public/results
 - GUMP PYTHONPATH  :  /home/gump/workspaces2/public/gump/python
Execute : svn update --non-interactive out.txt 21
svn: PROPFIND request failed on '/repos/asf/gump/live'
svn: PROPFIND of '/repos/asf/gump/live': SSL negotiation failed: Connection 
reset by peer (https://svn.apache.org)
Process Exit Code : 1
--
Gump Version: 2.0.2-alpha-0003

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