gump-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leo Simons <leosim...@apache.org>
Subject Re: [gumpy] refactoring halfway
Date Mon, 28 Apr 2003 21:03:40 GMT
rant rant rant below :D

Nicola Ken Barozzi wrote:
> Wait a sec, I just had time to look at it, and it's basically the same 
> as I did before, but backed away because of these questions:
> 
> 1 - why rss is in gump and not next to build?

rss can prolly be refactored to be 99% generic RSS and 1% specific to 
gump, however as currently written its not. Belongs with gump 'till then.

> 2 - shouldn't properties be also in the main dir? (user override)

hmm. I would think user override should happen in the profile.xml, and 
there would eventually be a jakarta-gump/run.py file which would defer 
to build.py functions:

----
#!/usr/bin/env python

"""
   Frontend to gump.build....
"""
import gump.conf

# override config here if you don't do it in xml
gump.conf.dir.base = '.'
gump.conf.basicConfig()

# kick tyres, light fires
import gump.build
build.run()
----

boy, python is easy. I suspect the above might actually almost work!

> 3 - shouldn't core be in the init module, so it is called as gump?
>     (IIUC)

yes :D

> 4 - shouldn't view be in teh base dir?

why?

just like org.apache.avalon.phoenix.cli.CLIMain is a subpackage of 
avalon.phoenix, so view is a subpackage of gump. Python packaging is 
like java packaging, only slightly more ugly :D

> The only thing I'm sure is that the core needs to go somewhere in the 
> gump package, for the rest I'm confused -> not committed it myself.

fortunately, its easy to change ;)

general docs about packaging are at 
http://www.python.org/doc/essays/packages.html but most non-core python 
packages I've found so far break at least one rule! Ni!

[OT] Python stuff
-----------------
I've played with python and jython (latest thought: drop Jelly again 
from my personal projects and replace with jython :D), and ruby (ruby is 
actually way cooler than python but less used and known atm!). Some 
observations:

- python is exactly the right tool for gump. Gump is 90% glue and 15% 
text/xml handling.

- docutils.sf.net could be way nicer...IIUC its python's future 
'javadoc'....we should prepare to use it

- the pydoc util in the python distro is interesting as well...in 
remarkably little code it is a tty tool, a gui tool and a webserver. I 
see possibilities for implementing gump/server.py or something like that...

- lacking an editor with stuff like refactoring support and code 
insight; I find the emacs python-mode to still be way less productive 
than something like IDEA; this is one area where PHP still has the edge 
over python imho

- python is absolutely great for coding stuff like blogs, wikis, little 
CMSes, config tools. I think I'm building my next website in python :D

- python is hands-down the best all-round "glue" available (too bad 
CPython and Jython don't integrate seamlessly though)

- Cheetah (velocity for python) rocks

- ZopeX3 (development version of zope, www.zope.org) is basically aiming 
to recreate the whole interface/component/service/composition idiom (ie 
avalon ;D) in Python, and it clearly shows that python's meta model and 
security fails there. There is an upper limit to python complexity. 
Implementing an EE framework in python is not a good idea... (should do 
that in Ruby, perhaps...) ...interesting effort though!

TODOs
-----
0) put this stuff in some kind of tracker

1) figure out the dynamism in the GOM completely (ugh. Prototype OOP 
always makes my head hurt)

2) put some stuff up on wiki, make noise

3) uncomment the exec() calls and start making things actually work

4) look at unittest.py and write tests

5) incorporate a callback/interceptor style setup which sends output and 
info to cheetah or something else (ie you plug in gen.py or cheetah.py 
into build.py)

6) install stuff on lsd.student.utwente.nl

7) do some rough speed comparisons

8) support <maven/>

9) investigate running gumpy with jython, perhaps calling ant in-process 
(might be a lot quicker; no need to start up JVMs all the time)

10) refactor to be more OO and less function-oriented, figure out an 
extension/plugin setup

11) integrate functionality of nag.pl, gendoc.pl, etc.

12) more refactoring (no doubt)

13) create a gumpy release which works like:
      1) unpack (with GUI)
      2) ./first-time-wizard.py (with GUI)
      3) ./run.py (with GUI)

14) create a gumpy rpm which enables
      rpm -i gumpy-0.3.5.rpm
      gumpy install-service
      gumpy build-all --result-email-to=gump@jakarta.apache.org \
      gumpy clean

15) figure out how to make installing binary packages a lot less difficult

16) take a look at POM <-> GOM conversion

cheers!

- LSD



Mime
View raw message