You are currently browsing the monthly archive for December 2008.
[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest preview information].
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.
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):
- Before loading GLASS.230-dkh.182 you need to
- evaluate the following expression in a GemStone workspace:
- SystemChangeAnnouncement compileMethod: ‘item: ignored’ category: ‘accessing’.
- turn off auto migration.
- evaluate the following expression in a GemStone workspace:
- 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:
- Open the Package Universe browser (Universe browser a couple of menus deep in Pharo).
- Click on update list from network.
- Open the Network category.
- select GemTools-Client version 0.324 or later (ignore the GLASS Client packages – I was having trouble with getting the packages defined).
- Click on select package.
- Click on Install Selections.
- When the load is done, evaluate ‘OGLauncher open’ in Squeak workspace.
- Click on the Edit Session menu item with the Glass session selected and fill in the login information.
- Alternatively, use the New Session menu item if you need to add more login information than provided by the Basic template.
- 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!
On Tuesday we announced the release of GemStone/S 64 version 2.3.1. This release is primarily a bugfix release for our commercial customers. The critical bugifixes are not likely to affect anyone using Seaside. For complete details please refer to the Release Notes.
New installations should always use the latest available product release, but for this particular release unless you are suffering from one of the bugs that has been fixed you can safely defer the upgrade.
2.3.1 ships with GLASS.230-dkh.176 so you should update to GLASS.230-dkh.177.
When we last left our weary traveler, he was so close to getting performance results for Single Session per VM, that he could almost taste it. Alas, a perfect storm converged on his cube and months later he remains no closer to those tasty morsels than when he started.
Though stalled on the scaling front, since the release of 2.3 the most interesting thing is that SIXX has been ported to GLASS and is included in GLASS.230-dkh.177. Note that GLASS.230-dkh.177 isn’t the latest version of the GLASS.230 package, but it is the recommended version.
SIXX (Smalltalk Instance eXchange in XML) looks like it will be useful for moving object graphs from Squeak to GLASS (and vice versa). In late September, Norbert Hartl was wondering how to get the data from the RDB used in his Squeak-based Seaside application (using GLORP) into GemStone and in the ensuing conversation it came up that SIXX would be a good candidate and the race was on. At this point I think that Norbert has been able to transfer his data from the RDB into GemStone.
A number of bugs have been fixed in GLASS.230-dkh.177 as well:
- GLASS bugs:
- fix bug 39539 – ‘Sixx errors in seasidetst’
- fix bug 39513 – ‘#withBlanksTrimmed and _matchPatternNoCase: not implemented in QuadByteString’
- fix Bug: 39574 – ‘MASelectorAccessor>>createVariable: problematic when instances on execution stack’
- Pier bugs
The first project to blow into town was SOAP. A customer of ours was interested in using SOAP with GemStone so I ported SoapCore to GLASS. As part of the effort I updated the SOAP-Examples to include some new interoperability tests.
I was able to find SOAP 1.1 servers still running at 4s4c, Microsoft Soap Interop Server and EasySoap++. Predictably, not all of the tests passed. The errors occurred in the way that exceptional values and errors were handled by the server (i.e., not the client’s fault:). The parts of the tests that ‘drove down the middle of the road’ passed against all three servers. Also predictably, I found and fixed subtle bugs after adding tests for each new server.
Just as I caught my breath with the SOAP work, Monticello2 (MC2) popped up on the radar. This time it was Julian Fitzel blowing into town and the town was Vancouver, BC. Julian was planning on talking to Colin Putney about MC2 and Seaside2.9 and I was interested in participating in that conversation.
Seaside2.9 has been broken up into a whole bunch of components and the dependency graph for the components is pretty complicated. For the short term, Seaside Universes will be used, but the longer term belongs to Monticello2.
I’ve been searching for a configuration solution since at least last March, but haven’t found a good solution in Monticello(1). I want something better than the GLASS package that I currently use to communicate configuration information. MC2 looks like a very good candidate.
In preparation for the conversation with Julian, Colin, and Avi, I decided that it would be a good idea to port MC2 to GLASS. I finished the initial port in a couple of weeks (in time for the meeting) and have continued working on MC2 since then.
The most recent diversion came in the form of OmniBrowser. In order to get the last bits of the MC2.0.29 UI working, I needed to update to the latest version of OmniBrowser. Since I was building a new version of the GLASS client, I decided that it might as well be based on Squeak 3.10.
As of yesterday, I have been doing all of my development using the new GLASS client. Overall, 3.10 appears to be more stable than 3.9 (I have yet to have the UI fritz out on me when I close a debugger). It’s not completely free of bugs, but I think I can actually fix the bugs that I have been seeing.
I plan on continuing doing development for MC2 and the new GLASS client in a separate branch of the GLASS package. Once I feel that the tools are stable I will merge the new OmniBrowser code into the main GLASS package branch.
Finally, I haven’t spent much time in the last several months on Seaside 2.9. We have a functional port, but it hasn’t been updated for several months. Seaside 2.9a1 was announced last month and 2.9a2 is imminent so we will have to get our butts in gear. James is looking forward to spending some quality time on Seaside2.9 very soon now and I’ll make time for Seaside2.9 before the end of January.
Niall Ross (via James Robertson) has written a comprehensive and detailed report on most (if not all) of the talks at Smalltalk Solutions, ESUG and the VASmalltalk User Group Conference in Frankfurt. Even if you attended one or all three of the conferences, it is worth reading Niall’s notes, since he may have picked up on something you missed.