Saturday, October 25, 2008

SecureSqueak - what is it exactly?

I've decided to start a blog about SecureSqueak, and maybe other Smalltalk-related topics.

SecureSqueak is Squeak modified to run untrusted code. Code should be able to be loaded from a remote site and executed locally without any damage or unauthorised access to the local system. It is intended to be a kernel for my other unnamed project which is currently going by the name of "Unnamed Grand Project".

SecureSqueak has been in stasus for a while while I pursued a rather less worthy topic: Warzone 2100. Yes, I wasted a few hours of my life!

So now I'm back in action. The next few items on the agenda are:
  • Get Subcanvas working. Subcanvas is an enhanced version of the Canvas class which will provide the basic graphics and input handling to SecureSqueak. Subcanvas is also a test bed to see how well I can write code using my recently developed Namespaces for Squeak.
  • Write another simple SiteBrowser package. This isn't part of SecureSqueak but rather the UGP. This will let the user navigate through distributed objects.
  • Get the package distribution (i.e. remote code loading) for UGP working.
Igor Stasenko provided some valuable feedback on the design of Namespaces. Once I've finished the above, I'll be looking at refactoring the namespaces system and put the code for managing namespaces, classes and methods in a namespace itself. Currently the code for managing namespaces sits in the SystemDictionary and is saved at, but I eventually plan to deprecate and perhaps even remove the SystemDictionary from the image.

Want to see the code? Well, it's scattered all over the place:

Documentation is at
Code in the SystemDictionary (i.e. most of it) is at
Code in Namespaces and image files are stored at