Friday, April 27, 2012

VisualWorks

Currently I'm working on Faish, a Prolog variant. Eventually I'll need a reasonable user interface, and to package the result for people to install. Therefore, I'm planning to move from Squeak to VisualWorks, as I would be pretty ashamed to expect "end-users" to use Morphic. I could use GtkSqueak (having some experience with that), but that's plan B for now as I'd need to spend time repairing and updating GtkSqueak.

Cincom: you're doing it wrong!
  1. You guys make it really hard to get to the software.
  2. My first attempt did not work; the email never arrived.
  3. WTF - a .iso file!? I just want the Linux VM and whatever image your Smalltalk uses. Plus I'm seriously not going to write it to a CD.
So now I wait for the eventual completion of a flippen 514MiB download, which probably includes a heap of stuff I don't even want.

I also tried moving to Pharo 1.4. Pharo: you're still not good.
  1. I wanted to use ToolBuilder. It's not in the image. That's okay; I'll install it from a version I was working on before.
  2. Monticello had a fit. Some classes in the .mcz file declare instance variables that already exist in superclasses. Instead of a recoverable error message, I get some exception and a debugger.
  3. I try it again. This time, the image seizes up when loading the package. I press alt-.. The VM quits to the shell (!?).
  4. Eventually I manage to get it loaded by various magical incantations. I then open some other window and I get an emergency evaluator (obviously something I did broke Morphic, which is standard behaviour).
Obviously, ToolBuilder needs fixing, but how does one fix a package if you can't even load it?

THIS is the reason I was working on SecureSqueak, and my latest work (unfortunately stagnant now) was working on remedying this:
  1. You should always be able to load a package, even if it is broken.
  2. Loading a package should not affect the usability of the rest of your image.
  3. The UI should never freeze up. Never, unless the hardware has failed.