August 2007


Aug 1, 2007: 13.  About Squeak


A previous BitsAndPieces was About Smalltalk, and is presupposed here.

Squeak is essentially Smalltalk 80 plus Morphic, as explained in About Smalltalk, and was created by the original developers of Smalltalk 80, with the help of others that form(ed) 'The Squeak Community' between 1996 and 2001, with the help of funding by Disney.

During the years 1996-2001 the original developers were known as 'Squeak Central', and indeed it were they who decided what was to be part of the releases, as these progressed from 1.0 to 3.0 in five years, with many inbetween versions with numbers after the dot.

As I also explained in About Smalltalk I found Squeak in July 2001 and spend a considerable amount of time and energy on it from 2002 - 2004.

After that I mostly gave up on Squeak and Smalltalk, although I still follow Squeak and VisualWorks. My reasons for this were mostly the following

  • I had come to some conclusions about the limitations of Smalltalk and Squeak, that I explained in About Smalltalk and will say a little more about below.
  • I did not at all like the lack of documentation of especially Squeak nor the style of writing such documentation and comments as there were.
  • To alleviate that I had written my own documentation, not in the common Smalltalk style, of over 2 MB text in html, directly usable in Squeak, but got all of 4 mails about it when I asked "The Squeak Community" to help me.

I had not expected great hurrays, but I had neither expected virtually complete silence, especially as "The Squeak Community" has/had many members who like to write many emails in which they do little else than enthusiastically congratulating themselves on the great excellencies of Squeak, Smalltalk, and "The Squeak Community" - and it seemed to me that if each of these writers, usually cock-sure about the great virtues of Squeak and Smalltalk, had written a few percents fewer raving e-mails and instead some code-comments and explanations, that Squeak would have been reasonably documented long ago.

After that my willingness to work for "The Squeak Community" ceased, also because of the abovementioned first point, and because, unlike most vocal members of "The Squeak Community", I am not a follower and my interests in programming were never limited to Smalltalkish things.

Besides, "The Squeak Community" fundamentally ceased with the effectual ending of Squeak Central (its members moved their interests and activities mostly to Croquet , which was not developed in quite the samen open style as Squeak, though this was also denied on a verbal level), and had to somehow get together and organized again.

This indeed happened, and Squeak continued to be developed, but more in a haphazard way than moved by a vision or clear end. It still goes on, though over the 6 years I have followed it quite a few of the writers of good code have stopped contributing code, died, got ill, or grew silent.

Also, I had myself concluded in 2003-2004, when I had taken a good look under the hood of Squeak and Smalltalk to write my own documentation, that - by my lights - fundamental mistakes had been made by Squeak Central.

This I will explain in the rest of this piece, but to understand it you first need to have read About Smalltalk and especially Point 1 and Point 2.

Also, it is true that after a fact happened, hindsight tends to be much better and certainly is much easier than foresight before the fact happened, but even so  it seems to me that the original developers of Smalltalk made at least three fundamental mistakes when they developed Squeak in 1996 on top of Smalltalk 80.

Here they are:

  • 1. Instead of using the recently developed highly capable graphical OS of Windows or Mac, the graphical interface of Smalltalk 80 was used to add Morphic onto, in an attempt to create "Multi-Media Applications For The New Millenium".
  • 2. Instead of trying to escape the limitations of a Smalltalk 80 kind of image, and - for example - at least adding a lot of support in the VM for modern graphical OS-s, a 1970ies technology (then leading) was used to code for the 2000-era.
  • 3. Instead of - at long last! - properly documenting Smalltalk 80 or Squeak (in non-anthropomorphic English, and with plenty of good code comments to facilitate learning), the developers simply added a lot of obscurely documented or wholly undocumented code on top of an obscurely documented code-base.

It may be argued - mistakenly I believe, but let that rest - that the third  point is too much intertwined with my own tastes in English and code documentation.

The first two points, that are interrelated, seem to me real major mistakes, given the supposed ends of Squeak - "Multi-Media Applications For The New Millenium" - and the arisal in 1995 of graphical OS-s (Windows, Mac, later Linux) that were much more powerful than Smalltalk 80.

One can understand the choices that were in fact made (it was the easiest way to proceed, for example), but it seems to me that, with the funding of Disney, and for people as capable as Kay, Ingalls, Kaehler and team - who are also not shy about their own excellencies - it should have been quite possible, and highly desirable, in view of the end of "Multi-Media Applications For The New Millenium" to rewrite the VM of Smalltalk 80 and Squeak so as to be capable of using much of the Windows or Mac Api.

It happened for VisualWorks, it happened for Dolphin, and it should have been done for Squeak, especially given the pretensions about it, and the fact that the original developers of Smalltalk 80 also developed Squeak - and did so in the first 6 years of virtually universal graphical computer interfaces of far greater capacity than was possible in 1980 or with Smalltalk 80.

Instead, Squeak turned out, after five years of development efforts by Squeak Central (surely highly competent folks), to be a morphically pimped Smalltalk 80, that - for one example out of many possible ones - is still, in 2007, with the internet some twelve years old, not able to run more than the most simple html.

It may be objected that I desire too much, and that rewriting a Smalltalk VM to use most of the Windows or Mac Apis is difficult.

I don't say no, but then Kay, Ingalls, Kaehler etc. are very capable people; they were funded by Disney; and they could have followed the examples of Dolphin and VisualWorks, for these did use part of the Windows Api, with the result that they have a much better interface than Squeak.

Besides, a lone user of Squeak (Rob Gayvert) some years ago succeeded in building - what he called - wxSqueak, that used the public domain Tlx-interface for Windows. This had some quirks and bugs, but much of it worked.

So - it could have been done from 1996 onwards, and in my opinion should have been done, and would have produced a very interesting system with a slick modern graphical interface.

Instead, the tools of 1980 were used by the original developers of 1980 as if what was leading edge in 1976 must be leading edge in 1996 and later, and as if graphical interfaces and OS-s outside the very limited graphical capacities of computers of 1980 could be safely ignored.

And thus we have now Squeak and Croquet of 2007, running a graphics engine and format of 1980 with much faster processors and much more memory, but without any support or use for the far greater power of the graphics engines in modern OS-s - even though these too are 'object-oriented', albeit not according to all of Kay's tastes and principles.

Finally, there is another point that counts for me, though it may not count as much for others.

I am interested in understanding computers and programming on a fundamental level - and it has turned out that Smalltalk (and other  HLLs) do not make this easier but make this considerably more difficult, for what one learns in fact, when studying these, is not the computer itself, but some particular abstraction to make it tractable for humans.

This is not to say at all that in Smalltalk (and othe HLLs) it is impossible to write highly effective and readable code, for clearly it is. It is to say that Smalltalk and Squeak have not given me the leverage and understanding they promised their users.

And finally, simply considered as a HLL-programming environment, it seems to me, mostly because of the mistakes I have discussed, that Squeak and its derivatives are at present less useful, less practicable, and less graphically pleasant than most of the competing HLL-programming environments - unless, of course, one is absolutely wedded to Smalltalk or cannot program well or at all in another HLL.

This is so for Smalltalk itself, where VisualWorks and Dolphin seem to me decidely better-looking and better-documented, and also outside Smalltalk, where most modern HLL-programming environments have better graphics, better documentation, are not locked up in their own graphically limited environments, and also have better open source licenses.

Maarten Maartensz


        home - index - top - mail