Smalltalk: Variations on a theme

February 7th, 2007 § 6 comments

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.

§ 6 Responses to Smalltalk: Variations on a theme"

  • A very interesting post, and a good summary of how things stand in the Smalltalk world at the moment.

    You might be interested to know that there’s a couple of discussions on the Squeak developers mailing-list (see http://news.gmane.org/gmane.comp.lang.smalltalk.squeak.general ) at the moment about Squeak’s current strengths and weaknesses, and how it should develop in the future.

    Seaside and the OLPC project are starting to re-focus a lot of (overdue) attention on Smalltalk, and as you say, this can only be good for all concerned.

    Cheers,
    Michael

  • Cincom doesn’t publish prices as part of its general policy – I don’t always agree with that policy, but there it is.

    In any event, Cincom charges one of three ways for Cincom Smalltalk:

    1) End user pricing – we charge by the number of deployed seats for the application

    This is typically appropriate for in-house, client applications

    2) Per-CPU pricing – we charge by the number of CPUs in the server you deploy on

    This is typically appropriate for in-house, server based applications

    3) VAR Pricing – we charge a royalty based on the Smalltalk based sales to external entities

    see here:

    http://www.cincomsmalltalk.com/CincomSmalltalkWiki/How+does+VAR+Pricing+work

    for an explanation of the simplest version of that. In general, you can pay more upfront in order to lower the royalty percentage.

  • Alan Knight says:

    Glorp is actually extremely portable between Smalltalks. It is developed primarily on VisualWorks because, well, I develop primarily on VisualWorks. Ports exist to VisualAge, Squeak, Dolphin, GNU Smalltalk, and Smalltalk/X, and are generally not difficult to do for others. Seaside relies on some trickier constructs, but I believe is available in at least VisualWorks, Squeak, and Dolphin.

  • Ronaldo says:

    Michael, thansk for the comments. I haven’t followed the Squeak mailing list for a while but I’ll subscribe again. Squeak was one of the first Smalltalk implementation I had access to, and I still enjoy its playfulness. Programming languages should be happy. :-)

    Anyway, I hope people will see the Smalltalk bits in the OLPC project as a way to try a new language. It would be cool to see more and more applications becoming reality because of this. I really hope it pays off: it was a very enlightened decision by the OLPC designers. :-)

    James, thanks for the clarification. It was very helpful, though it would be nice if this information was easier to find on the site.

    Anyway, the VAR pricing puts Cincom Smalltalk much closer to Dolphin Smalltalk and Smalltalk MT with the added bonus of a cross-platform implementation. I’ve been using the non-commercial version on and off for a couple years, and it has been really solid.

    Alan, wow! That was great, getting a comment from the Glorp creator and one of the most prominent persons in the Smalltalk community. I beg your pardon for the bit of fan-boy behavior. :-)

    Thanks for the feedback. Glorp is really great and I only wish Seaside and Glorp could gain as much exposure as Rails. They are a mind-blowing way of creating web-based database applications. Anyway, do you have any pointers on the GNU Smalltalk port of Glorp? Dolphin, Squeak and VisualAge are on the SourceForge packages but I found no mention of the GST port there or in any other site except for a few mailing list references.

  • Pedro says:

    Try squeak-dev its a image oriented to the developers, instead of educational

  • […] at Reflective Surface there is a rather nice post that compares some of the various Smalltalk implementations currently […]

What's this?

You are currently reading Smalltalk: Variations on a theme at Reflective Surface.

meta