rHXN

Back to the future: the story of Squeak, a practical Smalltalk written in itself [pdf] (1997)

http://www.vpri.org/pdf/tr1997001_backto.pdf
By: fanf2
HN Link
crystal_revenge - 2h 46m ago
I developed a (personal) Squeak application a few decades ago and to this day it stands out as a novel software development experience that I'm very glad I did. I highly recommend everyone even remotely interested in Smalltalk read the classic "Design Principles Behind Smalltalk" [0]

Perhaps the most immediately shocking feature of Squeak is the "world" which relates to the principle:

> Operating System: An operating system is a collection of things that don't fit into a language. There shouldn't be one.

This means all Squeak programs live in their own, entirely Squeak based, virtual machine. This was, understandably, off putting to many devs since you can't bring any of your local tooling with you, but it had some interesting consequences. For starters, way back in the early 2000s, you could keep your Squeak image on a thumb drive and bring your entire dev environment with you to not only different computers, but different OSes! Then, in the Squeak window system, you could view the source of any arbitrary window or part of the gui.

Squeak, despite the small community, had some really novel software at the time. Monticello was a dvcs that predated git! There were also a proper object graph database, GemStone, that could be used for object persistence that, at least from an interface level, still beats any ORM we have today. There was also a feature that allowed method lookup by putting in the inputs and expected outputs (I still haven't seen anything like this).

In general learning about the history of Smalltalk interactively really drove home how incredibly novel of a system is was, and still remains in some ways today.

0. https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk....

igouy - 53m 8s ago
> Squeak, despite the small community …

fwiw GemStone (and other commercial Smalltalk implementations) preceded Squeak.

verytrivial - 23m 26s ago
Not quibbling at all, but I recall some discussion somewhere saying that the history of the Squeak impl itself (not the name) traces back via saved base images to the original Smalltalk implementations, including via customs at-rest transformation tools when backwards incompatible changed where made in the primordial days. Base images, at least back when I was toying with Squeak, where never rebuilt from scratch, just modified, transformed etc. In some sense, at least for the image, they were decades old.
igouy - 13m 9s ago
I've never implemented Squeak or any other Smalltalk.
hosh - 2h 16m ago
I am very interested in the combination of Smalltalk and local-first (offline-first) designs, and the ability to share code and data on ad-hoc networks.

I know the One Laptop Per Child project started with Squeak (Scratch) with this in mind, but Scratch has since moved to an always-on Internet and Python for the environment.

I know there is a preoccupation on LLMs and vibe coding … but just as there is a smallweb movement keeping that torch lit in a sea of enshittification, there is something to be said about a development environment that can be customized by end users. For example, a website/blog authoring tool or RSS feed reader written in Smalltalk would be interesting, if not directly monetizable.

znpy - 32m 4s ago
> > Operating System: An operating system is a collection of things that don't fit into a language. There shouldn't be one.

Squeak/Pharo and Smalltalk in general never took off (and it’s unlikely they ever will) because of this mindset.

I dabbled a bit with pharo and this mindset became evident pretty much immediately.

The thing is: for many things pharo/squeak are really shitty runtimes (think smp/threading, high-throughput or low-latency i/o, network protocols support etc). But the OS is generally great in that sense.

Smalltalk is nice but it will never get past the “toy language” phase with that attitude.

Also: in terms of object database Versant OODBMS is much better :P

conartist6 - 6days 21h ago
It's really cool how much of this feels familiar to me from my own experience building and evolving bootstrapped systems
cmrdporcupine - 4h 57m ago
It's really a shame that the early history of Smalltalk-80 was such that it remained too locked up in licensing and $$ implementations and so didn't get a broader penetration. That and it was about a generation or two ahead of the extant microcomputing hardware at the time, so wasn't going to be shippable in a performant way on a general consumer class machine even by the time the Lisa and Mac shipped in the mid-80s.

I was very excited by Squeak in the late 90s (and even more excited by Self), but it was clear that the time of Smalltalk being able to make any kind of broader splash was done, and Java was where people's attention switched.

Imagine if a consumer focused machine like the Macintosh had shipped, but based fully on Smalltalk, with an authoring environment built on it for "regular people". The closest we got to this was Hypercard.

igouy - 2h 56m ago
March 7, 1988 — "Smalltalk/V 286 is available now and costs $199.95, the company said. Registered users of Digitalk's Smalltalk/V can upgrade for $75 until June 1."

https://books.google.com/books?id=CD8EAAAAMBAJ&lpg=PA25&dq=d...

Qem - 1h 17m ago
Inflation-adjusted, those prices today would correspond to ~$552.2 and ~$207.6
igouy - 1h 2m ago
Look at other 1988 prices for dev tools.
pjmlp - 2h 19m ago
It was perfectly accessible on Windows 3.x days, I learnt Smalltalk with Smalltalk/V.

It was the .NET of OS/2 and getting into enterprise, until Java came to be, and IBM one of the big Smalltalk backers, decided to pivot into Java.

shaunxcode - 3h 33m ago
It’s comforting to remember that a lot of the research from st/self eg hotspot went into the jvm. So whenever I am writing clojure I feel I am still, in a way, hanging out with all of my (lang) friends.
b00ty4breakfast - 3h 44m ago
the whole Smalltalk saga is a bit of a tragedy looking back (EDIT: as someone who didn't live through that era) through the context of the current state of consumer computing being so "non-convivial", if I can borrow a phrase from Ivan Illich. Empowering users by allowing them to conform the tools to their own usecase often feels like the exact opposite paradigm of the modern milieu.

Or maybe I'm just entering my "old man yells at cloud" phase of life haha

igouy - 2h 50m ago
mwnorman2 - 1h 42m ago
Well, I DID live through that era and I AM the 'old-man-yelling-at-clouds' ;-) and the main issue was that getting Smalltalk developers was a HUGE headache. I worked for a Telecom company (Canada's largest, rhymes with 'Ortel') and we needed to develop our own courses - yours truly developed and delivered dozens of hours of training.

This lead to some extraordinary per-diem charges that I knew some folks enjoyed for a while, mostly paid for by the Financial industry. Eventually those on the paying side looked for cheaper alternatives .. and yes, the new-kid-on-the-block Java played a big role, but so did Visual Basic!

igouy - 32m 48s ago
'We read and heard many stories about confident and experienced programmers plunging into self-study tutorials, only to give up in frustration after several hours, still wondering, "Where is the application code?" The object paradigm, in which program control is distributed across a set of tightly encapsulated and high-function software objects, was alien to experts in procedural design.

… to use Smalltalk fluently, a programmer must become familiar with a huge class hierarchy and with the tools of a sophisticated interactive programming environment. New programmers often became lost in the hierarchy or spent considerable time in unfocused exploration of the interactive tools.'

"Making Use: scenario-based design of human-computer interactions", 2000, page 103

https://www.google.com/books/edition/Making_Use/s-0ZuadhBBAC...

em-bee - 26m 50s ago
doesn't sound much different than studying the class library of any other language.
igouy - 21m 41s ago
The past is a foreign country …
gnabgib - 6days 2h ago
(1997)