On June 7, 2010, the developers of PLT Scheme announced that their programming language was taking a new name: Racket. The project was already the product of more than fifteen years of development, backed by a mature software base and an established user community.
The team said calling the system Scheme usually forced them to begin explanations with a disclaimer. The new name was chosen to clarify what the language-building platform offered, with an explicit commitment to continued Scheme compatibility.
Outsiders who typed “scheme” into Google found standard reference pages describing a minimalist dialect of Lisp defined by language specifications such as R5RS, the fifth revision of the Scheme language report. That description fit academic specifications, but it gave developers an inaccurate impression of what the PLT ecosystem actually offered. Rather than a tiny pedagogical core, PLT Scheme had grown into a comprehensive platform equipped with graphical toolkits, web servers, macro systems, contractual interfaces, and optional static typing.
The Obstacle of an Inherited Name
In the project’s official announcement posted by developer Eli Barzilay and an accompanying transition document, the team detailed the communication obstacle. The naming document noted that while the implementation shared ancestry and core syntax with Scheme, calling it Scheme obscured features like modules, contracts, classes, and static types.
The name also created unintended friction with the broader Scheme community. Through textbooks, academic publications, and educational outreach, the PLT team held considerable visibility in the programming language world. The team recognized that their expansive software interfered with other groups who had an equal right to define what Scheme meant. Keeping the name risked defining Scheme in a way that crowded out independent implementations.
Renaming the Tools Without Breaking the Past
Renaming an established programming language after fifteen years carries immediate operational hazards. Tool chains, build scripts, educational curricula, and personal libraries rely on exact commands and filenames. The PLT developers chose a coordinated transition across their software distribution rather than an abrupt break.
The graphical programming environment DrScheme was renamed DrRacket. The primary command-line executable, mzscheme, became racket, while the graphical interpreter mred became gracket. Within source files, modules that began with the declaration #lang scheme were systematically migrated to #lang racket across the official distribution. Web domains, mailing lists, and documentation shifted their addresses, pointing users to the new identity.
The team treated backward compatibility as an explicit engineering commitment. The naming document promised continued support for #lang scheme and stated that old executables, websites, mailing addresses, and module names would forward to their modern counterparts. The team also pledged continued support for formal Scheme standards including R5RS and R6RS, the sixth revision of the Scheme report, reassuring educators that they could still teach Scheme concepts inside DrRacket.
A Platform for Building Other Languages
The name change also clarified the system’s central architectural capability: language creation. Racket was not merely an interpreter for a single language; it was a framework for defining entirely new programming languages. The current Racket Guide explains the architecture in more detail: macros extend syntax at the expander layer, while additional facilities let programmers customize the reader, define an expander starting point, and package the two as a named language selected with a #lang line.
By 2010, the distribution already accommodated multiple working paradigms. Programmers could write web services without explicit type declarations, enforce strict interface contracts across module boundaries, or switch to Typed Racket to verify types at compile time. They could even experiment with purely functional programming and lazy evaluation within the same software suite. Calling all of these distinct tools “Scheme” obscured the fact that the underlying engine was designed to host diverse linguistic styles.
Accepting the Cost of Brand Recognition
The developers acknowledged a trade-off: abandoning the name Scheme risked losing established brand recognition. Searching for “racket” risked returning sports equipment rather than programming tools. Some members of the team had informally tried calling the language PLT, but found it awkward because PLT referred to the group of people and served as a modifier for Scheme and other nouns.
The team concluded that a clearer name outweighed the immediate friction of migrating users. The new name described the platform’s scope; compatibility support gave existing users a path through the transition.
For developers planning a similar migration, the project’s approach suggests treating the new identity and backward compatibility as one plan. PLT Scheme became Racket, while existing code could still begin with #lang scheme.
Related stories
Sources
- Racket Announcement (Official Blog, June 7, 2010)
- Racket: From PLT Scheme to Racket (Official Naming FAQ)
- Dialects of Racket and Scheme (The Racket Guide)
- Creating Languages (The Racket Guide)
- Featured image: MichaelMaggs; Wikimedia Commons; CC BY-SA 3.0 (adapted from the original)

Leave a Reply