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:

  1. Take a standard Squeak 3.7-5989 image and launch it. Close the three text windows. Remove the squeak logo. Empty the trash can. Remove the trash can.
  2. Open a File List. 'Install a1-Fixes-jmv.6.cs'.
  3. Install 'a2-Shrinking-jmv.35.cs'.
  4. Close the File list. Open a Workspace. Evaluate 'SystemShrinker shrink' and answer yes to all questions.
  5. Close the workspace. Close the 'Worlds of Squeak' window.
  6. As before, install 'a3-aPostShrinkCleanUpA1-8.1.cs' and evaluate 'SystemShrinker finalCleanup'. This step is slow. Please have patience.
  7. Install 'a4-MorphicCleaning.17.cs'. Evaluate 'FileList cleanObsoleteReaders; unregisterFileReader: Morph'
  8. Install 'a5-MoreMorphicCleanup.2.cs'. Evaluate again 'SystemShrinker finalCleanup'.
  9. Close all windows. Save and Quit.


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