Cassowary anyone?!

Andrew Berg andrew_c_berg at
Wed Feb 12 05:23:08 UTC 2003

Yeah, I know that this message passed your inboxes months ago, but I have > 
1200 emails in my inbox.  :(  Nearly all of them are from the Squeak list.  

Years ago for a HCI class with Alan Borning at the UW, I used the C++ 
version of Cassowary to build a Delphi UI layout manager.  I used the 
introspection facilities in Delphi components to allow a developer to write 
a series of formulas describing relationships between the various UI 
elements.  I also made a little cassowary playground that worked like a 
mini ThingLab.

The thing that I found myself wanting from Cassowary was the ability to 
specify "brittle" constraints:  i.e. ones that once they were unsatisfiable 
they would no longer influence the outcome of the ones that were 
satisfiable.  If I had that I would have been able to implement things like 
sticky widgets, where they would 'magnetically' attach to the edges of 
their container using nothing but constraints with different weights.

Sadly, I no longer have that work.  It was with the rest of my academic 
artifacts that went away when the motor failed on an old Maxtor.


On Thu, 9 Jan 2003 20:11:31 +0100, Andreas Raab <andreas.raab at> 

> Josh,
> Thanks - by now I got various copies from people (thanks to all of you!)
> but this is the kind of thing that really _ought_ to be on SqueakMap
> (hint, hint!).
>> What are you thinking of doing with it?
> I'm looking into different ways of end-user friendly specification of
> "object compositions" (aka: layouts). Since I know that Cassowary was
> used for CSVG and other things I was wondering if it might be a good
> starting base for some more end-user friendly model than we have right
> now.
> This problem bugged me for a long time now - the AlignmentMorph's in
> Squeak used to require compositions of compositions of compositions of
> nested things and they just got in the way of "seeing the thing you are
> interested in" (namely some object of the composition). So I tried to
> generalize this into the layouts we have today but while they are more
> general they are also much harder to understand (lots of very generic
> properties with lots of unclear compositional effects).
> So what I am essentially looking for is some way of specifying "lots of
> dog-simple constraints" (like: make the left edge of one guy follow the
> right edge of some other guy) and provide some interactive means for
> specifying it - so that rather than having a set of generic properties
> the user gets a (possibly large) number of very concrete
> mini-constraints. Those need to be solved efficiently and that's when I
> got into thinking about the various constraint solvers.
> BTW, do you know if Cassowary can give feedback about constraints that
> cannot be resolved (perhaps even potentially)?! I'm interested in this
> because what I would like to do is give constant feedback about the
> composition you are building - so that when you add a constraint which
> "won't work" the system could indicate this by some means.
> Cheers,
> - Andreas
>> -----Original Message-----
>> From: squeak-dev-admin at [mailto:squeak-dev- 
>> admin at] On Behalf Of Joshua 'Schwa' Gargus
>> Sent: Thursday, January 09, 2003 7:32 PM
>> To: Andreas Raab; Squeak Mailing List
>> Subject: Re: Cassowary anyone?!
>> Hi Andreas,
>> My message to the list seems to have been lost, so I'm resending
>> to you and the list.
>> You can get Cassowary from:
>> What are you thinking of doing with it?
>> Joshua

andrew_c_berg at

More information about the Squeak-dev mailing list