How Do You Do Business Apps? (Morphic Design Philosophy)

Paul Fernhout pdfernhout at kurtz-fernhout.com
Fri Feb 25 22:04:09 UTC 2000


Bob Arning wrote:
> 
> On Fri, 25 Feb 2000 11:08:58 -0500 Paul Fernhout <pdfernhout at kurtz-fernhout.com> wrote:
> >Unfortunately, with Morphic,
> >every application is only a couple mouse clicks away from disaster --
> >like when I played the solitaire game and accidentally moved a card off
> >the game top.
> 
> "every application", Paul? If the solitaire game has a bug, that's one thing, but to extrapolate from that to every Morphic application quite a leap. Can you be a bit more specific about this lurking disaster?
> 
> Cheers,
> Bob

I remember when my wife years ago was teaching a novice computer user to
use a Paradox program she and I were developing for him. One of the very
first things he did by accident was hit something like CTRL-SHIFT-O
which exited to a spawned command prompt shell. Both were very
surprised. It took quite a while to figure out what went wrong (it
looked like the program had crashed...)

For example, just a couple hours ago ago, I started FreeCell, clicked
"submorphs", pulled a card off the table and dropped it. Then I dragged
the card over FreeCell and left it half on the table. Squeak/FreeCell
started endlessly cycling with a weird black pattern striped in the path
area I had dragged the card. I was unable to move or grab the card as it
bounced around three locations. I was unable to get menus, or do
anything, except terminate Squeak. About five clicks I guess, and a
couple drags.

Or, I can go to Tetris (way cool app) and again using submorphs, delete
the control panel for rotating blocks. Can't play the game anymore.
Three clicks I think.

Or, I can run the SameBoard game, do an alt-click on a piece and hit the
blue halo button, and I get an exception window in the left corner and
Squeak is hung.  Two clicks I think.  

The moral is stay away from the ALT and CTRL keys I guess? 

Nowhere in Morphic can I undo deleting a component of an app, or undo
moving part of an app. MacApp had this kind of support (undoable
commands) a decade ago. Yes, there is a save and revert in morphic, but
this is equivalent to saving a file. There isn't the fine grained Undo
one might expect to be pervasive throughout a design system.

My point is, if you create a beautiful system to do a task, you don't
want the users (including yourself) unintentionally modifying that
system. You may also intentionally want to make it difficult from users
to change some things (the cards in the game), while leaving it easy to
change others (the location of the cards within the table).

OK, perhaps one can disable the submorphs menu in a shipped app (or
selectively for development tools), and disable some other features. I'm
not sure of everything one would need to do for this. But the issue
perhaps is, can this be done in a systematic way to varying degrees? 
This will take time to resolve, in the meanwhile it would be nice to
have a conventional system like WindowBuilder/Pro that looks as good as
Morphic and is widget based so I can ship today (ex-ObjectShare people
-- would WBP be easy to put under Squeak?). Plus, I'd like a system that
does not do unexpected things. I must be unusual, because just about
every time I try to use Morphic seriously I end up generating debugger
dialogs and usually eventually hang Squeak one way or another, usually
after clicking somewhere odd or dragging something strangley.

I should say I probably come across as totally bashing Morphic and I
don't mean to. Morphic is beautiful. It looks great. I love the shadows.
It has many cool widgets, several good demos, neat ideas for loading
apps (like the programming tutor with the 2D turtle). It is a neat
system. I like the conception behind it -- both prototype ideas and
direct manipulation ideas. Events and widgets are the way to go over
MVC. 

Yet, it is perhaps because of Morphic's very complexity, malleability,
and richness that I find it unapproachable, both for app development and
for systemic modification. Maybe this is somewhat like when the original
ST-72 syntax was found too general (where you could write your own
parser for each class) and the unary, binary, and keyword syntax was
settled on for every class as a nice compromise. 

Here's the typical situation I face right now with Squeak: I'd like to
make a system that includes an HTML viewer I can give to other people,
say, related to the Bootstrap Institute http://www.bootsrap.org Open
Hyperdocument System project. The HTML viewer I see in Squeak looks
great, but it is in Morphic. So I'm stuck -- because I know I can't give
that to end users who don't know Squeak. So I can stare wistfully at
Scamper in the store window, but I can't take it home to make that app.
I need to duplicate something like Scamper under MVC which takes more
time than I have. So, I'm more likely to turn to a system that has such
support in a shippable way. So, all that great work done on Scamper is
inaccessible to me, and conversely, I'm less likely to go out of my way
to improve Scamper or make any changes Scamper could use. That's one
problem with having only an old incomplete GUI and a new experimental
GUI under Squeak.

-Paul Fernhout
Kurtz-Fernhout Software 
=========================================================
Developers of custom software and educational simulations
Creators of the Garden with Insight(TM) garden simulator
http://www.kurtz-fernhout.com





More information about the Squeak-dev mailing list