Sunday, May 10, 2009

What Killed Smalltalk: Sometimes Balls can be Useful

Uncle Bob, has been his usual charismatic and entertaining self in his keynote speech this year at Rails Conf. He presented a dire warning for the Ruby Community: "What Killed Smalltalk Could Kill Ruby, too". So what is this beast of death? Well Uncle Bob blames the ease at which programmers could create a mess in Smalltalk as the thing that killed off the language, quoting no other then Ward Cunningham to back up his argument. Interestingly he makes only brief mention of another VM based OO language with garbage collection that appeared in 1995, and was market mercilessly and given away for free, whilst Smalltalk vendors were still charging £3K plus per pop for Smalltalk licenses (yes that's over £3000 per seat). Hmm...

Anyway as you would expect, the Smalltalk community is up in arms. James Robertson has this post. And Giles Bowkett makes this response entitled "What Killed Smalltalk: My Balls". Giles response, demonstrates IMHO complete ambivalence to what is actually happening in mainstream programming today. Whilst IMHO Uncle Bob clearly has his finger on the pulse. I have never been a full blown member of the Smalltalk community. I've always been one of those people on the side lines, using Smalltalk for fun and hoping to get a Job that would allow me to write Smalltalk commercially, but never being fortunate enough to do so. I think that gives me a more balanced perspective. I am neither a curly bracket or square bracket zealot, having lived most of my programming career with both. Whilst I've always admired the Smalltalk language, I have noticed that the Smalltalk community has a tendency to be insular and inward looking (with no sign of those balls Giles speaks of). Anyway, here is my comment in response to James Robertsons blog post. I thought I'd post it here (with some minor edits), since I know that very few people take the time to look at Smalltalk blogs:

There are two audiences here. One audience are the 20 somethings who were merely a lusty glint in their fathers eye when the clash of C++ and Smalltalk was taking place in the 1980's. The other audience are the people who where actually there.

For the 20 somethings, I think there is a lot in this presentation to get excited about. First of all it makes the point that good ideas can fade. It also makes the point that great languages provide the programmer with great power. With this power comes responsibility. As developers we have a choice. We can allow ourselves to be dumbed down and given dull tools so we won't hurt ourselves, or we can become responsible and disciplined to the extent that we can be trusted to use sharp knives. This message is an important one. The other great message, Smalltalk, which is now being discussed amongst a new young audience. If any of these young kids are half as curious as I was at their age, then we should expect downloads of Squeak to spike this weekend...

As for the other audience. The people that were actually there. It is easy to dismiss this presentation as a pile of BS. Well it mostly is, but to engage with it only on a factual level is to miss the point. This presentation is not for us. Bob Martin is not a Smalltalk programmer and never was. I was on one of his OOD courses in the 1990's and he asked who in here as used Smalltalk? I was the only person to sheepishly raised my hand. He then went one to castigate Smalltalk, saying that you couldn't use it for anything serious because it would lead to a mess once you got to more then 10K lines of code. Back in them days Bob was a curly bracket language zealot.

I'm glad that James has admitted that that back in the 90's the Smalltalk community suffered from arrogance too. I read Giles response and it sounded more like a tirade. The mainstream developer community at the moment is in flux. They trusted in vendors only to be let down. Now they are looking for new leaders. Most of them are followers, if they weren't they would have self educated themselves long ago, and Uncle Bob wouldn't be able to get away with his historical inaccuracies. The Smalltalk community are in a great position to provide leadership. The Agile movement came from Smalltalk, TDD from Smalltalk, Ruby from Smalltalk...

So why isn't the Smalltalk community doing so? Why wasn't a Smalltalk programmer giving this keynote instead? Where is Alan Kay when you need him or Dan Ingalls? Is it because we've all got a reputation of being grumpy old men? It is up to the Smalltalk community to make themselves relevant to these new young kids. Bob is doing his best to tell a story second hand. The Smalltalk community should be telling this story itself. Looking in the mirror at yourself and your own short comings, is much harder then pointing fingers at others.

Paul.


23 comments:

Randal L. Schwartz said...

Believe me, some of us are working hard on it. I've been giving my "Seaside: Your Next Web Framework" talk all over the world. The reception has been great, especially when I get to the point about intra-hit debugging on a live walkback.

Joao said...

The idea of running an image of a system or a system which you edit live and so on is very unique to certain approaches of which Smalltalk is a good representation of.

Even using "irb" the REPL of Ruby is both quite popular on one hand, and quite foreign to lots of users of Ruby on the other hand. And Smalltalk's usual system builds on top of that!

The reality of Ruby was changed forever and ever once RubyGems became popular and Ruby on Rails helped to create the demand for RubyGems. I was able to see the early days of Ruby on Rails and the RoR original author jumped on the opportunity of making use of RubyGems which was rather unused at the time just like most of Ruby.

For my own programming I have been able to avoid creating my own RubyGems for proprietary and research developments, but RoR was all over them since the very beginning.

Merb, a new idea of a web framework for Ruby, really made use of RubyGems. At one time at least, installing Merb could have meant installing tens of gems.

RubyGems has been Ruby's practical answer to Perl's CPAN, for example.

RubyGems has helped users with creating readily available module packages, and to avoid making systems that behave like blackbox systems, where you can keep on appending things without much of a notion of a modularized system.

That said, even if I haven't made use of RubyGems for my own personal work, I have had some luck with trying to modularize things but at the end of the day, less coupling between the modules as provided by RubyGems would have been better in some regards.

But it's a reality that there has been more coupling between modules when programming without making lots of use of RubyGems.

Too much coupling, rings a bell, Smalltalkers? :-)

Paul Beckford said...

Joao,

Great comment. Smalltalk as released in 1983 was still a work in progress. A research project if you will. Now interestingly every system that has come after Smalltalk and has chose not to "build on top" of all the concepts in Smalltalk has been found wanting.

C++ showed that OO is much more then just data abstraction and inheritance. We need late-binding too. Java showed, that a VM and garbage collection alone isn't enough to get us out of the "pink plane" either.

I think in time Ruby will show that an Image is still far superior to just using flat files.

You hit on the problem with the Smalltalk image, which is coupling. The route cause of this coupling is global state not the use of an image. Newspeak a new language inspired by Smalltalk removes global state. This means that there are no dependencies between modules, and that modules need to be explicitly plugged together much like with RubyGems. This means that images can be shrunk, and built up from modules that are loaded from disk. The idea of a image as a single monolithic entity is no more in Newspeak. Gilad is even using standard file based version control systems with the Newspeak image.

Gilad Bracha has a number of useful blog posts on Newspeak. Take a look at this one on static (global) state:

http://gbracha.blogspot.com/2008/02/cutting-out-static.html

And Newspeak can be downloaded here:

http://gbracha.blogspot.com/2009/02/newspeak-prototype-escapes-into-wild.html

The problem wasn't with Smalltalk (the language) as the basis for further development. If anything Smalltalk was a language way before its time, and a rational industry would have built on top of what emerged from Xerox Parc. No the problem is with an incumbent technology ecosystem that doesn't afford radical and innovative change. As DHH as pointed out Ruby is merely a stepping stone. Smalltalk is still further down the road with regards to our destiny, and IMHO Newspeak is current day state of the art.

What we should have done is not have diluted the concepts in Smalltalk, but rather "industrialised them" whilst building effective bridges from our past to our future. This is what Newspeak is doing now.

Where will it end? Well I believe we still have a way to go. The first thing is to get back to the future by familarising people with the concepts in Smalltalk-80, then leap frog Ruby, Python, Beta and Self to arrive at the modern day state of the art with Newspeak. After that who knows :)

In the words of Alan Kay: "The computer revolution hasn't happened yet".

shevy said...

Alan Kay is cool but he is too old now.

Guido is the face of python, Larry is the face of perl, Matz is the face of ruby.

Nobody knows any leader of Smalltalk.

Linus is the face of the Linus kernel, Gates is the face of Microsoft (even though he is gone), Steve is the face of Apple (even though he is sick).

Nobody will remember Smalltalk if it has no leader.

You don't have to be a real leader in the sense that one must be a strong man or woman to "lead" it. But you must have some vision, some trust behind.

Java had the commercial backing of Sun. So in a way, Sun was leader (of many products, but now that Oracle bought them or are in the process of acquisition, this face of Sun will die. I predict that this will be a much heavier blow to ALL Sun products which depend on leaders of any kind. Already people critisize Java for being too verbose, and I predict that the more popular python and ruby get, the more people will critisize Java and Java will fail to evolve in a meaningful manner - though the JVM will evolve better and Scala will go ok too)

Anyway. Smalltalk is dead if they fail to put up a face. If they dont understand it, their death will come much faster. The whole world has changed, Smalltalk has not realized this yet...

Joao said...

Gilad Bracha is rather fun himself in a good way. I have read some of his blog posts and at least once exchanged a few words with him over on his blog. What hasn't prompted me to give Newspeak a try yet was just that it seemed to be built on top of Smalltalk which is another coupling example to be aware of... ;-)

Quite recently I have been very excited at the prospect of making use of Google's version of JavaScript in the V8 engine and Gilad shared some notes with us on it after an event at Microsoft where Lars Bak, V8's mastermind if you will, presented.

Also, I would invited anyone interested in programming languages to read the recent interview with Tcl's author to take a peak at where things currently are at in the scene:
http://www.computerworld.com.au/article/301772/a-z_programming_languages_tcl

What frustrated him, for instance?

"One of my few disappointments in the development of Tcl is that it never became a major factor in Web application development. Other scripting languages, such as Javascript and Python, have played a much larger role than Tcl. "

There you have it. Folks can't have it all for whatever reason. :-)

Paul Beckford said...

@Shevegen,

You make a fair point. Smalltalk needs a leader. Having said this, popularity and success are two different things. For Newspeak to be successful, it doesn't need to be popular it only needs to be viable.

Joao mentions V8 the google Javascript VM for Chrome. Now if Google decided to back Newspeak as an ideal language to implement SaaS on top of V8, then Newspeak and Smalltalk would have the leader you speak of. One of the Newspeak team now works for Google so it isn't that far fetched.

@Joao,

Do take the time to look at Newspeak. It is not Smalltalk. Gilad used Squeak to expedite development of Newspeak. In time he plans to move away from Squeak entirely, targeting the V8 or perhaps the Strongtalk VM.

Ruby has global state just like Smalltalk, Newspeak has none. So if it's coupling you are worried about then Newspeak is head and shoulders above Ruby. Think of a scenario where you were using Ruby to deliver SaaS and dynamically downloading plug-ins from different sources over the web. All those plugin-ins are bound to conflict since they all share a common global namespace. Bang goes your modularity.

Paul.

Isaac Gouy said...

> "Interestingly he makes no mention of another VM based OO language..."

Not true - Bob Martin does mention free Java as one of the reasons that has been given for the decline of Smalltalk.

If you can't even get what he said right...

Paul Beckford said...

Hi Isaac,

Still making useful contributions as ever. Thankfully, I have linked to the presentation, so everyone can determine uncles Bobs emphasis for themselves. Even so I have corrected the text.

Thanks,

Paul.

Unknown said...

WIth all due respect to Uncle Bob, he has an agenda and that is to sell SCRUM certifications. I hope that Uncle Bob sells lots of SCRUM certifications.

That said, messy code did not kill Smalltalk. If this were true, messy code would have killed every computer language on the planet. I don't believe that Uncle Bob believes this. The reasons for Smalltalks demise are simple.

1) Familiarity. Smalltalk doesn't look like Cobol, Fortran, or C/C++. It doesn't even look like Pascal. I saw one company try to change the language so that it was more C like in order to get developers to accept it. They failed.

2) Cost. As mentioned, the price per develop seat model was pretty high. But that isn't a reason in it's self. At that period in time, developer seat costs were pretty common. However they were also under attack by companies trying to get footholds in the market. Developer seat costs was the obvious barrier to entry to knock down.

3) Java. Java offered a compromise between the complexities of C++ and the strangeness of Smalltalk. Java dealt a fatal blow to developer seat licensing. It was the emulsifier between strangeness and complexity. The other fatal blow happened when people started to discover that suddenly they could deliver that large complex system without needing an extraordinarily talented teams of people that would have been required with C++.

Why Ruby never makes it as a main stream language

1) Familiarity. Times have changed and people are more open to strange languages. However strange starts at Groovy

2) And then magic happens. Synthetic creation of functions only adds to the strangeness quotation.

3) No clear path to adoption in Java centric shops. Sorry to say but Groovy (GRails) has Ruby (Rails) beaten here. I like Charlie Nutter. I think he is doing an awesome job with JRuby. He's made the JVM a much better place for all languages including Java. However, his talks early talks focused on eating the entire elephant rather than what bit fits where in my Java shop. I know where Groovy fits and I don't have to eat the entire elephant.

Paul Beckford said...

Hi Kirk,

Great comment. I agree with your historical analysis of the demise of Smalltalk. One thing I would add is that Smalltalk didn't play well with Unix/(Windows/Mac). The image made Smalltalk an island to itself. Ruby solves this problem and plays nicely in the Unix ecosystem as another "little language", just like Bash or Perl. Newspeak is solving this problem too.

Uncle Bob does have an agenda, but it isn't Scrum. Uncle Bob is part of the software craftsmanship movement and is an advocate of "clean code". Telling kids to eat their greens is a good thing, but threatening them with the boggy man if they don't perhaps isn't the best approach :)

Lastly I like Groovy, and for an enterprise Java shop moving to a dynamic language, I agree that it is an excellent choice.

As I said before we need to build a technology ecosystem that is tolerant of differences. There will never be one language to rule them all, and if we don't allow for variation and experimentation with languages then practical computer science will become stagnant like it did during the Java years.

Unknown said...

Hi Paul,

Interesting comment about Smalltalk and Unix. Most of my Smalltalk experience is running it in Unix. For a while I did develop in Windows but the deployment environment was always Unix. It was the best cross platform experience possible IMHO.

The Java years are far from over. That said, multi-core is what will finally bring it down. Even though Java is the first main stream language with built in support for threading, it grew up in a single core world where people had little if no experience with multi-core machines.. and it shows it. To date I've not seen an acceptable alternative that provides a useful abstraction of multi-core. Scala is good but I think it's only a baby step along the way.

One might argue that we shouldn't be coupling our language to our hardware. The reality is, we must!

I don't want to debate what Uncle Bob is doing.. I like what he's doing ;-), we need more of what he's doing.

Finally, just as the developer licensing was attacked and finally brought down, software licensing in general is undergoing the exact same pressures. It is the next obvious barrier to entry to tackle. Unfortunately there doesn't seem to be a clear path to monetizing your work. There are attempts but I see that in the long run companies are rolling back on ideals to more traditional models in order to boost the bottom line. Maybe another "java" would help sort out what that model will eventually look like.. but I digress.

Paul Beckford said...

Hi Kirk,
I agree Smalltalk is a great cross platform solution, mostly because it replaces the host platform much like Java does.

Gilad is making Newspeak play with the host environment. So for example Newspeak will dynamically bind to the native GUI of the underlying platform. At the moment it only supports Windows and Morphic (Squeak), but Linux and Mac OSX is planned.

It uses something called Aliens as a FFI, which is a much more flexible approach then you get in traditional Smalltalk. If you've got the time Newspeak is well worth a look.

Paul.

Paul Beckford said...

Hi Kirk,

One last point. Yes, I agree that the java years are definitely not over, but the idea that Java is the solution to everything definately is. Just like Henry Fords "any colour you like as long as its black" approach eventually died :)

Java shops face an interesting time. The language doesn't seem to lend itself to extension as well as say C#. So Java people will need to adopt another string to their bow if they want to compete.

The funny thing is that most Java developers have been using several languages for years. Like Javascript, XML, JSP, JSTL, CSS, HTML, XSLT, etc. If you can grapple with XSLT, I can't see why you'd have any problems with either Groovy or JRuby.

But we are digressing :)

Paul.

Yardena said...

Hi Paul,

Great post and interesting discussion.

I came across Uncle Bob's presentation couple of days ago, watched it up to the point where he revealed that it's "too easy to make a mess" that killed Smalltalk, then I lost interest. Now I learn it was to promote TDD... oh well. I agree with your assessment "worthy cause, questionable means". Yeah, Smalltalk blogs often smell of elitism and arrogance, but I don't like a tech rock star feeding me FUD just to make a point either. (But then again, I don't go to Rails conferences :-)) And TDD's nice, but it's just another ism. We believed in types, now in TDD, what's next? I mean, of course we should do it, but it's because we know what it is good for and why, and because we are professionals, craftsmen, whatever. And the fact still is, that being professional we know that no matter what we do, shit happens, bugs happen, and debugging and refactoring happen. So I appreciate when the language and the platform acknowledge that and try to be on the programmer's side. IDE and debugging are not an after-thought!

Now Seaside and all are very cool, there are several nice apps recently developed in Smalltalk, like this little darling, and it's nice to see some fresh activity, it's great. But you're right - this is not enough. And yes, as you do, I see the answer in Newspeak. Needless to say, for me Gilad is the face of Smalltalk, and Newspeak is the hope of true object orientation! Exaggeration? I don't think so. Java and C++ have given Alan Kay's ideals such a bad name, that it looks like FP (with its relatively clean bill, and people like Erik Meijer, Don Syme and Martin Odersky, trying to democratize it) has a better chance at using the opportunity which clearly opens now for new languages to enter the mainstream. And it's really waste of time to dig whose fault and why, because in the meantime Newspeak suffers lack of funding and lack of appreciation from the Object-Oriented Establishment! Where the **** is Alan Kay and all the rest?!

Isaac Gouy said...

Paul > Still making useful contributions as ever. Thankfully, I have linked to the presentation, so everyone can determine uncles Bobs emphasis for themselves. Even so I have corrected the text.

Well you wouldn't want to misrepresent Bob Martin's presentation would you?


> "... whilst Smalltalk vendors were still charging £3K plus per pop for Smalltalk licenses (yes that's over £3000 per seat). Hmm..."

Other Smalltalk vendors had a different price structure -

Smalltalk DOS/V286 $395
Smalltalk Macintosh V/Mac $395
Smalltalk OS/2 V/PM $475
Smalltalk Windows 3.0 V/Windows $475

"The Smalltalk Report 1991" issue 1 (pdf) p17 advert

Paul Beckford said...

Hi Isaac,

Good point, but I believe these were standalone "client side" dev environments. The "Enterprise" server side team stuff was very expensive as I remember. IBM Smalltalk, VW Smalltalk (I think they had a different name back then), come to mind, along with Gemstone. I'm sure you'll correct me if my memory is failing.

Either way. It was an interesting licensing policy that was doomed the moment free Java turned up.

Paul.

Paul Beckford said...

Hi Isaac,

Just had a look at the advert and it isn't for Smalltalk. But you still make a valid point there was cheap Smalltalk available, but I think it was only standalone single desktop developer stuff. Commercially most people used either VisualWorks or IBM, bot of which were very expensive.

Paul.

Isaac Gouy said...
This comment has been removed by the author.
Isaac Gouy said...

Paul > Just had a look at the advert and it isn't for Smalltalk.

Mea Culpa.

Smalltalk/V was $20 more -

"And the resulting application carries no runtime charges. All for just
$499.95"

"The Smalltalk Report 1991" issue 2 (pdf) p27 advert

Paul > Commercially most people used either VisualWorks or IBM, bot of which were very expensive.

How do you know what most people used?

Digitalk didn't make a successful business selling Smalltalk implementations to hobbyists - "Digitalk and IBM sign letter of intent to market Smalltalk/V products worldwide." p26

Paul Beckford said...

Hi Isaac,

You've lost me. Enjoy your day. Paul.

Paul Beckford said...

Hi Yardena,

>> Where the **** is Alan Kay and all the rest?!

Good question. I'm beginning to think that ego Killed off Smalltalk more then anything else. Alan by his own admission is not a finisher. He loves the challenge of the blue sky, and once an idea starts to become solid he looses interest and moves on.

Dan Ingalls in contrast is a finisher, but he seems an unlikely leader, spending his time in a research lab playing with Javascript. As for Adele Goldberg... who knows. I guess there is just a fundamental difference in emphasis between researchers and engineers. Smalltalk has needed a practical engineer for sometime to come along and finish it off. The problem has always been that the Smalltalk community could never agree on exactly what "finished" means.

So in the 90's there was loads of subtly different dialects, all more or less the same, but each guarded jealously by their creator. It was the failure of the Smalltalk 98 standard that convinced me that Smalltalk was doomed.

Back then we could blame the vendors, but it seems this attitude lives on in open source Smalltalk too. There are at least 2 or 3 competing fast Squeak VM efforts out there. And like yourself, I found it amazing how little love Newspeak received from the Smalltalk community.

Unlike the Ruby community, the Smalltalk community seem unable to rally around a good idea, put aside their petty differences and back a viable production ready standard.

The attitude of perpetual research and NIH seems to trump everything else. For those of us who just want to "get stuff done" in a commercial setting, it seems terribly arrogant.

Gilad thankfully is a shining star in an otherwise not too impressive Smalltalk line up. My hope is that he will gain the backing of someone substantial like Google. That way down to earth people like ourselves will get a chance to get on and build the future rather then just talk about it.

Paul.

tim said...

Price: in 1993-4 timeframe ParcPlace was charging around $600 for ObjectWorks & VisualWorks for Windows/Mac/OS/2

Adele Goldberg: Adele left ParcPlace-Digitalk in Sept 1995 and formed a company to continue her interests in business process software and educational tools.

Smalltalk being 'finished': silly idea. Software is only finished when the last customer dies.

Paul Beckford said...

Hi Tim,

Thanks for the corrections. The price thing has more to do with the price of entry for development organisations, not individual hobbyists.

This price meant that there has aways been very few jobs available in smalltalk and hence very little incentive for professional programmers to learn the language.

Adeles career choice makes my point about researchers being driven by different motives then proffesional developers.

The Pharo community seems to be providing the type of developer lead leadership needed for Smalltalk to become more popular amongst professional developers.

So there is still hope fir the future :)