Morphic
without Etoys
I am a software developer,
and want to write applications with rich and flexible GUIs. I love Squeak and
Morphic. But I believe current Morphic (i.e. Morphic in Squeak 3.7g) has too
much of what I'd call morphic applications, the biggest one being Etoys. So
what I did is to take a standard 3.7g image and remove what I believe to be
part of "applications" and not part of the "Morphic framework".
I also removed some non Morphic applications. Basically I removed Etoys, Flaps
and Project Navigator, some "optional" morphs (including Movies,
Books and GeeMail), Nebraska, Speech, Flash (but not Balloon), FFI, SqueakMap. SUnit
tests, and some network stuff.
These are the available
files:
Scripts (120Kb)
Image (5Mb)
I did this with several
scripts, with lots of stuff taken for #majorShrink and other maintenance
methods in Squeak. Having all the scripts will be useful to refine and modify
this shrinking process. For example, to generate a package with all the removed
stuff, so it can be loaded back again.
The work is done by several
change sets. The procedure to make the reduced image is as follows:
The image size is 5.5Mb. The sequential order of these scripts is actually the
order I did them, to the first ones are rather "brute force" and the
last ones a more detailed work.
The heart of all this is
SystemShrinker >> shrink . It does as follows
· self
setSimplePreferences.
"Some really make sense in a reduced Morphic. Others are just the way
I like them."
· self
emptyWorldsOfSqueak.
"Removes sample projects from the image."
· self
removeOtherProjects.
"Delete every project but the active one."
· self cleanUpEtoys.
"Remove Etoys and User Scripting state."
· self
remove3D.
"I don't remember if this is actually superfluous."
· self
removeStuffFromDiscardOddsAndEnds. "A subset of what's
there"
· self removeEtoysAndMorphicApplications.
"The big removal. Some of these are arguable, though"
· self
removeSomeEtoysClasses.
"A continuation of the previous one, removing classes instead of class
categories"
· self
removeAdditionalStuff.
"This removes some non-Etoys stuff. If not done, subsequent scripts
(a3, a4 and a5) needs removing any activity related to this non removed
stuff"
· self
removeFlapsAndSuch.
"I considered Flaps an End-User Programming tool. Probably wrong
decision."
· self
removeExtraMorphicStuff.
"Removes some incomplete of seldom used stuff (non-Etoys)"
· self
afterRemovingCleanup
"This, as #finalCleanup does not remove code, but cleans various
instances"
Any comment is welcome.
Juan Vuletich