What is the Ruby Legacy?

The world is changed, I feel it in the water, I feel it in the earth. I smell it in the air.

—Galadriel

This article was extracted and adapted from the intro to a keynote I delivered in 2015 in Porto de Galinhas, Brighton, Austin, and Braga.

20 years ago there was a little explosion of programming languages. Computer hardware had advanced to the point where it was finally possible to write “serious” programs in what were called, at the time, “scripting languages”. Languages like TCL, Perl, Python, and, of course, Ruby.

These languages were different in that they had no compilation step before running. They were dynamically typed, and dynamic in other ways as well. They were higher-level than the general-purpose programming languages of the time. You didn't have to manage memory in them. You didn't have to keep track of loop indexes while iterating through lists or arrays.

As a programmer who came of age during this era, I was fascinated by these languages. I learned them, I tried to sneak them into my workplace, and I dreamed of a day when I might spend all day programming without once dereferencing a null pointer.

Now, in 2020, I live in a world of programming that has been permanently changed by the “scripting language” revolution. A huge percentage of software systems are written in high-level, dynamic languages. I haven't been paid to work on C or C++ or Java code for many years. These traditional languages have been even been influenced by the scripting languages, adding features like foreach loops and lambdas.

Five years ago, I looked out on the programming language today, and saw a new explosion of variety. Many programmers were looking beyond Ruby or Python or Perl to languages that were either new or which hade received fresh interest and vitality. Languages such as Clojure, Erlang, Scala, Go, Elixir, Rust, Haskell, Elm, Idris, and even a newly-energized JavaScript.

Programming languages seldom die. But what I observed five years ago is even more true now: those who identify (or formerly identified) as Ruby programmers have begun to live in a post-Ruby world.

And this is exactly as it should be. When I met Ruby, it was in the company of a loose group of programmers who read The Pragmatic Programmer, and tried to follow its advice of learning a new programming language every year. They were people who believed that there was no such thing as an “Omega Language”; one language to rule them all. Just different tools, with different strengths and weaknesses.

Today we are in the midst of a cusp, or perhaps a few steps beyond it. We are at the beginning of the end of the “Ruby boom”. I already hear from companies looking for experienced Ruby devs to “maintain our legacy Ruby systems”.

“Legacy” is a word with a negative connotation in the programming lexicon. But legacies aren't always bad. My first car was a Subaru Legacy wagon, and it's the best car I've ever owned.

Seriously though, I think it's worthwhile as we stand at this point, to reflect on what the legacy of Ruby and the Ruby community will be. What are the values that we will bring with us to new languages and new communities?

I have some thoughts on this, which I hope to expand on in future articles. They center around the values of informality, whimsy, and exuberance.

But if you've been part of this Ruby journey too, I'm curious to hear from you. What do you think of when you think of the Ruby legacy? What are the lessons that we have learned, and will teach others?