15 ms·
The Rise and Fall of Commercial Smalltalk
- hodgesrm 6y agoSpeaking as a Smalltalk programmer active in the 1990s we pretty much dropped everything when Java showed up. It had the things we loved in Smalltalk (portable virtual machine, garbage collection, self-documenting APIs, collection classes, etc.) with the familiar syntax of C++ and concurrency. In a way Smalltalk prepared the way for Java in that it showed how great VMs and garbage collection were.
- G4BB3R 6y agoI can't understand. People says that ST ecosystem is much superior to nowadays languages, so why people at that time switched to the starter version of java, that is so bad compared to today? After the shift, did you miss something?
- hodgesrm 6y agoI worked on a project at Sybase that attempted to rewrite the Sybase SQL Server using VM-based technologies. We looked at Smalltalk early on but found a number of problems. They included slow execution speed (there was no JIT), lack of static typing (hard for maintenance), and difficulty to strip the VM environment to create an efficient runtime. Finally it had very limited ability to manage storage and memory directly. Without these it's difficult to build fast database systems. Sybase tried to acquire a Smalltalk vendor in order to fix the VM problems but could not reach a deal so we ended up moving to other technologies. When Java came along we felt it was the language we had been looking for even with the early performance problems.
- fulafel 6y agoWhat happened then, did it get rewritten in Java?
- hodgesrm 6y agoNo, the project got cancelled before Java showed up. Sybase pretty much went down the tubes after that as a major DBMS vendor. Not because our project failed, but because Sybase had a dud release in 1993 named System 10 that had serious quality problems and tanked sales.
- e12e 6y agoHeh, so that's just after the split of what became ms sql server on the Microsoft side. https://en.m.wikipedia.org/wiki/Sybase https://en.m.wikipedia.org/wiki/Sybase > 1993: Sybase and Microsoft dissolve their partnership. Microsoft receives a copy of the SQL Server code base. (...) Sybase SQL Server version 4.2 and Microsoft SQL Server are identical. (...) From this point the products diverge as Microsoft includes more Windows features whilst Sybase adds Enterprise features (performance and scaling). > June 1993: Sybase announces its latest generation of software, named the System 10 product family; (...)
- hodgesrm 6y agoCorrect. MS SQL Server is based on the Sybase 4.2 release. System 10 was 3 releases later (4.8 & 4.9 added MP and internationalization support respectively).
- davidgould 6y agoFun fact, I handled producing and validating the last source code SQL Server source code exchange between Sybase and MS.
- davidgould 6y agoAs I recall, there were a few "ambitious" projects on the UI side, application builders or frameworks or something that were failing around then. I think there was a real loss of management focus on actual products in favor of chasing the next big thing. We also forgot to ship 4.8 (MP) for months as everyone jumped to 5.0 (aka System 10).
- pjmlp 6y agoInteresting, I always felt that Oracle was the first RDMS vendor to take that path (with Java's early adoption and NC). I was at their shared session (together with Sun) in Lisbon about NC and how it would change the workplace. Thanks for sharing.
- hodgesrm 6y agoI would guess pretty much all the DBMS vendors in the early 1990s had people looking at VMs and were mentally prepared for Java when it arrived. In addition to other advantages DBMS designers were looking for better ways to compile queries into executable representations (aka bytecode). That path still exists but I think the tendency now is to harness tools like LLVM and do JIT compilation.
- pjmlp 6y agoIt was free beer, while most Smalltalk products had prices on the enterprise ranges. Then all C / C++ compiler vendors, jumped on the wave by adding support for the free beer Java SDK on their IDEs. Just like Linux versus commercial UNIXes of the day, free is a mighty power.
- hodgesrm 6y agoThe free part certainly helped adoption over time, but at the time Java first arrived everyone was conditioned to pay for IDEs and most compilers for that matter. Java took off because of the reasons I cited up-thread rather than cost. It was initially marketed as a language for web browsers. Most of us just ignored that use case and put it to work in enterprise apps.
- fulafel 6y agoI wonder if there are surveyst to be found about IDE usage from those times... IDEs were common in some circles in the early 90s but less so in others. Java wasn't a very high level language even in those days - we had Perl, Tcl, Python, PHP, etc used for web and non-web things. And on the low level side we had C. IDEs were less used with those languages.
- diegof79 6y agoI actually went in the oposite direction: I started with C++ and Java. Until I had the opportunity to work with a very interesting team using Smalltalk (this was in 2004, so St was not popular anymore, but I liked the team and it was an opportunity to learn). The article is very good describing what failed, from business to technology. Why people jumped from St to Java? Besides the licenses and the OS movement that took many St companies off guard, there were also technical issues: - Java was better for server side work. It had mature frameworks for Http/XML/Database access. Big companies allocated tons of resources to create Java frameworks and tools... the situation for St was different, you were at your own. For example, I had to debug and fix the WebServices framework available in VisualAge... because I didn’t have another choice. - The JVM was superior in many areas: native threads, different GC algorithms, JIT, and many tools for monitoring and troubleshooting. Most of the St VMs only had green threads, it means that any blocking native libraries (like DB drivers) are problematic. - As the article says, enterprises moved from desk apps to the web. And web frameworks for St arrived late. - The classic St-80 was not designed with the idea of packages in mind. Loading a package is basically executing code that modifies your image. It’s powerful, but problematic because it can introduce unexpected bugs. Strongtalk tried to fix that, but it was a research project. - To the package isolation problem, add the fragmentation between St implementations... it didn’t help to create an open source ecosystem of shared libs like in Java. What I miss? The environment! In St you have absolute control of the environment. You can inspect everything (including your editing tools), and evaluate code everywhere without having to stop the world. Today you have editors or IDEs with plugin APIs, but is not the same. A comparable experience is modifying things live in the web browser, but it lacks the inspection/authoring tools from St.
- pixelrevision 6y agoIt’s funny because I’ve only started using it recently and what really captivates me is the live environment. The fact that you can dig in and evaluate/change everything in the same environment you are running it provides an amazing feedback loop. To me it really seems like the “killer feature” of the language but I can’t think of any modern language that has adopted it.
- hodgesrm 6y agoSmalltalk was inspirational, but the environment was a double-edged sword. In ParcPlace Smalltalk even things like stack frames were editable classes. One of the first mistakes I made was trying to edit the stack frame class in a running VM. It immediately corrupted the VM. BTW another brilliant innovation of Smalltalk was incremental compilation. Edit a method, save, and it was instantly part of the runtime. It must have existed in other systems but Smalltalk was the first language where I encountered it.
- stcredzero 6y agoBTW another brilliant innovation of Smalltalk was incremental compilation. Actually, Smalltalk compilation to bytecodes isn't incremental, from a certain point of view. The compiler finishes completely with bytecodes, usually instantly from the POV of the programmer. The compilation is complete. However, the binding is late. (Usually termed "late binding." You see, usually only one method has to be compiled at any given time.) If the VM is a JIT VM, then there's another compilation step to machine code. Arguably, one could term this "incremental compilation" as well. It fits the colloquial definition of "incremental." Another weird way one could term the features of Smalltalk, is the argument that it's a strongly typed language. Yes, that's right. It's just that the only type is Object. The differing of behaviors of instances of different classes is just runtime magic. (Late binding again.)
- em-bee 6y agothe key feature i like here is that code can be changed and recompiled while an application is running. when an error occurs, the application does not crash but freezes allowing me to fix the error and resume. to the point that when the aplication is a website and an error occurs while a browser is accessing it, the loading of the page just stalls until the error is fixed, at which point it resumes without any user intervention from the browser side.
- Rochus 6y agoIronically Java was first and formost influenced by Simula 67 and C++, not by Smalltalk. The first Java version was essentially Simula 67 with a C like syntax. The influence of Smalltalk is generally overestimated.
- dws 6y agoYou might take a look at how Java got its JIT.
- Rochus 6y agoThese were the Self people.
- dws 6y agoSee https://en.wikipedia.org/wiki/HotSpot https://en.wikipedia.org/wiki/HotSpot There was serious intermingling back then.
- Rochus 6y agoHave a look at https://dl.acm.org/doi/10.1145/1238844.1238853?dl=GUIDE&WantType=Proceedings&coll=GUIDE&part=series&CFTOKEN=60061704&title=HOPL&type=series&idx=SERIES003&CFID=32568898 https://dl.acm.org/doi/10.1145/1238844.1238853?dl=GUIDE&Want... There is also a lecture video in the Supplemental Material section.
- dws 6y agoFrom inside ParcPlace, it looked like we were starting to gain traction. There'd been a number of spectacular C++ project failures, and people seemed to be willing to try this weird, new (to them) thing that let them get prototypes up quickly and then grow them. Then Java arrived and sucked all of the air and mindshare out of the ecosystem. Java lucked into ideal circumstances, and Sun Marketing played their hand very well. The Web was just taking off, VCs were looking for something new and hot, publishers were looking for the next big thing, and programmers were looking for something that wasn't C++. Java looked familiar enough, cost nothing, had Garbage Collection and Interfaces (putting Gang of Four Patterns within reach of many), and let programmers keep their favorite tools and editors instead of adopting Smalltalk's strange model of doing everything in a (mostly) sealed environment.
- goatinaboat 6y agoThen Java arrived and sucked all of the air and mindshare out of the ecosystem. Java lucked into ideal circumstances, Not only that but Java was free and Smalltalk was $50k/seat. There was a chicken-and-egg problem, no one could learn Smalltalk unless their organisation had already committed to it. It sounds weird to say it now but Java won by grassroots adoption.
- twic 6y agoAlso, you could share Java code, or entire libraries or applications, by posting some files on a website. You already had the files, and someone downloading them could use them straight away. To share Smalltalk code on a website, you would go through the file out / file in process, which was considerably clunkier. Also, i don't think Smalltalks of the time had namespaces, which also makes sharing code harder to get right. Java's reverse-DNS package naming is a surprisingly important innovation.
- boris 6y ago> There'd been a number of spectacular C++ project failures... And the most successful company of that era (Google) went ahead and implemented their product (the search engine) in C++...
- alrs 6y agoI took my first college-level programming class in 1997, learning Smalltalk. 1. IBM VisualAge didn't run in Linux, so I had to buy a second hard drive and a copy of Windows 95. 2. I wanted to be working in a terminal, Smalltalk only let you work in an IDE. I couldn't figure it out. I couldn't believe that anyone would want to mouse-around to poke through the available classes and methods. 3. The text was the IBM manual. It was terrible. 4. I failed the class twice, so I changed majors. I didn't come back to coding until ten years later. I'm a contributor to Kubernetes, the Go Standard Library, and I'm a full-time Go developer. Things turned out OK. Smalltalk, OO, and IDE-based development set my career back by ten years. Don't believe the hype.
- non-entity 6y ago> I couldn't believe that anyone would want to mouse-around to poke through the available classes and methods. So I dont know a ton about smalltalk outside of what I've read and poking aside in squeak for a few minutes, but is this how smalltalk apps were supposed to be distributed and run? Inside a sandboxes system like that?
- hboon 6y agoOn certain systems, there are tools that make them feel more native. Eg. on Dolphin Smalltalk which ran on Microsoft Windows, you can run a utility to stripped off the unnecessary parts (eg. the browser/editors and unused classes) of the image and it gets bundled into an .exe which includes a VM. A user wouldn't know it's running Smalltalk. It turned out to be an excellent tool to write Windows app during its time. The live environment worked extremely well in working with and figuring out ActiveX and COM objects.. Even better than VS Studio at that time.
- kryptiskt 6y agoNo need for past tense there, Dolphin Smalltalk is still being developed and is open source now, https://github.com/dolphinsmalltalk https://github.com/dolphinsmalltalk.
- rongenre 6y agoIt was pretty amazing going to JDK 1 and seeing names in the source code I remembered from doing VisualWorks Smalltalk.
- travisgriggs 6y agoOne of the things that Allen only barely hints at and I'm not sure Gilads piece really touches on was the shifting economics in Software development. In 1995/96 when Java gut punched the wind out of Smalltalk and the other OO solutions (CLOS, Eifel, Beta, etc), they spent a butt load on marketing and gave the stuff away for free. In other industries it would be called "dumping." It wasn't just Sun giving Java away. It was also the beginning of the rise of Linux, also free. I remember a colleague pointing out "there is no money in tools anymore, there's a few niche islands left, but they'll fail too." I think neither of these articles aptly covers this counter trend enough. Whilst Smalltalk had come out of the kind of freeish academic research zone with its small band of developers of un-patroned developers trying to eke out a living, the industry was clamoring to free and open source. What I wouldn't give to have closures that were as simple and robust and approachable as Smalltalk in any of the languages I work in today (Swift, Kotlin, Python, Dart, C). (Did 20 years of Smalltalk, including 6 years at Cimcom)
- pjmlp 6y agoThat was definitely a major point.
- jecel 6y agoNot only did Sun lose a lot of money on Java, they got other people (I remember Borland and IBM but there were probably others) to throw away money for a few critical years. Why the new CEO of the merged ParcPlace/Digitalk thought it would be good idea to abandon the lucrative Smalltalk niche to focus his company on this bloodbath I will probably never know. https://www.cbronline.com/news/parcplace_throws_in_smalltalk_towel_heads_for_java/ https://www.cbronline.com/news/parcplace_throws_in_smalltalk...
- deleted 6y ago[deleted]
- dws 6y agoParcPlace hired a CEO who knew how to solve problems by buying and selling companies. It worked for him once or twice (he previously sold Ashton Tate to Borland).
- trashburger 6y agoDiscussions about Smalltalk almost always remind me of Self[0] from Sun. It is an extremely simple prototype-based programming language. An object can have many "parents", and defines properties on itself to expose an interface. It's really fun to mess around with. The Morphic UI is kind of archaic though. [0]: https://selflanguage.org/ https://selflanguage.org/
- discreteevent 6y agoDo you mean that the morphic ui is archaic looking? Because my impression of it is that it is still ahead of its time technically.
- Rochus 6y agoWhat you can download from https://selflanguage.org/ https://selflanguage.org/ looks rather archaic, not the improved version implemented on top of Squeak which looks and feals really fancy.
- russellallen 6y agoUnfortunately the version in Squeak is, in my opinion, fancy looking but a backwards step from the Self version in terms of the underlying system. Morphic doesn't seem to really fit all that well with class based systems.
- jecel 6y agoWhile being class based does make Squeak's Morphic a bit more awkward than Self's, the big difference is that it is a hybrid system that can run older MVC (Model View Controller) applications with little or no modification. That means that there are two different ways of doing most things and someone looking for examples to copy might run across the MVC version instead of the "proper" Morphic version.
- russellallen 6y ago
- jecel 6y agoThose are all very good points. Since Allen was there and I was not he is in a far better position to know. But my impression was that the Smalltalk group had been reasonably happy with their 8086 based NoteTaker computer and expected their partners (HP, Tektronix, Apple and DEC) to use commercial processors instead of designing custom ones. Even if they were far slower than the Xerox Dorado. About Squeak in a web browser, it was a completely different project than the current SqueakJS. Alan was frustrated that the IT people at schools wouldn't allow Squeak to be installed on their machines. So the native code VM was bundled into a plugin for the then popular web browsers and it became as easy to use Squeak as Flash. Except that the IT people allowed Flash but not Squeak so it ended up not helping. But in terms of performance it was better than Flash, Java (not Hotspot) or Javascript.
- radiowave 6y agoYes, my recollection of the Squeak browser plugin was that the performance was indistinguishable from running regular Squeak, several orders of magnitude better than SqueakJS. And the startup time was vastly better than any Java plugin code. However, if you were on dial-up, and your browser didn't already have a cached copy of the smalltalk image, then you were in for a quite a wait. (Though no doubt this could have been addressed - there were people arguing at the time for the creation of a much smaller Squeak image, but a combination of the lack of a clear goal to motivate this work, and the fact that for most existing users it was a non-issue, meant that nothing came of this within the timeframe where it might have made a difference.) But it may be that this is all moot, because it could be argued that any browser-plugin deployment model would ultimately fail.
- russellallen 6y agoI used the Squeak browser plugin with a class of university students in the late 90s - it worked really well. Native speed, much more interactive GUI than the browsers at that time, and I could update their essentially desktop app between classes and not have to get it reinstalled by IT. I did have to do some persuading to get IT to install the plugin in the first place though. It was doomed tech in hindsight though, together with all the other plugins.
- Ice_cream_suit 6y agoThe infantile interface and oh-so-precious baby talk that accompanies Squeak (a modern vision of Smalltalk 80) put me off the several times that I started to use it.
- dragonwriter 6y agoSo, why not just go to Pharo, which is both more modern and less child-oriented in presentation than Squeak, from which it derives?
- em-bee 6y agothat's one of the things that pharo improves upon.
- poulsbohemian 6y agoFor those of you smalltalk fans, what are you working in today / what would you prefer to be working in today given your history with smalltalk?
- Rochus 6y agoI'm not actually a "Smalltalk fan", but I recently re-implemented the Smalltalk-80 virtual machine and some additional tools to analyze the original Smalltalk-80 sources and virtual image files. My goal is to run it on LuaJIT and compare the performance with other Smalltalk implementations. See https://github.com/rochus-keller/Smalltalk https://github.com/rochus-keller/Smalltalk. I'm also working on a Simula 67 compiler, and a Golang to LuaJIT bytecode compiler is also on my list. As you can see I write everything in C++, which also says something.
- codefrau 6y agoCool. If I had a few free weekends I'd want to make that Smalltalk image run on my SqueakJS VM. One of theses days ...
- Rochus 6y agoHave a look at http://www.squeaksource.com/Hobbes/ http://www.squeaksource.com/Hobbes/, but don't expect impressive performance. It's not the code in the Bluebook part 4 though. If you want to implement it yourself be prepared that it might take many weekends until it runs as expected; debugging Bluebook errors took many hours.
- pjmlp 6y agoJava/.NET, which I think are the only mainstream ones close enough to the Smalltalk experience.
- jecel 6y agoI design processors optimized for Smalltalk.
- mkl 6y agoDoes anyone know where the strange name VisualAge came from? Wikipedia says "The name "VisualAge" is the result of a contest between the members of the development team." with no reference, and I can't understand how such an opaque and irrelevant-seeming name could win such a contest. "Visual" I get, but "Age"?
- radiowave 6y agoI imagine they meant it in the sense of "entering a new age".
- orthoxerox 6y agoThey likely implied that there was a Console Age that was coming to an end and their software would usher in the new age of computing.
- Rochus 6y agoIt's also recommended to have a look at other pages from Allan's site such as http://www.wirfs-brock.com/allen/things/smalltalk-things/tektronix-smalltalk-document-archive http://www.wirfs-brock.com/allen/things/smalltalk-things/tek... which is full of interesting facts and documents.
- deleted 6y ago[deleted]
- coldcode 6y agoI never used Smalltalk directly, but it's (weirdly) related cousin, Objective-C. My first exposure to OO was reading the Byte Magazine edition about Smalltalk (the one with the Balloon on the cover) which led me to experiment with adding OO to plain C in the late 80's (I did not have access to C++ or Objective-C at that time).
- markc 6y agoYes, I remember there was a OO programming style/discipline layered on C that was floating around in the mid 80's and I tried it out. (just found out there's a whole book about it - https://book.huihoo.com/pdf/object-oriented-programming-with-ansi-c/ooc.pdf https://book.huihoo.com/pdf/object-oriented-programming-with...) Shortly thereafter, C++ arrived in the form of "cfront" which was a cross-language translator that would generate .c and .h files from .cxx and you'd compile those with a C compiler. There was no actual C++ compiler at first.
- mark_l_watson 6y agoAs other people here have said, Java was a death knoll to large Smalltalk adoption. I had some early experience. A Xerox Special Information Systems salesperson gave me a one month Smalltalk license for my 1108 Lisp Machine. I really enjoyed it but I had already gone down the Lisp rabbit hole. Years later, a friend at Parcplace gave me a license but I got sucked into the Java world soon after (Sun had a link for a year on their main Java web page to a blog article I wrote on Java; for about 10 years I was the number one search result for 'java consultant'). I am back to using Common Lisp almost exclusively for my own projects and research but I do enjoy Pharo Smalltalk, and can't help but wonder if a free Pharo had been available in the mid to late 1990s how that might have changed things. Probably not much because Java does fit a good enterprise niche, but with the high license costs of Smalltalk, that war was lost.
- ken 6y ago> the Smalltalk value proposition was: Pay a lot of money to be locked in to slow software that exposes your IP, looks weird on screen and cannot interact well with anything else; it is much easier to maintain and develop though! Sounds like another framework we’ve got today, except now at least it’s free.
- entha_saava 6y agoI have a question to people who used smalltalk. Maybe I have read it somewhere but couldn't understand the unique advantage in modern day terms. What is so different in smalltalk that is not possible / easy in modern IDE+Debugger environments? Especially those with hot reload or 'Edit & Continue' features?
- xkriva11 6y agoCheck this: https://pharo.org/features https://pharo.org/features
- pjmlp 6y agoYou have access to the full stack, whereas even on .NET and Java there is a certain separation between runtime and lets call it user space. On a proper Smalltalk environment, beyond a set of pre-defined VM intrinsics you can access and change everything, GC, JIT compiler, compiler, how the debugger works, IDE like features, you name it. Then it is very uniform, everything is an object, even it isn't implemented as such, it is transparent for your as developer. The only other kind of environments that went as far were the Interlisp-D and Lisp Machines, to some extent the surviving commercial Common Lisps.
- entha_saava 6y ago> you can access and change everything, GC, JIT compiler, compiler, how the debugger works, IDE like features, you name it. Do you mind explaining what is use case for this?
- soapdog 6y agoAnyone here shipping a Smalltalk built application these days? I had fun playing with Pharo and Squeak, but in terms of shipping desktop apps to clients I don't know how it could be done with Smalltalk. Maybe Cincom is the only game in town, not sure. Anyone has a story to tell?
- woutgaze 6y agoCheck out our (web based) product at https://ag5.com https://ag5.com . We’ve built it with VisualWorks Smalltalk among other tools. Every year we ask ourselves if we should be using such an niche tool but somehow almost every new employee at our company gets hooked on smalltalk. So it now has become our secret superpower.
- deleted 6y ago[deleted]
- dws 6y agoScratch (https://scratch.mit.edu https://scratch.mit.edu) on millions of Raspberry Pis.
- adamfeldman 6y agoHas anyone recently used Pharo Smalltalk? How did its IDE functionality enhance your experience? "Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback (think IDE and OS rolled into one)." https://pharo.org/features https://pharo.org/features
- gambler 6y agoAfter trying it, going back to Java/C#/JavaScript was kind of rough. I realize that despite their external polish popular IDEs/languages today have some glaring, fundamental deficiencies.
- ngcc_hk 6y agoMy first encounter is Visage Smalltalk as part of the study to replace the VSE mainframe :-). But even the IBM SE is not that confident. Hence, we are off. (And strangely one of the issue is the source is too available, that the environment is too open to manipulate ... sorry just too used to COBOL and Java like fixed program than this dynamic things :-)). But for the main history, just read about how Steve Jobs during my search of HOPL 4 about Next history that he missed the two key elements of the Lab (Ethernet and Smalltalk). He fixed both on the Next computer and in fact the prototyping and performance of Interface Builder and the underlying Objective C is so much practical than Smalltalk is too complicated.