Packaging the programming tools

Bert Freudenberg bert at
Mon Jul 18 13:57:47 UTC 2005

Am 18.07.2005 um 04:17 schrieb Andreas Raab:

> Folks -
> I've been working on detangling the current tool set from the rest  
> of the system since I wanted to be able to replace the current tool  
> set with something more appropriate for Tweak. It turns out that  
> with a little restructuring of responsibilities this isn't all that  
> hard and so I'm happy to announce the probably only Squeak image in  
> the world which has no programming tools whatsoever (!):

I'm pretty sure there have been images stripped of all tools, and  
Spoon of course takes that to the extreme. However, being able to  
comfortably load and unload the tools is a Very Good Thing :)

> [6.3MB]
> If you grab this image you will find that you won't be able to open  
> a browser, a change sorter, workspace etc. not even a debugger[*1]  
> simply because none of these tools are present.

That means I should not make any errors? At the moment, for any  
exception I get an ominous "Syntax Error: Message pattern expected"  
notifier, followed by a nil>>MNU in the Decompiler, then follows an  
endless loop  of notifiers for UnhandledErrors. Pressing Alt-.  
freezes the image ater answering the notifier.

> [*1] Try browsing the sender of some message or a class - you will  
> very quickly notice why I don't like the usage of "AppRegistry  
> default" since it raises completely needless errors when for  
> example trying to browse a class -- compare this with the notifier  
> you get when trying to browse a selector which uses ToolSet's  
> interpretation of "proper" AppRegistry behavior.
> However, since this is not very interesting, you can just load the  
> standard tools package from
> [450k]
> install and use it.

Hmm, it requests my author initials ... where does that come from?

> And when you're tired of it, simply unload it from Monticello[*].  
> Needless to say, the tools package does not leave any obsolete  
> classes or undeclared references behind, it comes and goes cleanly.
> [*] After unloading execute the code in the left hand panel - it  
> turns out that #unload is not executed when unloading packages from  
> Monticello (we *really* need to fix this!) probably because the  
> #unload method is removed before the class.

Done. See attachment. Methods are not removed one-by-one anymore when  
the whole class is removed.

> But wait, there is more! Since the current tools package is  
> somewhat messy and depends directly on Morphic and MVC I decided to  
> build an alternative which exclusively depends on ToolBuilder. It's  
> called the "PlusTools" (all the names have a "Plus" in the name,  
> e.g., FileListPlus, TestRunnerPlus, ClassBrowserPlus,  
> DebuggerPlus...) and loadable from:
> [300k]
> And of course, you can load and unload both tool sets at the same  
> time if you'd like to. Note that the point of this exercise is not  
> only to be able to replace the tools for Tweak - it is equally to  
> show that a Squeak system can easily come without *any* specific  
> tool support, squeakmap, even monticello (I only left MC in the  
> image because you'd have to load it anyway to get to the tool sets)  
> just as long as you have a way of loading code (e.g., compiler and  
> change management). Therefore there is really no need whatsoever to  
> put all of the programming tools into a "basic" Squeak image.
> And finally, the PlusTools should be helpful for further detangling  
> work as they depend on ToolBuilder and not on Morphic or MVC (there  
> might still be a few remnants but that's easily fixable).
> For those of you interested, here are the major changes that I did  
> to make the above possible:
> * Refactoring of ChangeSet and ChangeSorter - all of the actual  
> change set related stuff had to be moved out of ChangeSorter and  
> ChangeSet itself had to be moved over to the System package and out  
> of Tools.
> * Moving of the breakpoint, tallying, file contents browser (diff  
> etc) out of the Tools (right now all of these are in System)
> * Introduced FileServiceRegistry to avoid abuse of FileList
> * Introduced ToolSet AppRegistry to support various tool sets
> I also had to do some significant shuffling around between packages  
> to get everything in order and (un-)loadable but most of these  
> changes were non-invasive. If you are interested the full  
> repository is also available at:
> [32MB]
> and contains a few more (already unloaded) packages and fixes going  
> back to the original 3.8 versions from

Some more bugs I encountered:

* MessageNotUnderstood: Inspector class>>openOn:
* Endless loop in ToolSet class>>explore:

Ah well, fixes attached, too :)

- Bert -

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Tools-bf.18(ar.17).mcd
Type: application/octet-stream
Size: 2280 bytes
Desc: not available
Url :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: System-bf.4(ar.3).mcd
Type: application/octet-stream
Size: 1737 bytes
Desc: not available
Url :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Monticello-bf.265(ar.264).mcd
Type: application/octet-stream
Size: 21118 bytes
Desc: not available
Url :

More information about the Packages mailing list