The Ruby language is 21 years old. Its strong community and adoption by the open source community has kept this language steady and improving. Ruby has changed drastically over the years. It has grown from a young child to the strong adult that it is today. But it didn’t get that way overnight. Let’s take a look at the life of the Ruby programming language.

Note: This article is packed with metaphors (language to human), so be prepared.

Birth (1993)

Ruby was born in 1993, conceieved in a discussion between Yukihiro Matsumoto (“Matz”) and a colleague. They were discussing the possibility of an object-oriented scripting-language. Matz stated in ruby-talk:00382 that he knew Perl, but did not like it very much; that it had the smell of a “toy” language. He also discussed that he knew Python, but didn’t like it because it wasn’t a true object-oriented programming language.

Matz wanted a language perfect for his needs:

Syntactically Simple

Truly Object-Oriented

Having Iterators and Closures

Exception Handling

Garbage Collection

Portable

Having looked around and not found a language suited for him, Yukihiro Matsumoto decided to create his own. After spending several months writing an interpreter, Matz finally published the first public version of Ruby (0.95) to various Japanese domestic newsgroups in December, 1995. You can still download the infant version of Ruby here at your own risk.

Toddler Years

Ruby became a toddler (n.: a young child who is just beginning to walk) when Ruby 1.0 was released in December, 1996. Ruby 1.1 shortly followed in August of 1997, and the first stable version of Ruby (1.2) was released in December of 1998.

At this point in time, Ruby was localized to Japan only, but it would soon spread to other parts of the world…

Primary School Years

In 1998, Matz created a simple English homepage for Ruby. However, Ruby was still very localized to Japan. In trying to further this expansion, the first English language Ruby mailing list, Ruby-Talk, was created. Ruby was beginning to spread beyond Japan.

Ruby-Talk is still very active today, and you can subscribe to it here.

In October of 1999, Yukihiro Matsumoto and Keiju Ishitsuka wrote the first book on the Ruby programming language: The Object-oriented Scripting Language Ruby. Ruby was beginning to get very popular in Japan, and spreading rapidly to English-speaking countries.

In 2001, the first English book on Ruby, Programming Ruby (“The Pickaxe”), was published in 2001. With this new information on Ruby, many more people were able to learn the language.

Ruby 1.8 was released in 2003. This release made large amounts of changes to the agile 10-year-old language. Including:

Duck Typing (looks like a duck, swims like a duck, quacks like a duck: it’s a duck)

Fully Qualified Names ( Foo::Bar )

) Native YAML Support

WEBrick

StringIO

open-uri

PP (Pretty Printer for Hash#inspect )

) ruby -run (UNIX commands for all! ruby -run -e mkdir foo )

(UNIX commands for all! ) And many other minor features

In 2004, RubyGems was released to the public. Good things started happening next…

The Rebellious Teenager

In 2005, Ruby use took off. The reason: Ruby on Rails. This new framework changed the history of rapid web development. Ruby had been used in the past to write CGI scripts, but Ruby on Rails took this a step further. Rails has a Model-View-Controller structure that focuses on “convention over configuration”, which is great for developing web applications.

People loved it. So much so that, the Ruby community was almost taken over by the Rails framework. Ruby in turn became very popular.

In March of 2007, Ruby 1.8.6 was released, with 1.8.7 following in May of 2008. At this point, Ruby was at its peak. Mac OS X even began shipping with it in 2007. At this point, Ruby was 15 years old.

Ruby 1.9 (development version) was released in December, 2007, then stabilized 4 years later (2011) as Ruby 1.9.3. Ruby 1.9.3 was the production version of 1.9.2. These versions brought new changes to the language, such as:

Significant speed improvements

New methods

New hash syntax ( { foo: 'bar' } )

) RubyGems included

New Socket API (IPv6 support)

Several random number generators

Regular Expression improvements

File loading performance improvements

Test::Unit Improvements

New encoding support

More string formatting tweaks

And so much more

Ruby was making the transition from a rebellious teenager to a strong adult as it turned 18 with Ruby 1.9.3.

Strong Adult

Ruby 2.0.0 was released in February 2013 and brought many stabilizing changes to the language. Among them are:

More speed improvements

Refinements (safe monkey patching)

Keyword arguments

UTF-8 by default

New regular expressions engine

Optimized garbage collection

The addition of built-in syntax documentation ( ri ruby:syntax )

Unlike 1.9.x, which broke numerous gems with its changes, 2.0.0 was almost completely backwards compatible with 1.9.3. In addition, Heroku, one of the leading Ruby/Rails hosts upgraded to 2.0.0 quickly, causing earlier than usual adoption by new and existing projects. The Ruby language was (and is) in its golden age.

Ruby 2.1.0 was released on Christmas day of 2013. It brought several minor changes to the language. But the biggest news of 2.1.0 was semantic versioning, a way to properly version a project without breaking dependencies by accident.

Ruby 2.1.1 was released on Ruby’s 21st birthday (February 24, 2014). Ruby is now legally allowed to drink in the US (not that we’d want it to). This version was mainly speed improvements and bugfixes. Shortly after 2.1.1, Ruby 2.1.2 was released in May of 2014. 2.1.2 consists of more bugfixes and is the current stable version of Ruby.

The Future

Ruby is a great language. Matz wanted a programming language that suited his needs, so he built one. This is an inspiring story of software development: if you can’t find something that you like, program it yourself. From 0.95 to 2.1.2, Ruby has struck the awe of those who wished to program the way they wanted, not the way the machine wanted.

We can’t know the future of the Ruby language, but we can predict it based on the past. I believe that the Ruby language, and its fantastic community will continue furthering the language above and beyond what others think is possible, and projects built using it will do the same.