Smalltalk Reloaded: Missing Bits & The Achilles Heel

I just updated the entry marketing isn’t the problem to include a mention of PPD VisualWave and noted the licensing problem. At a time when developers were able to freely download the JDK & JVM, Smalltalk’s leading low-cost player had been, in effect frozen in place by the merger.

So was it Java’s fault what happened to Smalltalk? Nope. Sure Java had the market’s attention. But that internet bubble was really big, man. There was room for Smalltalk on there too and we had real-world-deployed experienced programmers to help. I think it wasn’t all about Java and the great timing, luck and marketing. It was also the anti-marketing it felt like the Smalltalk leaders did. That’s right. We did anti-marketing.

As I see it, the first major error happened before anyone ever really heard of Java. ParcPlace System merged with Digitalk. … In this man’s opinion, Java didn’t kill Smalltalk. If anyone did, we did it to ourselves. Java just applied the heat while we were churning.

We’re Niche Players

There are also relevant bits to mix in related to IBM’s role but irrespective of the corporate landscape, Smalltalk has and continues to be hampered by it’s Achilles heel - networking. Without rock solid, high performance sockets and broad support for popular protocols, you just can’t be an impact player in a universe held together by TCP/IP. Digitalk IIRC didn’t ship with any TCP/IP support and VisualWorks performance was not compelling.

Commercial web servers offer additioan features that would be3 very time-consuming to re-create under Smalltalk. … If the Smalltalk environment does not provide lightweight, preemptive threads to manage incoming connections, performance will be minimal.

Jonathan Pletzke - Advanced Smalltalk 1997

In 1992, before Java, David Simmons embarked on SmalltalkAgents and almost got it right but what happened there is WAY beyond the scope of this post. Squeak in 1996 took steps in the right direction, but was not focused on delivering the kind of commercial grade networking capabilities Java provided out of the box. Today’s VisualWorks, DabbleDB and Qwaq have proven that within a narrow niche and with enough resources, Smalltalk can deliver powerful networking solutions. However, for the typical developer, this is not the case. Too many easy things are hard and hard things are for all practical purposes impossible. Case in point - XMPP aka Jabber which has exploded into widespread use. Yes there are 2 Smalltalk Jabber clients available but they are sorely lacking. Secure authentication isn’t built-in and rolling your own with the Cryptography package is not trivial. In contrast, in the world of Ruby, the robust XMPP4R and the drop-dead easy Jabber::Simple built upon it have emerged as defacto standards from a pool of a half dozen or so implementations. However these problems are not due to some inherent flaw in Smalltalk but rather another facet of its Achilles Heel.

What continues to drive the expansion of the web is the convergence of TCP/IP and social networks. The human network of Smalltalkers is too small and lacks the diversity needed to exert a broad influence outside of itself. Don’t get me wrong, the Smalltalk community is full of wonderful people who are passionate about Smalltalk. However, it’s made up of isolated islands of folk with hardcore developers and researchers on one side, captive users on the other and a very transient collection of power users, scripters and intermediate programmers flowing in between. These groups don’t really party together, and the result is that innovation rarely gains traction. Just within the world of Squeak there are 7 incompatible major builds - Squeakland, Croquet, Plopp, Seaside, DabbleDB, Scratch and Squeak. Continuing with my XMPP example, if you google Squeak Jabber you have to hunt to find the actual code let alone find any examples of using it. Now some Squeakers might object - SqueakSource is the preferred place to look. This is true, but it doesn’t address the issues of completeness or examples. To be clear, this is NOT a criticism of the people freely sharing code, it’s saying there are not enough people in the community, particularly developers with paying users of any kind(end-user, developer). So continuing with the saga, if it’s 3:00 am and you’re having a problem, there’s nowhere to turn except the Squeak-dev list. If you ask a question there, maybe someone will respond quickly and if they do they’ll probably be friendly. There’s also a good chance they’ll be knowledgeable about Squeak in general. There’s less of a chance they are familar with the Jabber code or have used it very much. In the end that probably doesn’t matter because the problem will ultimately end up being socket and/or vm related - outside the bounds of most highly experienced Smalltalkers. One simply can’t tackle these problems effectively without significant experience in C. It’s not that the problems are intractable, it’s that the Squeak economy isn’t robust enough to support the level of expertise required to have rock-solid networking widely available.

Originally the purpose of Smalltalk was “to provide computer support for the creative spirit in everyone. “ Today, the Squeak site describes Squeak as

“In short, a personal computing environment that could be programmed by “the rest of us.”

For as long as I have been involved with it(27 years), there have always been elements of the Smalltalk human network who looking at things through a zero-sum lens, have preferred and lobbied to pursue “purity” at the expense of reaching out to and developing solutions for “everyone”. During Smalltalk’s short-lived Golden Age, Digitalk provided a win-win choice for “everyone” while people able and willing to pay the price of purity were well served by Parc Place. When the human network broke down it hurt Smalltalk’s entrance into and codebase for the web era. The good news is that today, there’s an opportunity to jump-start another Golden Age - stay tuned.

20 Comments »

  1. Friedrich said,

    January 30, 2008 @ 1:58 am

    Hm, the point is that Smaltalks do it “their” way. And that’s mostly not the “unix” ways of doing things. AFAIKT is the interoperability Smalltalks, C much weaker then from nearly every “Scripingt languages” unders the sun. And I hardly no any application of Smalltalk in the small tools approach of Unix. The scripting languages are usually lackign a much in regard to development support but they play nicely with anything under the Unix umbrella

    I for my part do like Squeak very much but it’s lacking a crucial thing for me a really decent Editor, and the morphic stuff is still too much beyond me. There is nothing like a decent GUI Builder AFAIKT. The answer the whoile squeak environment is the Environment is IMHO very weak.
    The Browser panes limitng me quite much (as I feel), you only see an excerpt of a class and you have to use another tool to just get somewhere.
    I know it’s weak but in any other language I just wrote one function below another and do not have to accept a function every time I’m done with it. Scrolling back may just be a few strikes on the up/down page, and with the function in a menu it’s just a click away, to get there. If I like I can put in a bookmark and go back to it. In Squeak I’m lost in the multitude of tools I have to open….

    So I have no idea what they mean with “could be programmed by ‘the rest of us’. I do not feel beeing part of the ‘rest’.

    Have a nice day
    Friedrich

  2. Keith said,

    January 30, 2008 @ 10:24 am

    at 3.00 am you can go to #squeak on irc there are plenty of helpful people there.

  3. Jason said,

    January 30, 2008 @ 2:50 pm

    Friedrich: You have to accept each method because they are compiled when you click accept. In your script language you do the full compile when the project is run and in Java you pay the full compile price when you create an executable. In Smalltalk you pay as you go so even if the compiler is many times slower you’ll never see it because you’re growing incrementally.

    But otherwise your points are correct that the tools could use some help to be more useful. For example, only showing one method at a time is nice since it helps you focus on what you’re working on, but there should be a really quick way to “go to previous” (maybe there even is).

  4. Patrick Logan said,

    January 30, 2008 @ 4:26 pm

    “…Digitalk IIRC didn’t ship with any TCP/IP support…”

    Back when I was using Digitalk, well, *Windows* did not ship with any TCP/IP support!!

    And from Friedrich’s comment…

    “…the interoperability Smalltalks, C much weaker then from nearly every “Scripingt languages” unders the sun…”

    GNU Smalltalk has good C integration and good command-line scripting support. I think Cincom is enhancing both of these for VisualWorks as well.

  5. Administrator said,

    January 30, 2008 @ 11:27 pm

    >”Windows did not ship with any TCP/IP support!!”
    LOL - true but Winsock was around starting in 1992 and my real point is that Smalltalk community didn’t strike the web while the iron was hot - before Java showed up and got traction.

    @Friedrich have you seen StarBrowser or Whisker

  6. Friedrich said,

    January 31, 2008 @ 1:38 am

    To the Adminstrator
    I’ve installed them both but, I can not remember having seen more then method at a time.

    Now even if the stuff get’s compiled, why am I forced to accept it piece by piece, use the mouse to get a new method template, and then while I forgot a thing and want to change I get annoyed with “Do you really want to leave this wonderul metho?”

    As said I do like Smalltalks and I do like the browind facilities and I do like the MethodFinders but writing code is really to cluttered. I never ever have got one view of all the class methods, all the variables on one sight. And the categories are “well” strange.

    Why wasn’t it possible in 50 years to write a decent Editor? To boring or to challenging ;-)

    Regards
    Friedrich

  7. Friedrich said,

    January 31, 2008 @ 1:40 am

    Small extension: I’m notsure if you think the Whisker stuff is finde, however it is cluttered extremly. And how much space is left for the methods a third of the while screen estate? I’m sorry that is not convincing to me.

    Regards
    Friedrich

  8. Friedrich said,

    January 31, 2008 @ 1:58 am

    To the Adminstrator
    I’ve installed them both but, I can not remember having seen more then method at a time.

    Now even if the stuff get’s compiled, why am I forced to accept it piece by piece, use the mouse to get a new method template, and then while I forgot a thing and want to change I get annoyed with “Do you really want to leave this wonderul metho?”

    As said I do like Smalltalks and I do like the browind facilities and I do like the MethodFinders but writing code is really to cluttered. I never ever have got one view of all the class methods, all the variables on one sight. And the categories are “well” strange.

    Why wasn’t it possible in 50 years to write a decent Editor? To boring or to challenging ;-)

    I just rechecked Whisker, I’ve to click on every method I like to see, can’t I just click on Instance Methods and then got a view on them all with decent facilitied to scroll up and down?

    Regards
    Friedrich

    Regards
    Friedrich

  9. Friedrich said,

    January 31, 2008 @ 1:59 am

    I’m sorry having posted the same twice. I did not have seen that it wasn’t edited.

    Regards
    Friedrich

  10. Croquet 2 Play » Story-Oriented Coding said,

    January 31, 2008 @ 10:57 am

    […] the flow of discussions on my Squeak blog and the Squeak-dev list dealing with issues relating to the tools for editing code I realized that […]

  11. Administrator said,

    January 31, 2008 @ 10:59 am

    Friedrich - there’s a conversation going on at the Squeak-dev list entitled Editing class method sources in single place … you’d probably find it interesting … I don’t use Whisker or Star or OmniBrowser but thought they might convey the idea that the tools are malleable. I think though that it helps to broaden the context.

  12. Friedrich said,

    January 31, 2008 @ 12:32 pm

    I’m subscribe to the squeak list but have overread that. But some pointed it out very clear. You do not have a broader picture of your sources and in fact you do no have something which resembles an outline. I guess I’m corrupted by Emacs. Which all in all is a pleasat too for handling text (in whatever forms they come along) ;-) And so Emacs is my Window manager, I can not see why it should not be Smalltalk, but I’m reall not keen making it that “comfortable” to me as I’m used to in Emacs (well a few decaded of editor development is really a tough job ;-)

    Regards
    Friedrich

  13. Patrick Logan said,

    January 31, 2008 @ 3:20 pm

    “And so Emacs is my Window manager…”

    Emacs will likely always be my window manager when not in a Smalltalk environment. And when I worked for Gemstone, Emacs *was* my Smalltalk environment. Kind of nice there too.

    “my real point is that Smalltalk community didn’t strike the web while the iron was hot - before Java showed up and got traction.”

    I agree. But thinking back on those days in the Smalltalk community there was a real “corporate” feel to Smalltalk. Squeak was not really out yet, everything was VW and Digitalk… multi $K USD products because they thought they were going to save IT from itself and make some scratch at the same time.

    Back in those days “web” and “corporate” were two different things.

    As I understand it, Sun went to ParcPlace to get VW Smalltalk to be the “Oak” language for “Set Top Boxes” and such (remember, this was before Java was targeted at the web. Everyone was all about “Set Top Boxes”.) Apparently PP wanted to license it for more than an arm and a leg, and the rest is history. This is anecdotal but heard from more than one source.

  14. John said,

    February 1, 2008 @ 12:43 pm

    Aren’t the “multiple builds” supposed to be a strength? (relative ease of creating Domain Specific Languages) Isn’t Seaside a framework and not an “incompatible build?” I’m not that familiar with the others but why wouldn’t they also be considered frameworks?

    Tech history seems to prove that incremental progress is valued over paradigm shifts. With “write once, run everywhere” Java offered to solve a real problem for developers and was innovative without being too different from what past procedural programmers were used to. Before the internet took off, networking was secondary.

    It seems to me that ST’s business case is “making the difficult easy, and impossible possible”. The complexity of the solutions that programmers tackle keeps increasing. (Is there a law for this yet?) FORTRAN and COBOL were tools for fast computations and accounting with well defined inputs and outputs. Then C and soon C++/Java took over and allowed more complex systems to be modeled. ST has been head of its time.

    This is somewhat borne out by some Java developers recent complaints about how bloated it is. Clearly, Java tries to be everything to everyone and there are Java efforts to incorporate Ruby and Rails frameworks (JRuby, Groovy, etc.)

    It’s hard for any non-mainstream language to succeed. (Remember the complaints that Java was dog slow? and the endless “but we can do this in C++” demonstrations?) Java had the enduring support of Sun but its success was never a given. IMO Commercial ST vendors should support Squeak (better) so that they can take advantage of innovations like Seaside. (Surprisingly, they seem to be late to incorporate Seaside.)

  15. Jonathan Pletzke said,

    February 1, 2008 @ 2:34 pm

    Thanks for taking me back in time to the good ole days. Dave Simmons was my Smalltalk mentor, and he is a very sharp guy.

  16. Administrator said,

    February 1, 2008 @ 6:47 pm

    @John Isn’t Seaside a framework and not an “incompatible build?”
    well maybe in theory, but last I checked(probably fall) Seaside was running on Squeak 3.7 while Croquet, Sophie are Squeakland 3.8 but with different images and/or VMs - they don’t work together out of the box and there’s no guide or tool for integrating them other than a very big hammer. Don’t mean to sound too cynical - I’m really not, it’s just that peole keep tossing out ideas that people very reasonably(as in your case) take at face value.

    @Before the internet took off, networking was secondary.
    True, but there were several commercial Smalltalks that had every opportunity to jump on the bandwagon before Java ever got on the scene.

    @It seems to me that ST’s business case is “making the difficult easy, and impossible possible”. The complexity of the solutions that programmers tackle keeps increasing. (Is there a law for this yet?) FORTRAN and COBOL were tools for fast computations and accounting with well defined inputs and outputs. Then C and soon C++/Java took over and allowed more complex systems to be modeled. ST has been head of its time.

    If you check my other posts, you’ll see that’s not how it happened. ST did make the business case you mention in the late 80’s early 90’s and had clearly beaten C/C++ mindshare wise before Java ever arrived. IBM had blessed it and during that era $99 was like open source so a growing community of individuals had gathered around Digitalk as well. I agree that the commercial entities should support Squeak and GNU ST better.

  17. Administrator said,

    February 1, 2008 @ 6:49 pm

    @Jonathan - my pleasure! Flipping back thru your book was fun!

  18. Administrator said,

    February 1, 2008 @ 7:03 pm

    “I guess I’m corrupted by Emacs. ”
    well since you said it :-)
    somewhere in the late 80’s I got a Mac with 2 19in monitors(late 80’s I think) and was doing a bunch of work in Smalltalk and Macromedia Director - that’s when screen real estate came home to me … using keyboard macros and commands are great supplements for me, but wetware is primary

  19. Administrator said,

    February 1, 2008 @ 7:09 pm

    @Patrick
    I agree. But thinking back on those days in the Smalltalk community there was a real “corporate” feel to Smalltalk. Squeak was not really out yet, everything was VW and Digitalk… multi $K USD products because they thought they were going to save IT from itself and make some scratch at the same time.

    There was the big corp pull but Digitalk still had the independents who had bought at $99 - my company happened to be located a few floors up from Digitalk in the early days and I went downstairs and handed Jim Anderson a check - it didn’t feel so corporate then.

    “Back in those days “web” and “corporate” were two different things.”
    true

    “As I understand it, Sun went to ParcPlace to get VW Smalltalk to be the “Oak” language for “Set Top Boxes” and such (remember, this was before Java was targeted at the web. Everyone was all about “Set Top Boxes”.) Apparently PP wanted to license it for more than an arm and a leg, and the rest is history. This is anecdotal but heard from more than one source.”
    I’d heard this too and always felt it was at least somewhat accurate

  20. John said,

    February 3, 2008 @ 10:37 am

    I agree that there should be a high degree of integration between the different builds/frameworks. Fragmentation is not productive.

    I can see that ST companies might have missed an opportunity, but Sun was a BIG presence in the dot-com era and was in a position to effectively support and promote Java (including adding networking).

    It seems to me that the next major opportunity, and maybe a more serious failing by ST companies, was web development tools/framework as captured by Ruby/Rails. We are only now seeing effective commercial offerings like GLASS from Gemstone.

    Clearly successful business models can be based on open source software. Commercial ST vendors don’t seem to have fully embraced the potential of that business model. This is unfortunate because part of what OSS-commercial vendors sell is access to innovation and ST is a great environment for innovation.

    In addition to providing better tools for professionals, commercial ST vendors could help to promote ST/Squeak as an educational platform for kids/teens. Funding some kind of educational coordinator/evangelist would be a big help. ST/Squeak already has some traction in this area. Kids can be surprisingly innovative and once they start on traditional programming education with procedural languages it becomes MUCH more difficult to attract them to ST.

RSS feed for comments on this post · TrackBack URI

Leave a Comment

FireStats icon Powered by FireStats