[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest preview information].

It’s been awhile since I’ve done a major overhaul of the GLASS tools, so it’s about time to get a new update of the tools into circulation. Even if it is a preview.

As reported a couple of weeks ago, I updated to the latest OmniBrowser package in order to get the MC2 UI to work. Technically, I’ve been on vacation the last two weeks, but a major snowpocalypse in Oregon put the kabosh on plans to head to Cannon Beach with the doggies, so I’ve found myself working on the tools.


The first task was to update to the latest OB-Standard tools. In the last year a lot of work has been put into the OB-Standard tools. David Röthlisberger and Damien Cassou have been busy producing some pretty nice OmniBrowser-based tools. Besides merging the code, I fixed some long standing GemTools problems:

  • window updating – now when you save a method in one window, the code will be updated in another window.
  • window colors enabled.
  • Version browser buttons.
  • Monticello Patch browser menu includes browse, implementors, and senders.
  • eliminate use of FileList for defining directory-based monticello repositories (too slow over GCI!) – now you just supply a path string.
  • Gerhard Obermann enabled drag drop for method recategorization.


Next on the agenda was to update to the latest OB-Tools. Lukas Renggli has implemented a full range of tools using OmniBrowser, including a Debugger, Inspector, FileBrowser, ProcessBrowser, Workspace and Transcript . So far I’ve integrated all of these tools except the Transcript – right now I use the client Transcript. Notable fixes and improvements include:

  • inspectors embedded in debugger window – the new debugger almost looks like the debugger that your Grandpa used:).
  • automatic context selection after a step in the debugger.
  • eliminate the chasing inspector – replaced with a standard inspector. I think I’ll miss the chasing inspector though.
  • out, through, and step to selection in debugger
    • out steps until execution leaves the current context, either via return or by entering a block.
    • through steps until execution returns to the home context (useful for stepping through block execution).
    • step to selection steps until the selected step point is on the stack.

BTW, if you have free time and the inclination, Lukas is looking for someone to take over development of the OB-Tools. We are using and maintaining OB-Tools for GLASS, so I will be chipping in with fixes on an occasional basis, but I can’t commit to the task of Squeak-specific updates – at least right now.

Package Universe, Pharo and Mars

For this round of development, I started out using a Squeak 3.10 basic image (Squeak3.10-7159-basic). As a consequence, the formula for creating the GemTools client image was fresh in my mind so I decided to create a package in the Package Universe for the GemTools-Client. With the Pharo beta coming up and the recent announcement of Mars 0.1, it will be useful to allow folks to build their own GemTools-Client without needing to rely on us to supply the client image.

My first test of the GemTools Client package was to load it into Pharo and I’ve been doing my development in Pharo since then.

New GemTools Launcher

With the addition of the new OB-Tools, I needed to figure out a way to provide easy access to all of the new tools, since button real estate is in short supply in the existing Transcript window. I briefly considered replacing the World menu with a GemTools-specific world menu, but finally faced the fact that I’d need to rework the Transcript window from scratch.

I’ve been planning on reimplementing the Morphic windows in OmniBrowser for a long time, so I decided to rewrite the new window using OmniBrowser and do something with the Login window while I was at it. I combined the Login window and Transcript window functions into a single Launcher window. The screenshot below is from a Pharo dev image (click on the image for full size view):


There’s also a new OmniBrowser-based workspace window with a tabbed interface contrbuted by Gerhard Obermann.

The only remaining non-OmniBrowser window in GemTools is the Test Runner window and I’ll be taking a run that pretty soon.

Having all windows implemented with OmniBrowser is important so that native window UIs like Mars, which is implemented in Cocoa runs on top of OmniBrowser,can be used for GemTools.

Preview for the Brave and/or Curious

I am still working the new GemTools with about 10 items left in my ToDo list, but if you’re brave and/or curious and willing to provide feedback, then I encourage you to take the new GemTools for a spin. Once you have updated your GemStone repository to GLASS.230-dkh.182 or later, you will have to use the new tools – the old client tools will no longer be functional.

First you’ll need to update to the latest GLASS package on the GemStone side (GLASS.230-dkh.182 found on GemSource):

  1. Before loading GLASS.230-dkh.182 you need to
    1. evaluate the following expression in a GemStone workspace:
      • SystemChangeAnnouncement compileMethod: ‘item: ignored’ category: ‘accessing’.
    2. turn off auto migration.
  2. After the package has loaded (if you are using the Monticello Package browesr), you’ll get a walkback complaining about #refresh. Close the walkback, press the commit button [updated 1/4/2009], and shut down your old GemTools image.

Remember once you have updated your GemStone repository to GLASS.230-dkh.182 or later, you will have to use the new tools – the old client tools will no longer be functional. This is where the brave part comes in.

Now you need to prepare a new GemTools client image. I’ve used Squeak 3.10 vm with the Squeak3.10-7159-basic image and the Pharo vm with the Pharo-Dev 10185 image (at this writing Pharo-Dev10196 is the latest dev image). I haven’t tried 3.9 yet, but I have no reason to believe that there will problems loading the code. Once you’ve downloaded and launched the base image of your choice:

  1. Open the Package Universe browser (Universe browser a couple of menus deep in Pharo).
  2. Click on update list from network.
  3. Open the Network category.
  4. select GemTools-Client version 0.324 or later (ignore the GLASS Client packages – I was having trouble with getting the packages defined).
  5. Click on select package.
  6. Click on Install Selections.
  7. When the load is done, evaluate ‘OGLauncher open’ in Squeak workspace.
  8. Click on the Edit Session menu item with the Glass session selected and fill in the login information.
  9. Alternatively, use the New Session menu item if you need to add more login information than provided by the Basic template.
  10. click on the Login button and have fun.

I’ve only been using these tools for several days, so I am very interested in feedback. If you run into walkbacks or are simply confused by the new interface submit a comment to this post, or send mail to the Beta mailing list (you have to join first). If you have no problems, that would also be useful to know.

I will be continuing to work on the new tools for the next couple of weeks so its worth checking the Package Universe every once in a while to see if I’ve published a new version. Also be prepared for changes to the way some of the tools work.

I expect to make a general announcement of the new tools in 3-4 weeks – I’m hoping to get the Test Runner into OmniBrowser and take a run at the OB-Enhancements and OB-Refactory before all is said and done. I’ll have to update the Terse Guide to the GLASS Tools.

Don’t forget to send feedback!

and… Merry Xmas!


[1] Photo by jsalvino via Flickr (Creative Commons).