how things go wrong between packages
Lex Spoon
lex at lexspoon.org
Sun Feb 11 17:25:38 UTC 2007
Most of the problems that came up in putting together the 3.9 stable
universe were the kind Viktor ran into with Classboxes. The
individual package is simply bitrotten and no longer plays nicely is
the current version of Squeak. It refers to a class no longer
existing, or it defines a class that now has a conflicting definition
in the standard image.
A more incidious kind of prolbem is those due to interactions between
multiple packages. There were 5 such problems I found with the 3.9
stable universe, simply by trying to load all of the packages
simultaneously into the same image. The problems were:
Package Algebraic overwrites the "new" method in class Matrix,
leading to other code crashing.
Zigzag opens and enters a new project when it starts, and thus
causes the package-loading thread to stop. This is a classic
problem from using a SAR for distribution. One way to repackage
this would be to post two packgaes, one with an mcz with the code,
another with the morphic demo project. Package Universes and
SqueakMap both can load projects just fine.
ODBC overwrites the TimeStamp class with its own, and the tools
quietly allow this. (Incidentally, people, we have had the
ANSI-standard DateAndTime since before any of the various TimeStamp
classes were posted. Let's use the good stuff.)
SmallDEVS defines a global variable Timer, which conflicts with a
class variable in Exupery. I wish the loader would allow this
situation, but in 3.9 it does not.
TimeZoneDB redefines DateAndTimeNow in such a way that TimeStamp no
longer works. Specifically, "TimeStamp now" returns a DateAndTime
instead of a TimeStamp. While I think we should deprecate
TimeStamp, we must keep it working for now due to all the packages
still using it.
By the way, I found it hard to debug where these problems came from.
I'd see a crash in one package, and then have to figure out why, for
example, Matrix no longer functions correctly. I don't know what went
wrong; either we need to use Monticello more, or we need to update
Monticello to provide more help when these overwrites happen.
Lex
More information about the Squeak-dev
mailing list
|