After hours of frustrated attempts, I finally managed to get a working Squeak development image with both Seaside and Glorp loaded–with invaluable help from Ramon Leon of On Smalltalk fame, who found out what I was doing wrong. The image is built upon the full 3.9 Squeak image, and was tested on both Windows and Linux.
It took me a few tries to get Glorp loaded into the image since the port was created for the 3.8 release, but it seems to be working well now. I had to patch a couple of methods, and now most of the tests pass (only three out of seven hundred are failing now, and I believe one of them is too version specific and should be rewritten anyway). This version requires PostgreSQL 8.2 with plaintext authentication enabled.
If you are interested in giving Smalltalk a try, Squeak is a good way to start. This development image requires only the stable release, which can be easily found on the Squeak site, a nd will work on any of the support platforms.
You know your financial situation is critical when you need to borrow money from your son, who is only two-and-half years old–and he only consents if you agree to pay him a 150% of interest for a single day.
In the past few days, I downloaded and briefly tried a bunch of different Smalltalk implementations, trying to decide for one of them. There are dozens of different implementation, each with its own pros and cons. The language itself is, obviously, the same for all implementations. What makes each implementation unique are the kind of environment offered to the developer, which can vary from a simple command-line workspace to packages allowing a developer to build and deploy applications or services to multiple platforms.
One of the first things I noticed about the implementations was the price of some of them. There are free implementations, of course, and non-commercial versions of most of the paid ones. But some non-free versions, like VA Smalltalk, can cost upwards of eight thousand dollars. For others–like VisualAge, from IBM, and Cincom Smalltalk, from Cincom–I couldn’t even find the price. I don’t want to imagine what they would cost for a single developer or a small company. In my opinion, if a company has to hide the price of a product, it’s always beyond the reach of mere mortals.
Both Cincom and Object Arts make free implementations available for non-commercial development: Cincom with its VisualWorks product, and Object Arts with Dolphin Smalltalk. Dolphin Smalltalk is a purely Windows implementation, much like Smalltalk MT, from Object Connect.
As I intend to develop both desktop and Web applications, my primary choice, of course, would be an implementation with support for both tasks. For Web applications, I’d like to use Seaside and Glorp, a requirement which narrows the playing field. On top of this, I’d like to use an implementation supporting both Windows and Linux. There’s only one implementation that fits those criteria: Cincom’s VisualWorks.
There’s also Squeak, which fits those requirements to a certain extent but whose implementation is too geared for educational use, and whose own version of a graphical interface is too weird and changes too much for my tastes. It’s a fast and good implementation, but not what I’d like to use now.
At the moment, I have Squeak, Smalltalk MT, Dolphin Smalltalk and VisualWorks running on my computers. Smalltalk MT and Dolphin Smalltalk are excellent products, very polished, which is kind of expected since they only run on Windows and can afford to adopt all the conventions of that plataform. On Linux, I have Squeak (just for the fun of it) and VisualWorks. VisualWorks is very complete, but lacks some polish in terms of GUI development. On Windows, it uses its own components and on Linux runs on top of OpenMotif. As far as I know, there’s no support for Qt or GTK.
With all those differences, I wonder if that’s one of the causes behind the lack of enthusiasm about a language that, for all accounts, is still way ahead of its time. Even the fact that it’s based on images is not a problem considering that the possible objections for that–lack of “proper” executables and team development–have been addressed a long time ago. I can understand that Lisp failed to reach mainstream acceptance because it’s too esoteric. But Smalltalk is a normal imperative language, with a simple and powerful syntax. I don’t know if a standard implementation would make it more acceptable in market terms, but it would certainly make it more interesting. I guess that’s why people are interested in #Smalltalk, which is based on .NET. Unfortunately, it isn’t ready for production yet.
Those considerations apart, Smalltalk remains a mature and extremely relevant language. Seaside and Glorp, with their conceptual similarity to Rails and ActiveRecord, are giving it a lot of visibility now and I wouldn’t be surprised if more public commercial applications based on that combination started appearing this year. Undoubtedly, most languages in use today would gain a lot with a growing Smalltalk user base.