Smalltalk - The Language That Refuses to Die
Update Sept 7 2008: Added link to article Smalltalk Jobs
Mea Culpa
First, I offer the reader a confession: I gave Smalltalk up for dead ten years ago.
I'm not proud of it. I had a choice between being an advocate of superior software technology or being an up-to-date payer of mortgages. I decided on mortgage payments. In the intervening years of C++, Visual Basic and Java, I didn't look back too much. Other than recalling how I solved a problem in Smalltalk and an occasional bout of Squeak watching, Smalltalk was a thing of the past.
You do what you got to do and then move on. It's the way of the world.
Recurring Smalltalk Extinction Cycles
In my short life, I have witnessed not one but two Smalltalk extinctions: first in the late 1980s and finally in the late 1990s. Each was what I supposed to be the final gasp of a great idea.
I try to avoid 'industry rant' type of blogging, but it rankled me that it took months, several months to find work after a Smalltalk project. There were never enough Smalltalk contracts around for a series of projects. Some other skill set always intervened. The software contract world is a bit like Hollywood in a way. One gets typecast into a role and whatever you did last is the only you can do forever and ever, or at least until everyone forgets about whatever it was you did last ( several months on the average ). It's kind of like typecasting languages too, when you think about it. Anyway, it stank.
So I admit I had a bit of an attitude about Smalltalk: great language, wonderful technology, incredibly productive development environment and all that ... but it was impractical for earning a living. The very bottom of the bottom line, as it were.
When the Java asteroid plunged into the technological atmosphere of the late-1990, I took to the life boats and was carried above the ruin by the wildly-tossing ark of C++, etc.
Smalltalk 2007
I've been investigating the Smalltalk scene of 2007 and I am compelled by the confessional tone of this article to say that it's not much to show for 25 years of being a world-class language and the conceptual spawning ground for a dozen advanced software technologies, including GUIs and Objects among others. Don't misunderstand me - the Smalltalk world has very interesting people in it, even some brilliant people who have accomplished remarkable things. The European influence particularly has bestowed a certain 'je ne sais quoi' lacking in previous incarnations. But the Smalltalk 2007 scene is paltry compared to many other language communities.
All things considered, maybe I was right to give up on Smalltalk ten years ago ( not much of a choice really ). I'm not dismayed by the idea of superior technology losing out in the Darwin struggle for technological survival. I had seen dozens of superior products and technologies get extincted ( or nearly so ) over the years. For example, Borland's fine suite of products and development tools - the first time I ever saw a page tab was in Quattro Pro. AT&T's hardware in the late 1980s was a decade ahead of it time. For a variety of reasons, superior technology does not always succeed in dominating the market or even surviving on the fringes. Good does not always triumph over evil.
So, imagine my amazement at the recent predictions about Smalltalk's renewed extinction in the late-2000s. In other words, they are saying that the next technological asteroid is coming in just about now and Smalltalk is where it's landing. So they say.
Is There Life After Smalltalk ?
Recent predictions of Smalltalk's ultimate doom beg the question - Can Smalltalk be considered a viable candidate for extinction ? Is Smalltalk alive enough to become dead yet again ? The answer may be 'yes'.
I've spent a about a year looking for Open Source environments to develop prototypes for Semantic Web applications. After much sniffing around the features of various Open Source development platforms, I find none other than Smalltalk capable of meeting the demand for a powerful and extensible SemWeb prototyping environment. As a tool for implementing systems in complex, poorly-understood problem domains, it stands alone, that is still stands alone. I think that the success of Seaside and various other new wave Smalltalk applications proves the underlying power of Smalltalk, as well as providing an extensible implementation framework for more advanced web applications.
Several other audiences have also discovered Smalltalk in the last ten years. Some are educators and multimedia developers; others are a new wave of Smalltalk Web 2.0 site developers. Each audience may be as big as the traditional prototyping and business-apps crowd.
To my surprise, far from fading away, Smalltalk was fairly lively in the early-2000s and found significant niches outside of business development, pretty much guaranteed for at least the next few years. But, I think the really interesting thing is the prospect of Smalltalk becoming a much bigger and therefore more qualified candidate for extinction. The Smalltalk success stories of the late 2000s may make it an even more inviting target for technological asteroids in the next ten years.
And why not. If you were an asteroid, wouldn't you ask to yourself "why mess with the technological burrow-creepers when I can nail a giant 30-ton Smalltalkosaurus". It's a no-brainer !
New Business Models for Old Technology
I think there is good reason to believe that Smalltalk may be on the verge of new life, a new beginning. Respeciation may be just around the corner.
Things have changed. Apple's long support for Squeak has brought forth a new force in the Smalltalk world- a working, efficient and reasonably stable Open Source Smalltalk that many thousands of people have found to be usable, fun and free. Open Source and collaborative development projects in general have strengths and weaknesses. The major strength is breadth - it's global. Anyone who is interested in Smalltalk and has a good network connection can join in. It's a vast resource and getting vaster by the month.
There are significant weaknesses of collaborative development. The timetable is not dependable - sometimes the product is not dependable. Some parts get done ahead of others, depending on availability of people to work on a part and on the priorities as perceived by those individuals at a given time.
The priorities of the individuals involved or interested with an Open Source project varies tremendously. These interests tend to coalesce into sub-communities - so far, I've noticed academic OO purists, VM hackers, business apps and prototype developers ( like myself ), educators, multi-media mavins, Web 2.0 explorers, etc. Each has its own set of interests and priorities. This tends to increase the pressure to divide the efforts of the participants into branch projects.
The irony is that Smalltalk was mostly open source from the beginning, even if the VM was still closed. In the late-1980, providing source code for your language development environment was literally unheard of ( readers, please post a comment and correct me if I'm wrong ). The computer scene of the late-1980s had barely recovered form the shock of $100 operating systems and GUI applications and now someone was proving source code ! Unheard of ! What will they do next ? So, in a sense, Squeak as a fully open source implementation of Smalltalk is "returning to its future". Or is it "progressing to its past" ?
Smalltalk and the Wheels of Commerce
I think that the future of the market for Smalltalk in complex corporate systems is anyone's guess. Maybe the corporate market will revive with a new generations of apps or maybe it will die out completely. Historically, the open-code nature of Smalltalk may have been a problem for some corporations - the dynamism of the Smalltalk environment was too much, like a high-performance racing car when corporations were looking for a very consistent, predictable truck or a jeep. I've heard many variations of this theme.
Finding trained people was also a problem. Without getting into a rant about it, badly designed Smalltalk code with inside-out objects passing 'self' all over the place is a brutal thing to see and even more brutal to work with. Too many corporate projects of the 1990s wound up on the shelf because of poor design. Bad design = bad code.
However, good OO design is virtually the same for any OO language implementation. Modern application architecture and design methodologies using industry standards ( such as those from OMG and OASIS ) can reduce the bad design=bad code damage to a tolerable level. In fact, good architecture and design tools may be even more critical for loosely structured collaborative development projects than for centralized projects. These tools need to be powerful enough to support not just information sharing but knowledge sharing as well, maybe something like a super-wiki.
I am not sure how this effects VisualWorks, which is virtually the only fully-supported commercial Smalltalk product left on the market. While not Open Source in the licensing sense, their Smalltalk image is mostly open source ( the VM is closed ). They have free community versions of VisualWorks and ObjectStudio that are very stable and workable. VisualWorks has plentiful goodies, a good repository, etc. It's not terribly expensive. The combination of VisualWorks, Gemstone and Seaside for commercial Web 2.0 apps seems unbeatable to me, well worth $100,000 or so to set up a pilot project, chicken feed by corporate standards. Overall performance is excellent. I can run Seaside on low-end machines I'd never consider for Java servers. But I've been wrong in the past - good products fail too.
Whither Smalltalk ? Or Wither Smalltalk ?
The Smalltalk world is changing. Smalltalk Open Source solutions may be set to proliferate just as traditional Smalltalk corporate systems are about to die out. In the meantime, a whole new generation of Smalltalk-based educational, Web 2.0 and Semantic Web applications is threatening to spawn all over the globe and start the next death-rebirth cycle all over again.
Seaside and Web 2.0 has gotten a lot of attention lately, but educational Squeakland is progressing along nicely. I think the Smalltalk-enabled browsers via the Squeakland plugin is a very powerful idea. A full-blown Smalltalk web client might be even more attractive for "Knowledge Web" type applications. In the meantime, Squeak repositories and versioning tools are maturing, as well as new image builder tools to produce customized images ( important for multiple audiences ). A lot of good things are going on to make Squeak even more powerful and practical than it is already, the future looks bright to me.
With a bit of luck and decent marketing, Smalltalk will be able to look forward to its fourth round of extinction in the late-2010s. Let's hope so. :-)
- Bill
"Smalltalk is the language of the future ... and always will be."
- Adapted from an old Brazilian saying about their country.
