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