Ruby is NOT a Religion.

by Gregory Brown

I will try not to turn this entry into a rant, because we've seen plenty of that as of late.

However, I would like to share my experience regarding Ruby and the communities I've encountered in order to represent a sort of difference between the enthusiast and the hyper-enthusiast.

I will not make comparisons to other languages, because frankly, they aren't relevant. I will however mention that I first played with Python 6 years ago and after about a year of tinkering went straight to Perl and stayed there until a little less than two years ago.

Upon finding Ruby, I was amazed by the language, but even more so by the community. A year and half ago or so when I started playing with it, I had never heard of DHH or 37 Signals or Rails or anything like that. I was enticed by my friend James Edward Gray II to learn the language, and soon thereafter began lurking about RubyTalk.

Soon I saw some names coming up a lot, both in conversations and in posts by the individuals themselves, such as David A. Black, Hal Fulton, Curt Hibbs, Chad Fowler, Jim Weirich, James Britt, and of course _why. This is just a random list of people who I noticed quite rapidly, but basically, these were people who came to Ruby before the Rails explosion, and they all have made significant contributions to the Ruby community.

There are hundreds of people I've spoken to in this community who have made some wonderful contributions to Ruby. Many of them are regulars on RubyTalk, some I've met at Ruby Users Groups (Such as new_haven.rb or NYC.rb), some I met at the RubyConf this past fall. These folks are what forms the core of the Ruby community.

In the last 3 to 6 months, there has been an incredible amount of buzz regarding Rails. It seems now, that the number of people who are interested in Rails moreso than Ruby, or those who are interested in Ruby because of Rails outnumbers the smaller core of those who just love Ruby. That doesn't bother me one bit.

Part of growth is accepting the changing face of a community. As our userbase changes, the needs, interests, opinions and desires are sure to change as well. The only issue is that of identity, of reputation. I do not want to be lumped in with the hyper-enthusiast, if the meaning of the word is faith based decisions.

I also don't want everyone who knows I'm into ruby to assume I've mastered Rails and that I love it as much as they do. I haven't and I don't. Rails is very nice, and I'm at the beginning of a rather large scale project in it, but to me, it's just another impressive piece of Ruby software. No amount of marketing or hyper-enthusiasm is going to change my opinion on this. Maybe when I'm done with my project, I'll have some substantial experience based opinion on it, but as for now, I'll leave the defining word on Rails to those who know it and use it best.

The core issue here is that the level of noise is rising and rising in the communities. Or at least, some of us percieve it as noise. Do we really need to sell ruby? Do we really need to focus on standardization and point for point comparisions between language Foo and Bar? In my experience, Ruby sells itself. If you want to impress a potential employer, show them some software written in it, show them some things you've done. Prototype something quickly and cleanly and let them see it up front.

All this time that some very vocal members of the community spend 'defending' ruby or preaching it's wonders from the mountaintops, myself and many others spend doing ruby. To me, that's worth a lot more. To others, maybe it's not. I have no problem with this difference in opinion. I just need to make it clear that I came to Ruby before it was cool, and even if people were calling me a tax collector, or even comparing me to a COBOL programmer, I'd still love it.

If you want to support Ruby, let it speak for itself in beautiful code. That is far louder (and far more useful) than faith based words. So this might have turned into a bit of a rant after all, but I just needed to speak up a bit for the Old School Rubyist, who doesn't give a damn about what loud people on either side of the fence are saying.

19 Comments

James Britt
2005-12-29 13:54:05
Somebody give me an "Amen"!
Steve Yegge
2005-12-29 14:31:40
Greg, what advice do you offer to the *many* would-be Rubyists out there who try to let the code speak for itself, and their company and fellow engineers quite literally shut them down, threatening them with termination (or at least no promotions or career path) if they continue to write code in Ruby, regardless of its quality?


I ask this in all seriousness, hoping to hear a good answer that will actually work for them.

Gregory
2005-12-29 15:09:21
Oh, well there is an easy answer to that. Don't work for a close minded company, or understand the nature of the company you've been hired by and don't waste time treading water to eventually drown.


A company that's interested only in 'industry standards' and the status quo clearly is not a good environment for creativity. The choice then becomes whether you are willing to give up the prospects of changing your companies minds or whether you're willing to deal with such constraints. Either way, tricking someone into using a particular technology via mudslinging is a sure fire way to make trouble in the future.


Is THAT why you are so concerned about proving that Ruby is better? Because if I was the one doing the hiring, well... I'd rather a pythonista who could show me why his language choice is a good one than someone who promises me Ruby is A Good Thing. However, i think you see the most successful individuals in any technology gaining jobs through experience, while the herd dredges along behind in the 'industry standard' choices.


As a bit of background about this, and an explanation of why I probably wouldn't be the best to give advice on this topic, is the nature of my employment. About 4 months ago, I was working on a mountain of C# just begging for it to stay afloat after it's previous maintainer abandoned ship. I asked my employer (a reporting consultant) if I could re-write the code in Ruby. He quickly said no. On my own time, I spent a few hours peicemealing together what would eventually become Ruby Reports (with some good help from the community, namely Daniel Berger and James Edward Gray II). Within a week, I was getting paid to write free software. And now, that's my job, advancing and maintaining Ruport and building custom applications with it.


Sometimes it doesn't hurt to cut against the grain, you never know what you might reveal :)

James Britt
2005-12-29 15:19:55
Steve: That's a really good question. People might find useful stuff at http://ruby-doc.org/whyruby/.


It's often tough trying to sell co-workers/bosses on anything new, but if one can make a business case (more, better, output in fewer hours with less maintenance) then perhaps that's the best route.


It's also worth knowing that some business really do have good reasons for not using Ruby (though I'm hard pressed to offer one).


(I'd also suggest looking for another job or starting one's own company, but I imagine most budding professional Rubyists, frustrated at their current job, have already considered this.)


Steve Yegge
2005-12-29 20:54:10
> Is THAT why you are so concerned aboutproving that Ruby is better?


Yeah, that's pretty much it. Most of the companies I've worked at or have friends at are pretty locked down, so (alas) Ruby is never given a chance to speak for itself.


I've noticed that languages can "sneak in" to such companies if a bunch of people get hyped up enough to break the rules and build something cool. That's how Java got into Amazon.com, for instance, but it took like 5 years of people using it (and to some extent, jeopardizing their career path) before it was formally recognized as a first-class language there. Pretty painful. Not the only example I've seen -- I think you guys may be underestimating how many would-be Rubyists out there have little or no hope of using it in the workplace. It's a real bummer.


Better people to ask would be Dave Thomas, DHH, Bruce Tate -- they've studied this particular problem in depth. I honestly think their drumbeats are targeted at managers and anti-Ruby engineers.


Sorry I didn't make that clear before. I'm just trying to help. :-)

Gregory
2005-12-29 21:18:58
> I think you guys may be underestimating how many would-be Rubyists out there
> have little or no hope of using it in the workplace. It's a real bummer.


I attend a private university which has a traditional computer science program. I know first hand the type of resistance people can have to newer technologies and languages. I am not underestimating this, I am just not paying attention to it.


The bottom line is that if you're looking to make money from ruby, you should be striving to serve the long tail. That's not to say Ruby doesn't have a place in the enterprise, it's just to say that if you're not looking for an uphill battle, join a small startup, build something useful, and opportunities will arise.


If you're not willing or unable to do that, roll with the punches and sneak it in when you can. I still don't think Ruby evangalism in the form of biased arguments is going to make the language's future any better. However, the presence of good software that runs on Ruby will.

James Britt
2005-12-29 22:02:00
Is THAT why you are so concerned about proving that Ruby is better? Because if I was the one doing the hiring, well... I'd rather a pythonista who could show me why his language choice is a good one than someone who promises me Ruby is A Good Thing.


This is an interesting point. I've spoken with several people who had to push past what they felt was repulsive Ruby/Rails hype to finally learn that there was more to Ruby than loud taunting and endless rounds of "my language can beat up your lannguage." People who were quite close to simply dismissing Ruby.


O. Wilde said that the only thing worse than being talked about is *not* being talked about, and this seems to have become the mantra of the 21st C., but such advice may better serve the preening and self-centered than professional developers.


Endless drum beating sure gets attention, but the noise can drown the signal.

Greg
2005-12-29 22:48:04
I am the boss that told greg no. No ruby. Why? Windows is unstable. I know that. So no new technologies. Put nothing new on the system and hopefully it will not crash. I tried perl on Windows, and I had trouble with it. (I copied commands out of the O'reilly book and they behaved oddly on windows but worked on nix.) We were developing everything in C# which was working fine.


Development was painfully slow, but the programs were working fine, and a good error message logging told us where to look the few times there was a crash. But, we wanted to do something not immediately obvious in C# that is in the Pick Axe. We installed the one-click installer and it didn't crash windows. It didn't even put anything in the registry. It worked. My confidence grew. Then greg programmed in 30 minutes, something I know would have taken a day.


But this was not a GUI thing. The GUI world (windows) is different from the linux world (command line). Linux power users seem to get the job done and add GUI interface to it later, windows oriented people seem to start with a GUI and add functionality to it. So you are not asking to switch languages, you are asking to switch construction methodologies.


Is the GUI problem addressed fully by RAILS and the web? By TK? Perhaps you use both, C#, Java, VB, or whatever else for the GUI, and do all the real stuff in Ruby. I think that if you are less drastic in dropping the language of preference where you work and begin to introduce Ruby as a cool tool, (tell them its a tool, like a free powerful active X control or component), that they may even embrace it and not notice that 95% of your solution is Ruby, wrapped in a nice GUI shell done in the programming language of the land. (Especially since they'll count the lines of code!)


The other thing you might do, is write unit tests in the language you are using to prime the pump so to speak. Unless they are understand and are comfortable with unit tests, you are going to have an uphill battle on your hands.

Steve Yegge
2005-12-30 01:18:53
As resident "loud person" at the moment, I have to say I'm swayed by your post. You're a convincing man.


I've just gone and unpublished my two opinion posts, since I figure they were unpopular enough that I ought to go revise my opinions. I think I'll soak up some Ruby culture for a while, and not let Ruby-bashers get to me.


Cheers!

Greg
2005-12-30 09:12:04
Steve:
Though it wasn't my intention to get you to retract your opinion, I appreciate the fact that you are willing to re-think your stance. I'd like us Rubyists to retain our reputation as the friendly happy people, and by not burning bridges with our snake loving friends, we can do that.


I really enjoy your technical posts, so keep them coming!

Dan Shafer
2005-12-30 11:11:00
"Is the GUI problem addressed fully by RAILS and the web? By TK?"


I think not and I find this to be Ruby's near-term Achilles Heel. I say near-term because I am certain it's being addressed. I've just discovered and begun poking at Glade, which is a GUI development kit for Tk, after seeing a movie demo of it being used to create Rubyzilla, a Web browser. Early to tell, but it looks and feels pretty cool. The lack of a graphical IDE that would support direct-manipulation GUI creation kept me away from Ruby for a year or more, but Rails brought me into the edge of the fold, where I am now grazing and keeping a close eye on what the flock goes on here. (Pardon the puns; I'm on vacation and letting my brain run free.)

The Truth Hurts Sometimes
2005-12-30 12:18:13
I'm sorry, but the stuff he said about the python community is based in fact. Anyone who's spent any time there knows it.


The only thing we are learning based on your and others' reactions is that ruby's community suffers from the same problems as python's to some degree. We can't escape it. It's never going to get better either. It's the law of usenet entropy, I guess.


We need a group for people who use and like MULTIPLE languages, and aren't zealots about one particular language. Where it is okay to criticize a language and love it at the same time. Steve Yegge exemplifies this. See for example his soko-shootout putting various scripting languages to the task of implementing a sokoban game: http://opal.cabochon.com/~stevey/sokoban/
That is an enormously helpful resource, even though yes, it does contain some obvious opinions which you may or may not agree with (like I think groovy has improved somewhat in the past 6 months since he did his review).


I have saved copies of Steve's posts. I hope he will re-publish them somewhere if not here.

Gregory
2005-12-30 12:44:34
To _The Truth Hurts Sometimes_:


This article was not intended as an assault on Steve Yegge's posts, but rather as a generalized response to the controversy that has been brewing as of late.


> The only thing we are learning based on your and others' reactions is that
> ruby's community suffers from the same problems as python's to some degree.
> We can't escape it. It's never going to get better either. It's the law of
> usenet entropy, I guess.


I don't see these responses as a problem. In fact, I don't see Steve Yegge's posts as being a threat to the community and I don't see my reaction or others as a response to a 'threat'. I think this community thrives through it's diversity and that issues like this crop up, often get overheated, but at the end of the day, help provide a road map for our community.


Honestly, I'm not terribly interested in the future, I'm happy with the way things are now, I have a lot of fun coding and I'll enjoy Ruby while it's fun. Hopefully it'll be fun for a while.


I know a few very kind pythonistas, one of our key organizers for new_haven.rb is a Python guy. I admittedly know next to nil about their community, and I don't feel the need to know about it. I hope things get better on their side of the fence if there really are problems, and if there isn't, then I hope things continue to go well.


So... all in all, I'll be happy to get back to coding and not worry about all these social issues. :)

Steve Yegge
2005-12-30 14:25:40
> I'm sorry, but the stuff he said about the python community is based in fact. Anyone who's spent any time there knows it.


Um, it was an opinion, not a fact.


You go to a movie theater somewhere far from your hometown. Several people talk loudly on their cell phones, to each other, or to the screen -- maybe 3 or 4 people total. None of the other 150 people say anything, but the experience is ruined for you. Your probable conclusion: movie audiences are noisy jerks in that town. A few people can give a community a reputation, one that may or may not be very accurate in general.


Real-life example: Seattle (my hometown) has a worldwide reputation among classical-music recitalists for being "coughy" -- they cough noisily during recitals. Several famous performers now refuse to play in Benaroya Hall in Seattle. After enough of them had Movie Theater experiences there, they just stopped coming. We still get lots of great performers, and most of the time people manage to stifle their coughs. But we have that reputation now, and coughing is still enough of a problem that it never quite goes away.


But what can you do if 3 people out of 150 are ruining the experience for you? Nothing, really. The Benaroya Hall folks have tried walking out on stage and asking people to hold their coughs or leave the hall, to no avail. Sadly, there's nothing any of the 150 can really do about it, so everyone suffers for the actions of a few.


> The Truth Hurts Sometimes


This is why I yanked my posts. They weren't "truth", no matter how many people thought so. They weren't "lies" either. I've just had a couple of Movie Theater experiences with the Python crowd, that's all. It was probably just bad luck. But somehow most people, including my fellow Ruby-blog posters, concluded that my opinions were referring to the 150 people, not just the 3.


Moreover, I was likely being (perceived as) one of the metaphorical 3 impolite moviegoers in the Ruby community, and the last thing I want to do is ruin anyone's language experience.


Unpublishing my posts was just turning off my cell phone.


2006-01-01 05:10:43
You wouldn't be having a blog here and you wouldn't be read by many people if there were no Rails. So I think this macho "I can do everything myself" attitude is really not called for. I appreciate anybody who tries to make my life easier - and that includes all the so-called hyper-enthusiasts, because they make my battle against stupid managers less exhausting. You of course are strong and smart and don't need them. Good for you. But you want to make (and are making) life harder for me, just because you think that is the right way. How's that for a change of view?
Gregory
2006-01-01 10:37:48
I don't know. I could have sworn that banner at the top of the page says O'Reilly Ruby, not O'Reilly Rails. Does Rails deserve their own community? Absolutely. It's already thriving. For evidence of that, check out the mailing list or the IRC channels.


Is there plenty of room for Railsers in the Ruby community? Hell yeah! They've come up with some of the neatest programs I've seen (typo, instiki, etc).


But still, my point is reinforced by this statement:
> You wouldn't be having a blog here and you wouldn't be read by many people
> if there were no Rails


You're probably right. But you wouldn't have Rails if it weren't for Matz. DHH did not write Ruby, remember?

zdennis
2006-01-01 19:03:47
>> You wouldn't be having a blog here and you wouldn't be read by many people
>> if there were no Rails


>You're probably right. But you wouldn't have Rails if it weren't for Matz. DHH did not write Ruby, remember?


OReilly showed an interested long before Rails or DHH. "Ruby In A Nutshell" covered 1.6.8 a few years back.


Gregory
2006-01-01 20:07:32
> O'Reilly showed an interested long before Rails or DHH. "Ruby In A Nutshell"
> covered 1.6.8 a few years back.


Which was written by Matz :)

Rommel Lagera
2006-01-16 02:54:16
Most people miss an important point regarding Ruby. Ruby is an easy to use program (once you grasped it). I hope I could say the same learning it. If you are not coming from Perl or Smalltalk the syntax will sometimes surprise you. But once you get the hang of it, programming actual becomes a breeze.


Ruby has places where it truly shines. It is very good in manipulating text file, database processing and generating reports to be dumped to Excel file. It is not (yet) easy to use doing complex GUI like commercial grade data-entry screens. Well you could use your preferred 4GL tool for that and call Ruby codes (via execute command) to do processing or report generation.


Compared to Java or C#, Ruby has a lightweight syntax and libraries. Imagine doing RPC in Ruby by just adding fewer than 20 lines (for both server and client) of code. The simplicity of implementation could not be said with Java or C#.


Someone said a typical big corporation uses around 200 programs, but only 3 of them are enterprise-wide. These enterprise-wide applications are suitable to be done in Java or C#. The rest are relative small programs. For small programs, I think it will be wise to use a simple, easy to comprehend tool like Ruby.


Simply put – if it works for you, use it, otherwise, don’t. Me, I first try Ruby if it could address the requirement, otherwise, I search for another tool.