About MC for managing the image
Andreas Raab
andreas.raab at gmx.de
Sun Sep 18 19:39:23 UTC 2005
Hi -
> The implications with this setup is that we have to produce often an
> image (validate a configuration of changes working together) and
> this can be quite painful. At least they are a lot of try and error
> when there are a lot of dependencies between packages.
In my experience that's a sign that a) you haven't found a good package
structure and/or b) you don't test early enough. In the first case the
effect is that higher-level changes get intermangled with lower-level
changes (that do in fact require careful folding into a running system).
An indication towards that point is the effect that the Kernel package
has (I think) the most revisions, where clearly it is one of the most
stable packages (if it isn't we're in big trouble) and should have the
least number of modifications. The same is probably true for Morphic at
this point - you *need* a better package structure for Morphic which
makes clear when you touch the critical parts (requiring very careful
testing) and when the non-critical ones. In comparison, in Tweak I can
typically tell by just looking at the package name whether this will
require any effort to make sure it loads correctly or not.
It is also really important to test "early enough" whether you can load
a package or not after you've done a modification. Unfortunately, you
guys are somewhat handicapped since you don't have an automatic default
update mechanism like we're using in Tweak. When I post a new version of
a package that has even the slightest chance to affect anything I
immediately get a fresh image, hit update and test it. Cost me perhaps
twenty seconds but if it doesn't work I can easily either post an
appropriate configuration or make a change to the package to make it
load and post a new version of the package. I really couldn't imagine to
work like you do, e.g., make a whole set of new package versions, try to
load and figure out where and why it dies.
> Bert I have the impression that using package dependencies with a
> root package (ie havgin Squeak and all the image package as
> required) would help to minimize inter package dependencies,
> now why do you use your script (the explicit list of packages)
> instead of required package. Is it because you can push that in the
> update stream?
Early on we looked at using dependencies but they didn't work very well
for what we wanted to do. Most importantly, if you have a newer version
of a package it will load the older version instead (VERY bad). There
were also some serious issues with nested dependencies (Bert and I had a
lot of fun figuring that out). And keep in mind that dependencies are
not as good as a load-order since they typically only specify a partial
relation (A dependsOn: X and B dependsOn: X does not specify whether A
is loaded before B or vice versa) whereas we wanted to make sure that
the updating process uses a single well-defined load order for everyone.
Cheers,
- Andreas
More information about the Packages
mailing list