Migrating to Pharo 1.4

Written on May 1 2012.

This blog post was written a long time ago and may not reflect my current opinion or might be technically out of date. Read with a grain of salt.

You’ve probably heard that Pharo 1.4 is out. This version contains many improvements (as software developers like to say) and some aspects have changed quite a lot.

One the Pharo team’s goal is to clean Squeak. Version 1.4 has made some critical steps toward this goal and more than 850 tickets have been closed. Impressive.

What is still lacking though is a detailed changelog of all the API changes. Sure, there’s a release note but hey what does Better headless support mean?

I’ve switched some of my projects from 1.3 to 1.4. I haven’t tested everything in production yet but here are my first surprises:

FS integration

The FileSystem (or FS) library has been integrated. FS is a replacement for the aging `FileDirectory`. Manipulating files is now much easier and the API is less chaotic than its predecessor. The `FileDirectory` is still there for compatibility reasons I guess but you shouldn’t use it anymore.

If you used the FileSystem library before, beware that the FS prefix has been changed to “File” (i.e., `FSLocator` becomes `FileLocator`). Update your code accordingly.

If your project has a MetacelloConfiguration that loads FS, you don’t need it anymore for 1.4

Startup scripts

That one was missing for quite a long time. Pharo will now look up in your home directory for startup file in the following order:


This has bitten me when deploying an a server. I used to launch my image with the following:


where `$STARTUP_SCRIPT` is the path to a `.st` file. That file was named `startup.st`. My startup script was executed twice without I realized it. It took me some time to realize what was going on ;)

Beware, it seems that this feature is not reliable (or not implemented?) on Windows.

No default browser

Pharo 1.3 used to be shipped with OmniBrowser (OB). This is not the case anymore and the default browser is now the basic one. No advanced features, no refactoring, plain boring.

The best choice is to load Nautilus, a browser developed by Benjamin Van Ryseghem. There is a job on the CI build server which contains the latest version of Pharo 1.4 and Nautilus.

Unfortunately, I had some troubles with it. When using the build from CI, loading seaside didn’t work. And when I load Seaside in a clean 1.4 image and then loading Nautilus, some strange problems occurs (like the font changes). I haven’t really investigated yet but that smells like bleeding edge piece of software.

The browser is pretty cool though and it is definitely a huge step from OB. My muscle memory is still trained for OB, which complicates the transition :p

All in all

This release is a good one, the Pharo team did an awesome job and I can’t wait to see what the 2.0 will look like. They apparently changed their release process for a time-based versioning (à la Ubuntu). Time will say if it’s a good choice…