Ruby and Its Neighbors: Smalltalk

Smalltalk’s Image: Power and Controversy

  • Many comments highlight the “image” (a snapshot of the entire object graph) as Smalltalk’s most impressive feature: live state can be frozen, moved, and resumed, even across decades of evolution.
  • Others argue the same concept limited appeal: shipped images captured opaque, one-off states with no obvious build recipe, unlike today’s library‑ and file‑based ecosystems.
  • Some note that modern systems (macOS autosave, giant shared-library images, Docker) have gradually reinvented parts of this idea.

Versioning, Build Discipline, and Team Workflows

  • Critics claim images encouraged “cowboy coding” and made multi‑developer work and reproducibility hard.
  • Defenders respond that Smalltalk had method-level versioning, change logs, and sophisticated tools like Envy/Monticello and team workflows since the 1980s; the image should be treated as a throwaway cache, not the source of truth.
  • A recurring theme is that real pain points were lack of modularisation and global namespaces, plus cultural habits, not inherent image technology.

Malleability, End Users, and Comparisons with the Web

  • Smalltalk’s full introspection means end users can, in principle, inspect/modify everything. Some see this as a nightmare, others as a freedom feature akin to browser devtools.
  • In practice, deployed images can be stripped of tools, locked down, and wrapped as normal executables. Some systems also reset state on startup.

Deployment, Tree Shaking, and “OS Within an OS”

  • Questions about how commercial Smalltalk apps were delivered get answered: packagers “shake the tree”/strip dead code from the image, add a small native launcher, and ship a single executable.
  • The runtime can be made indistinguishable from a normal native app; no development UI needs to be exposed.

Live Environment vs Reproducibility

  • Several people praise the “you are in the running environment” experience: halt‑and‑continue, editing missing methods at breakpoints, and zero restart cost.
  • Others emphasize that this conflicts with reproducible debugging; they prefer deterministic replays, property-based testing, and database-backed workflows.

Smalltalk, Ruby, and Other Descendants

  • Ruby is seen as inheriting Smalltalk’s object model but not its image‑centric workflow; Rails pushed Ruby toward conventional file/VCS tooling.
  • Java is said to have “won” partly by being free, integrating better with existing tools, and being championed by vendors who had previously backed Smalltalk.
  • Newspeak, Elixir, and modern IDEs are mentioned as spiritual or partial successors to Smalltalk’s ideas, though none fully replicate the original image-centric vision.