Christmas Day, 1996: Ruby 1.0
Abstract
Yukihiro “Matz” Matsumoto began work on Ruby on February 24, 1993, the day he and colleague Keiju Ishitsuka settled on the name in an online chat, before any code existed. The first public release (0.95) followed on December 21, 1995, and Ruby 1.0 shipped on December 25, 1996. Christmas became the language’s release ritual: major Ruby versions still traditionally appear on December 25. Matsumoto’s stated goal was a programming language that made programmers happy, one that optimized for developer joy rather than machine efficiency. Ruby on Rails (2004) brought it to international prominence.
The Design Goal
Yukihiro Matsumoto was a Japanese programmer who had been using Perl and Python and found both unsatisfying in different ways. He wanted a language that was object-oriented in a pure sense (everything is an object, including integers and strings), that provided high-level abstractions for common tasks, and that allowed multiple programming styles (object-oriented, functional, and imperative) without imposing any of them.
His design principle was the “principle of least surprise”: the language should behave in ways that an experienced programmer would expect, without requiring memorization of special cases. Every feature should have a consistent, predictable interface.
The name “Ruby” came from that February 1993 chat: two candidates were proposed, “Coral” and “Ruby”, and Matsumoto picked Ruby, partly because it was a colleague’s birthstone. The fitting succession, pearl is the June birthstone and ruby the July one, so Ruby follows Perl, was noticed afterward as a happy coincidence.
What Made It Different
Ruby introduced or popularized several features that influenced later languages:
Blocks and closures: Every method can accept a block of code as an argument, enabling a natural syntax for iteration, resource management, and callbacks. [1,2,3].each { |n| puts n } passes a block to the each method.
Open classes: Any class, including built-in classes like String and Integer, can be extended with new methods at runtime. 5.times { puts "hello" } works because Integer responds to the times message.
Symbol objects: Symbols (:name, :value) are lightweight string-like objects used as hash keys and identifiers, a distinction that clarifies code and improves performance.
Method missing: Classes can define behavior for undefined method calls, enabling proxy objects and domain-specific language construction.
Little of this was invented in Ruby: blocks, open classes, and symbols came from Smalltalk and Lisp. Ruby’s contribution was packaging them in a scripting language that ordinary web programmers adopted, years before similar idioms became common in Python or JavaScript practice.
Ruby on Rails
Ruby remained a niche language outside Japan until 2004, when David Heinemeier Hansson (DHH) extracted the web framework from the Basecamp project management application and released it as Ruby on Rails. Rails demonstrated that a full-featured web application could be built with dramatically less code than the Java enterprise frameworks then dominant, by following “convention over configuration”, the framework made sensible assumptions, reducing the amount of explicit setup required.
Rails influenced web development broadly: Django (Python), Laravel (PHP), and other frameworks adopted Rails conventions. The story of Ruby on Rails is part of the Rise of SaaS and the broader web development evolution.
Matsumoto designed Ruby to be fun. “I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy.” The annual Christmas release fits the intention.
📚 Sources
- About Ruby — ruby-lang.org (official history: 1993 naming, 1995 first release)
- Ruby (programming language) — Wikipedia (release chronology, Ruby 1.0 on December 25, 1996)
- Matsumoto, Yukihiro & Fulton, Hal: The Ruby Way, 3rd ed. (2015), Addison-Wesley
- Thomas, Dave, Fowler, Chad & Hunt, Andy: Programming Ruby: The Pragmatic Programmers’ Guide, 4th ed. (2013), Pragmatic Bookshelf
- Ruby on Rails — Wikipedia
- SitePoint: “The History of Ruby” (naming chat 1993, Ruby 1.0 on December 25, 1996)