3 Themes from RubyConf 2017: What If Ruby?
In November I attended my first RubyConf and spent a whirlwind three days trying to learn all the things. Now that the dust has settled, here is the first of three themes that have crystalized, which I know I will find myself mulling over for weeks to come.
1. What if Ruby…?
In February 2018, Ruby will be 25 years old, and this year’s conference posed a lot of questions about the language. Yukihiro Matsumoto’s keynote questioned how he as a language designer can avoid breaking changes while still pushing new and exciting versions. And in the midst of trying to make Ruby 3 three times faster than Ruby 2, how can developer happiness continue to balance against performance?
Other speakers asked more questions about the nature of Ruby and its limitations, or lack thereof:
- What if Ruby were statically typed?
- What if Ruby were concurrent?
- What if we wrote functional Ruby that looks like clojure? (Spoiler: you can!)
- What if we wrote Ruby programs that were made entirely of symbols, or entirely of text?
@ericqweinstein posed the first two questions in his talk and dived into the tradeoffs inherent in these potential changes to the language. For example, he highlighted that static typing would boost execution speed and safety in compile-time checks, but it would decrease programming speed. What he didn’t say is that these tradeoffs might change Ruby’s nature entirely, making it feel, perhaps, significantly less “nice” than Matz originally designed it to be.
Speakers like Alex Wheeler and Yusuke Endoh took a different approach, pushing the boundaries of the language to investigate its power. Wheeler’s talk demoed a rewrite of Rack in a functional manner, writing Ruby that looked like clojure, parenthesis and all. The Ruby he wrote was so terse, so un-Ruby-like, and it was clear he was having a great time with it.
Endoh demoed a few of his world-famous quines, programs that generate other programs on execution. But he started with two much more simple programs, one written entirely in symbols and one written entirely in text. They were each many lines long, but simply printed “Hello RubyConf!” when executed. They reminded me less of programs and more of poems with their strict formal constraints.
The playfulness of Wheeler and Endoh’s talks emphasized something key about the Ruby community, that for better or worse people love the acrobatics they can do with the language. As Ruby continues to evolve, the community will have to address this key tension: In order to gain the advantages of performance, thread-safety, and static-typing, how much are we willing to sacrifice of Ruby’s playfulness and flexibility?