Wednesday, April 29, 2009

Stand and Be Counted

In the spirit of Nick Sieger's short statement on the recent uproar over Matt Aimonetti's "pr0n star" talk, I'm posting my one and only blog response to the whole thing.

Unlike Nick, I too often have used this blog as a soapbox. And too often I've ground my personal axe against projects that may or may not have deserved it. I'm human, I'm passionate and proud of my work, and I'm defensive of what we've accomplished, so I don't think this is surprising. I also see the same passion and pride in the Ruby community at large, and it's why I'm much more interested in attending Ruby conferences than Java conferences, where many attendees just seem to be going through the motions. And I know I've crossed a line at times, making or taking things too personal, and hopefully I've apologized or corrected myself whenever that's happened. If not, mea culpa.

But there's a disturbing trend in the Ruby community I haven't had to deal with since high school: in preference to open inclusion, more and more Rubyists seem to choose exclusivity.

This recent firestorm has continued in large part, I believe, because of the poor initial response by folks involved. Rather than recognize that there are people with different views, taking offense at different ideas and images, some decided to say "fuck you, this is who I am" and further alienate those people. I certainly don't expect we as passionate individuals won't commit occasional faux pas, especially when trying to be funny or provocative and especially when coming from different backgrounds that may be more or less accepting of certain behaviors. But to claim no responsibility for an obvious mistake, indeed to claim it's somehow the fault of the offended, or American sensibility, or political correctness...well that's just sophomoric.

I think to some extent we can understand (but not excuse) such behavior by realizing that the Ruby (or perhaps the Rails) community is largely a very *young* community. That's a large part of why this community is so passionate, why they're so committed to their ideals, why they're so opinionated, why they're so much more fun to hang out with than many 30-year programmers from other communities who've had the life sucked out of them. It's also a reason so many in the Ruby (or perhaps the Rails) community seem to act like they're in high school, forming cliques, sitting at their own tables, snubbing the new kids or the weird kids or anyone they perceive as "trying to be cool."

Have you been invited to any exclusive Ruby communities? I've been invited to a couple, and without exception I've found the idea offensive every time. In some cities, there are now multiple tiers of Ruby group: one for the proles, where anyone is welcome and everyone is either new to Ruby, a little weird, or both; and then perhaps one or two levels of more "exclusive" groups, usually more "advanced" and sometimes invite-only but generally exclusionary in some way.

There's also a technical "coolness" exclusivity many projects have had to cope with. Folks working on JRuby and IronRuby, for example, have had to deal with perceptions that they're either less "cool" because of their platform of choice or at least somehow less "Ruby" because they're not following the same golden path everyone else follows. Or perhaps their employers are out to take over Ruby, or they're going to infect Ruby with a bunch more "new" people who don't "get it". All the while the folks that use and work on these projects are working just as hard as anyone else to bring Ruby to the world, staying true to what makes Ruby special, and largely going against the grain in their original communities as well. Being snubbed, mocked, or attacked is often their reward.

You start to see a pattern here, yes?

So let's spell it out. I like the Ruby community because it's filled with people who love playing with new technology, without biases and prejudices getting in the way. My closest friends in the community are people like me, who find it repugnant that being opinionated has been too often equated with being rude and boorish, exclusionary and sophomoric, or simply mean. We are all here because of our love of technology, all here because we didn't feel like we fit in other places that weren't so passionate about beautiful code and fresh ideas. We are all here because we don't care if you're male or female, religious or irreligious, young or old, experienced or inexperienced, beautiful or plain, conservative or liberal, tall or short, fat or thin, foreign or domestic, gay or straight, black or white, or any grey areas in-between. We are all here because we love that more and more people like us join the community every day...the same people some of us immediately judge and box into their own subcool subgroups.

I don't want to join your damn clique. I don't think it's ok to set people aside or treat them like dirt because they don't believe what you believe or because they have their own way of thinking and acting or because they're not as worldly and mature and oh-so-smug as you are. I don't believe in "rock stars" and I don't believe that dubious title gives anyone the right to be an asshole to others or to have free reign to act any way they choose. I don't care what kind of car you drive, what house you live in, or what clothes you wear...and I sure as hell don't care how many people follow you on Twitter.

What I do care about is whether you're interested in sitting down and hacking out some code, looking at new projects with an open mind, helping someone new (maybe me) improve their skills, being part of something larger than yourself. If you promise not to treat me like a weirdo or a rock star, I promise to talk openly about your ideas, to show you the heart and soul of my code, and to freely share my matter who you are. I hope you'll attend my presentations and/or try out my projects, and in exchange I'll try to do the same the same for you. I hope you'll walk up to me at conferences and tell me about whatever "crazy" or "stupid" idea you have, and I guarantee to listen since it's probably not as crazy or stupid as you think. And I expect you to do the same for everyone else in the community and not treat me or anyone else any differently.

Now, let's move forward and get back to hacking and having fun!


  1. Great post, I really enjoyed it. I stay(ed) away from a lot of Ruby users groups due to this exclusivity and bitchyness that sometimes rears it's ugly head. Bring on more friendly folks who want to hack and work on great ideas ...

  2. Good Stuff!! Being picky about who you want using "your" technology is the most stupid thing I have ever heard!! Grow up guys! :)

  3. Great post. I fell acidently into the Ruby world (and so.. soon after, into Rails) simply because I said yes to a collegue who wanted us to use Ruby on our project in 2005. That moment of "love at first sight" comes to all people in different ways. I was hooked.. not by coolness, not by elitism, I was hooked on getting more done in less time... I was hooked on understanding OO better though Ruby eyes, I would also invite new-blood to enjoy Ruby (in all her many coats and colours) just for what RUBY IS .. a robustly enjoyable solution to a current problem.

  4. Great post, Charles! Clearly the best I've read on this subject.

  5. Great post,

    All I have to say is open source should mean an open community. Sad to hear this is not the case in the Ruby community. Very glad to hear that some people are doing something about it :) This post is a very good start.

  6. Reminds me of the article by CS Lewis, The Inner Circle.

  7. Part of the problem, and it is in no way exclusive to Ruby/Rails, is that people want in but lack the skill and make up for this by being 'passionate'.

    Trouble is that when you have a room full of people like this then it becomes almost impossible to talk about programming because people only want to talk about Ruby.

    There is more to programming than programming languages (if that doesn't get me lynched I don't know what will :) )

  8. Agreed. Completely.

    One of the great things about this incident is that it highlights the great people like you in the community.

    Similar to Matthew in the above comment, I'm another Ruby/Rails/Merb developer (for 3 years, in Chicago, too) who has never attended an event, conference or group (beyond the people and companies with whom I work) because of the attitude of the "leadership." I'm guessing we aren't the only ones who have avoided community involvement because of them.

    I'm holding on to hope, though. Thanks to you, _why and others, I feel like I'm seeing the first glimpses of it changing for the better.

    So, thank you.

  9. Absolutely right. As far as rock stars are concerned in the wider Ruby community, I consider you to be one of the few. Happy hacking

  10. As Groucho Marx said, "I would not want to belong to a club that would have me as a member."

    I enjoy the work I do in the Ruby world, but I've worked in dozens of other programming and scripting languages and each has their time and place (some of them may be the past and hell, but certainly not all).

    I feel much the same about Ruby as I do about politics...I respect other peoples' right to a differing opinion, and embrace those opinions, as some of the people of a differing mind are smart and have good ideas. In fact, sometimes their arguments may change and/or open my mind to something, resulting in an improvement in my own quality of life. Thus, open dialogue is not only welcomed in my world, but encouraged.

    Kudos for a well-articulated point. If only more people saw the technology landscape from 10,000 feet, instead of the driver's seat of their own technology.

  11. Charles, awesome post! I run a Ruby group in Cleveland and currently we cater to the new devs, and I'm trying to find a way to keep the experienced people interested without being exclusionary. Thanks for the post, it will help me when thinking about meetings for our group.

  12. Arnon: I would avoid cygwin, it's full of performance problems and it doesn't even support ipv6 for sockets. (The last time I checked)