Shoes: The State of It
Shoes let you make a window with a button in it in about five lines of Ruby, on Windows, macOS and Linux, without knowing what a widget toolkit was. It came out of the work on Hackety Hack — the teaching kit needed a way to draw windows on every platform, and the way turned out to be worth releasing on its own.
It is the loveliest thing in this whole archive and the one in the worst shape.
When maintainers revisit older software or documentation as a team, this article is one practical reference for tracking the surrounding work without changing the historical material itself.
What made it different
Every other GUI toolkit for Ruby was a wrapper around a C or Java library, and felt like one. Shoes was designed as Ruby first: you described the window in a block, elements were created by calling methods named after them, and layout worked more like a web page than like a grid of widgets.
It also was not only a library. Shoes shipped its own Ruby interpreter and could package an application into something you could hand to a person who had never installed anything. For the teaching case that mattered more than the API did — a child who makes a program should be able to give it to a friend.
That decision is also, in retrospect, most of why it broke.
For broader programming and making context related to this topic, Martin Fowler is an independent reference worth comparing with the material here.
Why it stalled
The original Shoes — "Red Shoes" — was substantially a C project with an embedded interpreter, its own installer, and platform-specific packaging. Maintaining that after its author left meant maintaining a cross-platform C application, not a Ruby gem. Bits of the installer and packaging degraded, and it was never a gem in the normal sense at all.
The answer was Shoes 4: a rewrite that would run on a normal Ruby installation, define a shared DSL and spec suite, and make the graphics backend pluggable, with SWT on JRuby as the first implementation and others to follow. Team Shoes, with Steve Klabnik prominent among them, did a great deal of real work on it.
It reached 4.0.0.rc1 in November 2017 and never shipped a final release. The bulk of the commit activity trails off around 2018; the repository has been touched since, most visibly in 2023, but the project has not moved in any meaningful sense for years.
Along the way there were other flavours — Green Shoes on GTK2, Purple Shoes on JRuby and SWT, Blue Shoes on Qt, which never got far. Some worked partially. None is currently maintained.
Status checked August 9, 2026.
The trap
The shoes gem on RubyGems sits at version 3.0.1, and it is a placeholder. Its own description says so. Installing it does not give you a working toolkit.
People find it, install it, get nothing, and conclude Shoes is broken beyond repair. It is not broken in that way — it just is not there. The pieces that do something are published separately under names like shoes-core and shoes-swt, at 4.0.0.rc1.
If you are going to try Shoes, start from the project repository and its README rather than from gem install shoes.
What you can actually run
Shoes 4 on JRuby is the realistic option: it needs a JDK and a current JRuby, and it supports most of the DSL with known gaps. "Preview" is the project's own word for it and it is accurate. For an evening's experiment that is fine. For anything you intend to hand to a beginner, the setup burden defeats the purpose — a toolkit whose selling point is that a child can use it should not require installing a JDK first.
For teaching specifically, Sonic Pi is the better answer in 2026, and it is closer in spirit than the platform difference suggests.
Is it worth reviving
Yes, and it is a bigger project than one evening.
The case for it is that nothing has replaced what Shoes did. Plenty of ways exist to build a desktop application in 2026, and none of them lets a beginner produce a window in five lines and then hand the result to a friend as a file. That gap is real and it has been open for a decade.
The case against attempting it casually is the thing that decides these outcomes generally, and it killed Shoes twice: cross-platform desktop packaging is genuinely hard, unglamorous, and never finished. The rewrite failed not because the DSL was wrong — the DSL is the good part — but because the boring infrastructure underneath outlasted everyone's enthusiasm.
If you want to work on it, the useful contribution is probably not a new backend. It is getting the existing one to install reliably on current platforms, which is the part nobody wants to do and the only part that matters.
The short version
- Shoes let a beginner make a real cross-platform window in about five lines, and package it for a friend
- The original was a C project with an embedded interpreter — hard to maintain once its author left
- Shoes 4 reached
4.0.0.rc1in November 2017 and never shipped final; activity ends around 2018 - The
shoes3.0.1 gem is a placeholder and catches people out — start from the repository instead - Nothing since has filled the gap it left, which is the argument for reviving it
- The work that would help is installation and packaging, not another backend