A friend of mine, who is a Ruby developer but a little less immersed in the Ruby culture than I, was recently boggling at the excitement around the new VMs (Rubinius, JRuby…) and new frameworks (Merb, Sinatra…). “Wait,” he said. “They’re replacing Ruby, and they’re replacing Rails. So what the heck defines the Ruby on Rails community, if both Ruby and Rails are replaceable?”
Good question. Peter Cooper wrote “‘Ruby’ is starting to represent both a community and a language ‘ideal’ rather than just a single, well-defined programming language.” I agree. But what are the specific traits that bind the Ruby community together?
I suspect that there will be surprising divergence of opinion on this subject. But here’s my answer, in the form of a two characteristics that I believe all Rubyists share.
First, Rubyists love elegance. We want to solve problems in a simple and elegant fashion. Most programming languages and software infrastructure feels like the inside of a industrial revolution-era factory: it gets the job done, but it sure ain’t pretty. Rubyists create things that have the minimalist and pleasing aesthetic of a haiku or a Zen garden. We are so committed to elegance that given the choice between an inelegant solution and none at all, we typically choose the latter.
The second, and more subtle point: Rubyists are dynamists. We have a deep understanding of the infinite series of technological progress: each stage of advancement building on the next. There is no such thing as perfection: anything and everything can be improved upon. In this, we are not afraid to swap out any component with a superior replacement. Apache giving way to Nginx, Subversion giving way to Git, Prototype giving way to JQuery, Mongrel giving way to Thin, Test::Unit giving way to RSpec. Even our most fundamental foundation components - Ruby and Rails - are not safe, if someone can build better replacements.