Definitely check out the tutorial pointed to on the Clamato site - the code browser is well designed with efficient workflow in mind. For finding code you effectively have the senders and implementors functionality of a traditional Smalltalk browser, but in an elegant and compact UI. Kudos to the Dabble DB folks there - their UI design skills are top notch.
I want to play with Clamato both inside and outside of a web browser, so I decided to grap v8, which is what I believe the Dabble DB folks use when doing debugging. Naturally, I browsed my way over to Google and figured out how to download v8 (svn repository) by reading the build instructions.
To build v8, you need SCons, which is a software build system analogous to the GNU autoconf tools; SCons is written in Python (there's three!). No problem, right? I write a lot of code in Python, nearly every day in fact.
I first tried the Python install tools I have on hand, and did
pip install scons... Which resulted in a nice error:
error: option --single-version-externally-managed not recognized... at this point, trying to play with a Smalltalk dialect implemented in JavaScript, I didn't really want to chase down why this failed, since pip is still experimental. So I did the old-school Python routine:
python ./setup.py installThis seemed to work fine. No errors... until I tried to use it. I changed back to the v8 source tree I had downloaded, and following the instructions typed
scons. This produced a Python traceback:> scons
Traceback (most recent call last):
File "/Users/brian/.bin/py/scons", line 162, in
import SCons.Script
ImportError: No module named SCons.Script
Hmpf. That says to me, "The module is missing from the site-packages". So I went and looked. Not there. Cool. $SYS$WHAT???
Fine. The developers best friend to the rescue. Google turned up this nugget for me:
Hi David--
>> Now, SCons installed it self in $HOME/local/lib
>
> At one point, I wondered why scons installed
> itself in lib instead of lib/python-version/site-packages.
> What is the rationale for this ?
To make it easier to install and compare multiple versions of SCons side-by-side.
In enterprise development organizations, the biggest barrier to upgrading a tool isn't technically whether you can push a button (like setup.py) and have it installed. The biggest challenge is being able to compare the behavior of the old and new versions and verify the new behavior doesn't introduce any relevant problems. So we wanted to make it convenient for people to experiment with a new version without having to uninstall (or install over) the old version, or dedicate a separate system to the project, or do a lot of other custom work.
In essence, we've tried to make SCons more like a standalone application that happens to use Python, instead of a Python application that only exists "within" the Python installation itself. This separation also allows you, for example, to experiment with your Python version without having to re-install SCons.
How well we've done with this overall is debatable, though, in no small part because Python's distutils and the like are so much more geared towards installing Python packages and not separate applications. Note that the hacking we've done on our setup.py does allow you to install into the site-package/ subdirectory if you wish, using an extended --standard-lib option.
HTH,
--SK
Ok, so I next tried:
python ./setup.py install --standard-liband SCons was working. I can happily report that v8 is compiled, and now I will play more with Clamato!
My theory is that since the SCons folks hacked the setup.py file, pip is using a newer version, so the option isn't common between the two. I might have to research that. might...
It is amazing to me how much knowledge is required to play in this space, and how much reuse of code is happening. I had to touch three languages just to get set up the way I wanted, and as I learn, I already anticipate the need for knowledge about JQuery, Smalltalk, CSS, JavaScript, and some web server technology (Seaside for me, please).
More about Clamato and Seaside later....
