Ruby and Python, so similar and so different. By which I mean, “the languages let you do the same things in most of the same ways, but the communities are utterly different.”
Python says, there should be one — and preferably only one — obvious way to do it.
Ruby, like Perl, says there’s more than one way to do it. More specifically, the community is okay with there being more than one way to do it.
Python tries very hard to keep a single consensus. The Ruby community says, “have fun, come back, show us what you built!”
The Ruby folks tolerate the mistakes, steal the best stuff, and adopt it — we think everybody should have really sharp tools.
And, sure, sometimes there are problems.
Problems and Solutions
If you take the best 2% of utter chaos, you get some chaos in the results. “Best” is hard to judge, right?
So you get wildly different tools and ideas every few years — RubyGems, Hoe, Bundler, RVM, Haml, Decent_Exposure)… And somehow, the community takes it all in good humor. There’s a little fashion-mongering — “nobody’s still using RVM, dahling, it’s all rbenv these days!”. But mostly, we take the best, adopt it and keep building great software.
The Ruby community reminds me, over and over, of Warren Ellis’ Transmetropolitan. It’s about a wonderfully dystopian future and a whacked-out journalist as your view into it…
This city never allowed itself to decay or degrade. It’s wildly, intensely growing. It’s a loud bright stinking mess.
It takes strength from its thousands of cultures, and the thousands more that grow anew each day.
— Spider Jerusalem, Transmetropolitan
The Ruby community is exactly that kind of loud, bright, stinking mess.
And as he says… “but God help me, I can’t imagine living anywhere else.”