« Rolling your own Google Maps | Main | OSCON2006: Tim O'Reilly Keynote - Open Source Trends »

July 26, 2006

Report from OSCON2006: The Ruby Conspiracy

(Update: Wow I got a record number of comments to this blog. Answers to some common themes at the end of the post)

Who are those who are benefiting from Ruby on Rails? Answer: O'Reilly Publishing, the authors Bruce Tate and Dave Thomas and a handful of consultants.

At last year's conference, Tim O'Reilly had carefully analysed his book sales and was desperate to identify the next big thing. Same for the pragmatic programmers and for consulting companies wishing to push the next big thing. C# had been and is a disappointment. Despite a huge push it refuses to move up the Tiobe programming index.

I get the feeling that everyone needs a next big thing, and if there is not one, they create it. So what has happened to Java, after the spate of Beyond Java books? Answer: according to tiobe it has risen higher. So what is declining? VB.net and Perl. Not Java.

So am I ignorant of Ruby on Rails? We have two production applications running on Ruby. And how is it. Well, despite being perhaps no more than 5% of the functionality of our applications, Ruby on Rails is the number one consumer of Oracle CPU and logical gets. Why? Rails does not support prepared statements, so Oracle has to reparse every time. This is something that Java has had for years and years. And ActiveRecord seems not to have learnt Hibernate's lession; that OR tools suck for performance and need caching tricks to make them work well. Also, our Rails apps running in (now unmaintained) fast-cgi regularly go awry and fork more processes. Each one creates a new connection to Oracle. So, the opposite of connection pooling; connection denial of service. And does Ruby support Unicode. Not really. And is Rails threadsafe? No. So, is it Enterprise Ready. Absolutely, according to those with a clear vested interest in supporting the next big thing.

Are these problems solvable? Yes, in a fashion. For example, I have been told that lighthttpd and Mongrel should be used rather than fast-cgi. And MySQL should be used rather than Oracle.

And does it matter that Ruby is 15 times slower than Java. Of course not. How could it! Just buy more hardware. And more hosting costs. And more System Administrator salaries.

After all, the productivity benefits of Ruby are so much greater than Java you will save all of the money in development. Or do you. Our experience was that Ruby on Rails took longer than Java would have. And what about maintenance. Well we just refactor as things change. Or do we? There are no Ruby tools that support refactoring. And nor are they are expected due to the difficulties of implementing refactoring tools for Dynamic Languages, or so I am advised.

And what about support. Well there is the Ruby mailing list. Which is quite active. That should be good enough for anyone.

And what about Python? Python is arguably a more mature dynamic language with a much larger developer community and number of libraries. Why does it suck? Underscores and "self", according to one of the leading Ruby advocated. Wow, that sounds really bad. Doesn't Martin Fowler's Refactoring book recommend _ for fields? Must be deprecated. Oh and what about Django? Now this really sets the Rails people off. Why? Because it is Rails like. A rifpoff they say. Yes, but where do the Rails ideas come from. From my point of view it exactly what I have been doing in Java for years and years. So if Ruby can rip off from Java (most welcome BTW) why cannot Django ripoff Ruby on Rails? Answer, because the vested interests have decided there is money to be made from promoting Ruby, not Python.

In short, anyone who questions the benefits of Ruby on Rails is not with the program. You know, once upon a time, being open source meant being better because of improvements spurred by constructive criticism. Its about time the Ruby on Rails community accepted some.

Anyone for Haskell? Or J2EE 5?

(Answers to common comments:

1. Where are the line breaks?
Ah, sorry for that. This was a late night post, after a drinking session. Forgot to check "Convert Line Breaks" in the Text Formatting option. Also, I have been using Writely lately to blog, until it broke :)

2. Thanks for saying what everyone is afraid to?
No problem.

3. Why are you so ignorant?
I am capable of learning. Really. Enlighten me.

4. Why are there no references to back up your claims?
Some of the claims are explored more fully in other blog posts. The one about Ruby performance is based on freely available benchmarks. How important is it? The database is normally the slowest part, but it depends on your app.

5. Who was the nasty Railroader who claims django is a rip off?
I personally did not realise that django predated Rails. The Railroader was very tetchy about any success django might be having. He described django as "Rails-like". The rip off part I think was was a false connection I made. I do however think that the django crowd have realised the importance of hype. So perhaps to that extent they have learnt something from the Rails crowd.

6. What about Haskell?
Sadly no one that posted was that interested in Haskell. Our speaker yesterday said it takes a year to get into it, so maybe that is why.

Posted by gluck at July 26, 2006 06:23 PM

Comments

So let me get this straight.... You are running oracle and complaining about hiring more sysadmins. You have no idea that activerecord can cache. You have no idea that page fragments can be cached. You have no idea that entire pages can be cached. You claim that it is faster to build web sited in java then ROR. I think I will ignore you.

Posted by: malcontent at July 26, 2006 08:38 PM

And the funny thing is: Use it if you like it -- it's the message of the creators of Ruby and Ruby on Rails. Even though I love Ruby, I know that it's not perfect in all senses, but nothing is. So good luck with your Holy Grail pursuit.

Posted by: Solo Noi at July 26, 2006 10:34 PM

Ummm...there are these things called paragraphs...

Posted by: Anon at July 26, 2006 10:39 PM

I hate to say it but I think you are right. There is a huge support economy building around RoR and with it lots of vested interests in keeping the hype machine well fed. I have to say though that the reason why the hype can work is because web-app frameworks are just not that hard to build/swap/etc. so hype is really the only lasting competitive advantage.

Posted by: Antonio Rodriguez at July 26, 2006 11:12 PM

I'd be very interested to know who within the Rails community has been calling Django a "rip off", seeing as Django started life in 2003 and was developed entirely independantly from knowledge of Rails for most of its lifespan.

Posted by: Simon Willison at July 26, 2006 11:41 PM

Yay! I use RoR, and I really like Ruby (I am a Lisper at heart and dig Smalltalk, but nobody seems to care about those two languages :( but the issues with RoR _really_ piss me off, and I've seen precious few discussions about it. While I'd to believe that Ruby can stand on its own merits (except for being slow, the thread issue, the IDE issue(s), etc.--all solvable) its meteoric rise in memespace is a little disturbing and very distracting.

Posted by: Dave Newton at July 26, 2006 11:55 PM

If you want help with ruby support, try asking questions on http://guruza.com.

Posted by: Adam at July 27, 2006 12:05 AM

Brilliant!!

Posted by: Anon at July 27, 2006 12:12 AM

Yes, but have you programmed in Java? Ruby is a wonderful breath of fresh air. Rails is remarkable organized. I don't think the rails community made a marked point of trying to increase Tim's book sales. That just naturally happens for new technology. I mean he is after Web 2.0 for god sake, what does that mean?

Posted by: Christian Pearce at July 27, 2006 12:31 AM

Are you actually serious? Pick the right tool for the job and move on. Rails has plenty of uses for your run of the mill web app. Once you start going against the opinionated grain in rails, you're asking for trouble. Check out "Practices of an Agile Developer" by the Pgagmatic Programmers. One of the first rules is to *not* jump into the next big language until you can prove its worth by prototyping. That would have saved you a lot of pain. Oh wait.. the pragprog guys are all part of the conspiracy too!

Posted by: Grant at July 27, 2006 12:57 AM

I use Python more than Ruby, and Django more than Rails, but dude, count to 10 and realize that not everyone marketing RoR is out to screw you.

Posted by: Jeremy Dunck at July 27, 2006 01:00 AM

I often wondered this myself. I learned Ruby back in 2003/2004, and since then opted not to use it, opting to learn python as my perl replacement. I know that I never see developers getting hired based upon their Ruby coding abilities, what few options out there calling for ruby are specifically for Ruby on Rails. I don't know about anyone else, but getting hired to work on a specific (fairly new) framework environmet only seems rather crazy to me. Either way, the advertising blitz to make Ruby the next Java does apparently have a lot going for it in terms of sucess, but as a professional developer for over a decade, I honestly hope it fails as ruby is just a slighly less ugly version of perl with additional OO ease thrown in, plus what's with the Begin and End blocks.. I feel like I'm looking at Turbo Pascal from the 80's. Just my $.02 Eric

Posted by: Eric Elinow at July 27, 2006 01:15 AM

Excellent article. I appreciate it when people with actual experience share. Thanks.

Posted by: Matt Dowell at July 27, 2006 01:18 AM

Actually, the big discussion at the Ruby on Rails conference last month was whether the Rails commmunity wants to be the Next Big Thing, which means being Enterprise Ready. DHH looked me right in the eye and said "No!" in response to those questions. Dave Thomas does not agree. IBM has released Rails drivers for DB2, maybe Oracle should follow suite. Or write better Oracle support yourself, or use RBatis. There are many options. But don't just take pot shots at Rails and generalize all over the place. Your thinking is too black and white. Ruby and Java and .NET will all be around for a long time. With web services, you can freely mix and match. The point not to miss is that programming Ruby is fun and exciting. Hopefully, it pushes these other languages and platforms to be more of the same. I know that Don Box, the creator of COM, and Tim Bray, the creator of XML, both can't say enough good stuff about Ruby these days. I challenge you to get to know enough about Ruby to challenge your own arguments in this post.

Posted by: Mike Pence at July 27, 2006 01:24 AM

I tried.. really tried to get through this. But man, I just couldn't. Please check your keyboard because I think your Enter key is broken.

Posted by: Stephen Waits at July 27, 2006 01:31 AM

Dude, how about a little white space, a little consideration for the reader, things we readers call "paragraphs?"

Posted by: Luke Warm at July 27, 2006 01:35 AM

Good post. Very good post. I'm not sure if I agree with you entirely, but I have been trying to "get into" Rails for a while now, and all I keep hearing is "once you watch this screencast, or buy these 3 books, you'll be set". I am 100% confident that Rails is excellent for developing the exact type of tools you write while learning how to use Rails :) After that, you have to hit the mailings lists pretty hard though.

Posted by: Des Traynor at July 27, 2006 01:38 AM

"Our experience was that Ruby on Rails took longer than Java would have." - this is where i stopped reading. the only way this is possible is if you are a complete newbie to rails or your application is pretty much done after applying some java cookie cutter (in this case you should have definitely used java in the first place). either that or every java desktop developer that uses rails or php for web development because j2ee development is too slow is wrong.

Posted by: vlad at July 27, 2006 01:39 AM

You first say that those benefiting from this Rails 'fad' are the O'Reilly Publishing, Dave Thomas and Bruce Tate. And how they decided to Identify things and make money off it. My question, whats wrong with it? No one else decided to public books on Rails, and make the money. Its what a publishing company and authors do, they write about topics which they feel more people with get interested in, and make money.

Also, you say "And does it matter that Ruby is 15 times slower than Java". Info on how you reached this conclusion? I'm not saying ruby is faster, but atleast give references.

Another quote: And what about Python? Python is arguably a more mature dynamic language with a much larger developer community and number of libraries. Firstly thats a highly subjective question. You might be more productive in python, someone else might be more productive in java (although I have a hard time imagining that without him/her using Eclipse). Again, you're missing references and examples supporting your argument.

Another quote: Oh and what about Django? Now this really sets the Rails people off. Why? Because it is Rails like. A rifpoff they say. Yes, but where do the Rails ideas come from. From my point of view it exactly what I have been doing in Java for years and years. Again, I need some references. What Java MVC Web stack are you using?

Posted by: Archit Baweja at July 27, 2006 01:44 AM

Great blog. Maybe we're just old, out-of-date, Java programmers that are desparately holding onto our beloved language and reluctant to do/learn new things...Nah! Now, if only somebody would write a blog about how Spring isn't the end-all-be-all of your existence.

Posted by: Bill Burke at July 27, 2006 02:04 AM

Oops... It looks like you hit one of those things that people can't say. I think there is one thing malcontent may not be considering while denouncing your position. The things he says you're wrong about may not be default, easy to apply and configure late in the development process, well documented, or listed as best practices for new developers. You do have some valid points. Though, I would rather take you up on Lisp than haskell. That's just because I know lisp.

Posted by: Shaun at July 27, 2006 03:40 AM

Simon: I think he got it from Mr. Malsky, who is a character in one of my cartoons. That guy's the only person in the Ruby world who would say something like that. We have the utmost reverence for you guys. And we always will. Deal with it!

Posted by: _why at July 27, 2006 03:45 AM

Nice entry David, I linked to it from my blog. Django is not a "ripoff" of RoR. It's been around just as long if not longer as an internal framework that the core developers of Django were already using in production, they just decided to package it and release it as a real framework around the time that RoR was starting to get a lot of buzz.

Posted by: Brandon Harper at July 27, 2006 03:45 AM

Interesting article. Not quite convinced it's a conspiracy, but I do believe the entire situation with RoR has been blown out of proportion and made the Holy Grail of web development solutions. Same applies to the likes of Django, really.

I simply don't think that Python and Ruby are as well suited for web development as some people think. I don't think they're bad, but they have better uses in different fields. That's not to say I don't like Ruby and Python however. I think they're handy for writing quick scripts to deal with stuff. (I've written a couple documentation generators in Ruby to make my job easier.) I just don't think I'll be using them for anything web related.

Thanks for the article. Was fun to read.

Posted by: Noel Cower [TypeKey Profile Page] at July 27, 2006 04:29 AM

I do not think that this is a conspiracy. In my humble opinion this is just the wave of the hype. Ruby is a really nice language and I would prefer it over Java every time. Haskell is, currently, giving me headaches. I am trying to learn it at the moment and write some applications with it. Lisp is also quite nice but these many brackets...The main problem with these languages is the lack of good tutorials (the Getting Started tutorial on the Haskell page is quite nice but Haskell is a little bit hard to learn, coming from imperative languages). I know there are books about Lisp but I just want to dip into the language and not buy a book just out of curiosity.

Posted by: Florian Blatt at July 27, 2006 04:42 AM

I've seen the light! I am now going to return to my roots and do all my programming in assembly language. After all... nothing can beat the speed of hand-tuned assembly code! ;-)

Posted by: Curt Hibbs at July 27, 2006 04:48 AM

Oracle Issues:

Use Mongrel, not FCGI

Refactoring:

You write about 1/10th the code in Ruby that you do in Java. You rarely have to copy/paste code in Ruby if you are skilled with metaprogramming. The few rare times I had to do a large refactor, find and replace worked pretty well.

Caching / Performance:

http://www.loudthinking.com/arc/000479.html http://scalewithrails.com/downloads/ScaleWithRails-April2006.pdf

It is easy to scale the app / DB. It is not easy to scale development time. You can't throw more money at development time - it just won't work. Most else equal (ability ... etc) the fastest developers will win. User feedback is like compound interest.

Java vs. Ruby

The Ruby language is way more expressive than Java. Anonymous functions and metaprogramming make all the difference. Language features trump coding tools any day. If you really think you can code a Java app faster than I can code a Ruby app - perhaps an 'experiment' is in order. I would love to challenge a java programmer to a coding contest for a web app :) I have only been coding for 6 years. I have no doubt that there are a ton of programmers that would smoke me using Ruby / Python ... etc. I am pretty confident when it comes to those same talented programmers trying to use a Java web framework for a web app of any significance.

Posted by: Rich Collins at July 27, 2006 04:57 AM

"A cynic is not merely one who reads bitter lessons from the past, he is one who is prematurely disappointed in the future." -- Sidney J. Harris

Posted by: shadoi at July 27, 2006 05:09 AM

I should clarify: Django certainly has learnt a great deal from Rails - about marketing, unit testing and more. But we're also quite sensitive to being called a rip-off, mainly because there are dozens of Rails rip-offs around and we're quite proud not to be one of them!

Posted by: Simon Willison at July 27, 2006 05:23 AM

Florian, here's a quick little intro to Lisp, which might be too basic for you:
http://www.defmacro.org/ramblings/lisp.html

And here are links to several complete books on lisp, fulltext online for free:
http://www.paulgraham.com/booklinks.html

Posted by: dennis at July 27, 2006 07:08 AM

I replied to your posting here. Though in reality I'm just reposting some of your questions, while agreeing that the hype seems a bit driven by the pocket books of the leaders. (but what hype isn't?)

Posted by: Jeff Sheets at July 27, 2006 07:11 AM

Good to know that if I discover a language and framework that works for me and makes me happy and productive, I should definately avoid writing about it to share my experience with others or advocating its use to other people working on similar problems. That would make me a Tool and Conspirator.

Posted by: Devin Ben-Hur at July 27, 2006 07:18 AM

And here's another online lisp tutorial:
http://www.lisperati.com/casting.html

And instructions for setting up a web app running lisp:
http://www.lisperati.com/quick.html

Posted by: dennis at July 27, 2006 07:22 AM

Bill.

Page and fragment caching in ROR is advertised on the list it's features on the ROR pages. It's also highlighted heavily in the "agile development with rails" book. If you don't know about then then it's due to wilfull ignorance, not because the documentation or the feature is buried or "off by default".

As for the caching activerecord that's not built in, it's a separate gem you have load and install. But if you ever find yourself thinking "I wonder if I can cache models" just type "ruby on rails cache model" into google and you will see at number one. How hard is that?

Posted by: malcontent at July 27, 2006 08:40 AM

Posted by: Rich Collins at July 27, 2006 09:02 AM

Well, just to do a bit of perl spruiking here, Catalyst is a top quality web application framework which, as it's much more flexible than the others mentioned here is much more useful as a systems integration tool, and more suited to a much wider variety of tasks.

Although perl has a reputation for encouraging code with maintainability problems, Catalyst is so well designed in terms of proper separation of concerned, good perl OO style etc. that these problems are much less relevant than you would initially think.

Posted by: kd at July 27, 2006 11:19 AM

RoR hit the right spot by combining Ajax and productivity. Any newbie would love to see results right away. This is precisely what RoR does. It can show you results if you are following what the tutorials are saying. Well that's what has attracted me to take up RoR for my latest web app. But I still want to play safe. I am trying not to tie my Ajax and database coding to RoR. Just in case if I discover what you are claiming is true I can switch to a proven framework/language.

Posted by: Subbu at July 27, 2006 12:18 PM

Great post, but you really need to reference things you're critisising. If you can't, don't criticise them. I also feel uneasy when reading or hearing that Ruby on Rails is for doing this and that for problems that the tools I use solved years ago, and where - as far as I can tell - those tools solved such problems in a far more intelligent and complete ways than rails offers. I read in a slashdot forum the other day someone saying that active record was far and away the best ORM he'd used over the years. I tried to think of another mainstream ORM he could have used that would have been worse and couldn't. While it's tempting to be angry at the people doing the talking though, it really shows a lack of evolution on the tools we like. Sure they may be more powerful and this and that but why haven't they gained mindshare? Further, if these people think that ruby on rails is sex on a stick just because they've wasted their last ten years attempting to wrestle value our of ASP, JSP or Struts - well - at least they're a bit further up the tree than they were. That's a good thing. The shame is that they could have done so much better. I think the killer tool in rails is the easy way you can get started in development. rails new project (or whatever it is).

Posted by: Craig Turner at July 27, 2006 02:09 PM

mySQL recommended over Oracle? They'd probably recommend it over PostgreSQL. There seems to be a love of under featured products among RoR devs. The fact that mySQL until recently lacked many of the features of a proper RDBMS is seen as an advantage.

Posted by: james at July 27, 2006 05:58 PM

It's really scary.

Post something about Rails substituting the J2EE space, and nobody will comment. Say that SOA is dead, nobody complains. Talk about AJAX, say it's not usable (I'm citing Jakob Nielsen from memory), and nobody cares.

Say that Rails is an overhyped technology, mostly exalted in forums and blogs but not escalable for real app development, and you get tons of comments.

Looks like grassroots to me.

Posted by: Ignacio Coloma at July 27, 2006 07:17 PM

RoR is a tool like anything else you can use a hammer or a saw to split a piece of wood. They both work depending on your intension. This is pretty long, but does a good job explaining http://oodt.jpl.nasa.gov/better-web-app.mov

Posted by: Linda Derezinski at July 27, 2006 10:25 PM

How are these publications about RoR a conspiracy, and not just meeting the needs of a growing community? It's a fun language that makes life easier for a lot of people, but only when it's the best tool for the project. I see RoR as a great stepping-stone -- it will teach a lot of people MVC programming and unit testing, which should enable them to move into more Enterprise apps with a stronger base.

Posted by: ghani at July 27, 2006 11:12 PM

"Well we just refactor as things change. Or do we? There are no Ruby tools that support refactoring."

Refactoring doesn't require tools. They certainly help, but saying you can't refactor without a refactoring tool is like saying you can't code Java without Eclipse.

It's good to hear a different perspective, something to balance the pro-RoR talk. It's a shame it has to come across so rudely. Software needs philosophers.

Posted by: Dan Bernier at July 27, 2006 11:49 PM

Some interesting points. One argument I don't follow here is about the vested interests pushing Ruby/Rails rather than Python/Django. That's obviously a possibility for the core Rails people, but why would Tim O'Reilly and the webhosts/sysadmins care which one takes off (assuming they have the motivations you attribute to them). Also, the argument about self and underscores is something of a straw-man. Anyone on either side of the argument would have a lot more to say than that.

Posted by: Michael Mahemoff at July 27, 2006 11:59 PM

It's not hype if almost everyone who uses it notices significant increases in productivity. Q.E.D all other arguments are pointless

Posted by: Chris at July 28, 2006 12:17 AM

Every few years something comes along which makes a lot of people's lives easier, and they get very excited about it and try to tell other people about it, and book companies publish books about it because it's popular. Calling this phenomenon a "conspiracy" is like calling cell phones a conspiracy.

Posted by: Avdi at July 28, 2006 12:33 AM

Dang, looks like Rails just isn't going to work out for you. Let me express to you, from the rest of the Rubyists out there, we're very sorry that our tools aren't working for what you need. Maybe there will be something right for your problem in the future, but please don't let your bad experiences taint you forever from the language. One suggestion I have if you are having problems with your refactoring is that you might want to beef up your unit tests a bit. When they are appropriately beefy, you can be reasonably sure that making a change that breaks something will set off an alarm. This is the approach to refactoring advocated by Rubyists the most heavily, especially since it has other benefits besides refactoring. Also, if you've been seeing too much hype about Ruby being the greatest thing since chunky bacon, well, I'm also sorry about that. Rubyists tend to get excited because we like our tools so much. Usually we try to temper that with a healthy dose of, "Fair warning, it may not be the right magic lamp for you," but that gets forgotten some times.

Posted by: Danno at July 28, 2006 12:41 AM

The Ruby Blog Conspiracy It seems as though some bloggers in desperation to get hits are resorting to writing articles about Ruby On Rails. It's quite a popular tactic among bloggers. Even though thousands of programmers are seeing the benefits of ROR and raving about the massive increased productivity benefits, these bloggers like to dismis it all as "Hype".

Posted by: Chris at July 28, 2006 12:51 AM

I personally love Haskell, but I love Ruby just a little bit more. Remember, momentum is extremely important, because momentum results in more broad library support of a higher quality. And no one can deny that Ruby has a lot of momentum going for it right now. I've done a lot of Java programming and a lot of programming in various other languages and I know that I greatly prefer dynamic languages for actual project code. If I need performance, I use C. And Ruby has a really delightful interface to C. I almost wish more of Ruby's libraries were just wrappers for C libraries. I know that I personally intend to write a lot more in the way of C, simply because if I ever change my opinion about my favorite glue language, I won't have to start porting, I'll just write a new wrapper instead. Ruby has a lot to like. To some extent you're right that people are looking for the next big thing. We're tired of Java, it encourages bloated design (that's just my humble opinion, mind you) and bloated designs, especially other people's bloated designs, are really no fun to work with. We wanted something that was clean and elegant enough to make us happy, while practical enough to get real work done. Ruby strikes that balance better than any other language I've used before.

Posted by: Bob Aman at July 28, 2006 01:05 AM

Java may be faster, but when you have wonderful Frankenstacks like this:

http://ptrthomas.wordpress.com/2006/06/06/java-call-stack-from-http-upto-jdbc-as-a-picture/

Java turns into a slug.

Posted by: Anonymous at July 28, 2006 02:14 AM

Criticism is a good thing for sure. Only there is no criticism in this incoherent rant :( For a change, why not to calculate, how much money was thrown for Java marketing, consulting, and books?

Posted by: Rimantas at July 28, 2006 03:11 AM

Interesting, I seen Oreilly's talk before and really don't think he can create these trends, he just follows them, sure he can add to the hype machine, but that's like saying bush can start wars to contribute to haliburton, hold on...never mind... anyway, I think mostly developers are always looking for the silver bullet, and ruby is it right now best for many things, no doubt Python is second best. Also because python has been around little longer there's some really nice libraries and some of these performance issues are little more solved, for example I was just looking at twisted, it's a networking library for python, very cool, and I haven't seen anything as extensive for ruby yet, but again its not about the language, it's just about libraries, which are about mind share, as more people ruby more/better libraries will come.

Posted by: Ville Maanpaa at July 28, 2006 03:32 AM

I do believe that the hype and the fanboyism in the RoR community is not only pervasive, it is really hurting the growth of the framework. --oxXXxo-- Every time someone talks about _any_ warts in the system or the crass commercialism being unleashed on the majority of the 'community' the fanboys really start pouncing on them. --oxXXxo-- If you would notice there is a subtle shift in the way the traditional Ruby community is distancing itself from the obnoxious RoR BDFL and his fanboys. --oxXXxo-- There was a very successful Ruby conference in Japan only a week or so before the RailsConf. Matz did not come to the first Rails conference. And for good reason. The RoR BDFL could have made a total a$$ of himself by once again showing everyone a big "FuCK YOU!" slide. --oxXXxo-- If this is not a slap in the face, I don't know what would be. --oxXXxo-- I literally stopped listening to the DHH's keynote when he started railing (pun originally not intended) against composite primary keys. --oxXXxo-- Nevermind the fact that gigantic infrastructure dollars are invested in pre-rails systems. But rails would like to have your 40,000 table schema all run off of a frikkin _ID_ column per table.. --oxXXxo-- What this tells me is that RoR has transformed itself from a quasi "open-source" framework to a highschoolish clique with a bunch of fanboys with impending identity crises all hanging on for dear life to this strand leading to la-la land. Obviously there are the obligatory reverse-sugar-daddys who would like to give the group legitimacy by throwing their weight behind it. In exchange of course for sweet speaking deals and residual incomes from hastily written, shoddily published and already-obsolete "pragmatic" books. --oxXXxo-- Note the recently announced synchronized audio+slides combo package for a small sum of USD 100! And the subsequent pouncing that was recieved by those who dared to squeak a little bit about the heavy price tag for a community which generally consists of tinkerers or broke students. --oxXXxo-- Pet fanboy response? "Well, I make X dollars an hour, so I can afford it, why can't you?" Nevermind the fact that only a small minority of railers actually make _any_ money, and whatever they have, they are expected to spend on stupid books and conference audios and 1500 dollar 'seminars' where you're supposed to learn how you can be productive with this awesome "free" framework which is so easy and stuff. And I say, if that is the case, you shouldn't really need that stupid book or overpriced training anyway. --oxXXxo-- (NOTE: --oxXXxo-- is paragraph boundary)

Posted by: huh? at July 28, 2006 04:32 AM

Hype? By book publishers? Say it ain't so!

Java, on the other hand, was a strictly grass-roots effort, led by developers who were sick of working with tools that didn't make things better. Oh, wait, no--that's Rails. Java was the language with the billion-dollar corporation behind it, pitching it as the solution for every problem--write once, run anywhere, right?

It's amazing how little publicity it takes for something to be "overhyped." Think of it this way--how many IBM J2EE contractors could you hire with the yearly profits of Pragmatic and O'Reilly's Ruby book sales? And if a handful of small software houses and independent contractors constitutes the building of a "huge support economy" by "vested interests" then what the hell would you call the C++ market? You're going to run out of superlatives.

I mean, point to the marketing budget for Rails. Where is the money for an "advertising blitz?" Where are the ads in the trade magazines? Hell, where is the new Rails Monthly? This would be funny if you guys didn't believe in it so much. There's no infrastructure for the things you're talking about, and all of the players you're talking about as "vested interests" have at most minor or mid-level presences in the tech industry. Christ, figure out how much Dave Thomas is making and then compare that to Jonathan Schwartz's yearly take-home. Are you even listening to yourselves?

Now for the helpful bit. Regarding your production problems:

  1. Apache's mod_fastcgi has always sucked--switch over to Apache2.2/mod_proxy_balancer/Mongrel. It's a dream, and Capistrano is the best deployment utility pretty much ever.
  2. If you're concerned about your Oracle database getting hammered, use the ActiveRecord/memcached plugin that RobotCoop developed. Also check out their memcached sessions store as well--sessions traffic can be pretty heavy for large websites with a lot of dynamic content.
  3. Does Ruby support Unicode? Yes, but only recently--check out the character-encoding gem that _why packaged a week or so ago. It's awesome.
  4. Does Rails need to be thread-safe? Not really--it's a share-nothing architecture, but if you'd like to share a database connection you can always rewire ActiveRecord to stuff the database adapter in a DRb worker. Make sure you get the concurrency right!
  5. Yes, Ruby is slower than Java, but it doesn't need 400MB worth of VM and application server to run. Memory costs money, too.

Most of your complaints are actually pretty common, and they've been successfully addressed by other people. You may want to actually ask for help on the Rails mailing list the next time you have a problem with Rails. Saving up your frustration for a blog post gets you traffic but not solutions.

Posted by: Coda Hale at July 28, 2006 05:42 AM

I'm quite confused. Are you talking about the same Ruby and Rails that I use everyday? That I just used to roll out a massive application (well, relatively massive). I hade over 20,000 lines of php that I was able to compress into less that 3,000 using Ruby and Rails. If that's not impressive, I don't know what is. I think the big problem is that the things your value are not the things we value. I moved from C# to Ruby when I found Ruby to be a breath of fresh air. I've not used Java, but I do know that C# has more language features than Java. Ruby can do things C# can't even imagine. It can do the same amount of work in fewer lines of code, which means 'tada!' easier to maintain. You have confessed that you've not actually tried it. Your knowledge seems to come from second or thirdhand sources. So try it out. You'll find it very impressive, I believe.

Posted by: Josh Charles at July 28, 2006 07:15 AM

Implementing refactoring tools for Dynamic Languages is no problem. It's only a problem if you ignore 30 years of experience. http://www.refactory.com/RefactoringBrowser/

Posted by: mailinator at July 28, 2006 07:25 AM

Fair points! Personaly, I use Ruby because I like Ruby. It suits my purposes and I enjoy it's style and flexibility. It's not a silver bullet. If you don't like it, don't use it. If you are using it because somebody told you to, cause it's the best thing, and it doesn't live up to it... switch? If you invested a lot of time into it without doing your own research and testing and are feeling let down... Who is to blame? And if you did your own, found it lacking and moved on, and are annoyed that others find it useful and are touting it's features... Why do you care? Of course the Hype and Propoganda are intended to generate interest and therefor a market, profit. Isn't that the whole point?

Posted by: amartano at July 28, 2006 09:43 AM

Saying that Rails is no good is not very different an attitude from preaching the Rails use. It is just a tool and has it's advantages and disadvantages as any other. Java is great but so is PHP; Oracle is magnificiet and MySQL is terrific; RoR is miraculous and Django is super-duper; thing is, they coexist. And they all advance the technology.

Posted by: Baglan at July 29, 2006 02:48 AM

Thanks for this article. I'm not actively against Ruby, but after I had started learning Ruby, I realised that Python, while syntactically slightly less compact than Ruby, has a far larger application spectrum behind it and is definitely much more mature. I too was a bit blinded by the Ruby hype, but it is no different to the PHP hype of a few years ago, and I prefer to not have to think too much about how much of a mess so many things have been with PHP. So I switched to Python as my Perl ersatz for small web applications and scripting tasks. As for comparing statically typed Java to dynamically typed scripting languages, well, it is as you say exactly those statically typed objects that enable powerful tools like Eclipse. Java is absolute overkill for small applications, but its maturity and huge support industry makes it, along with .Net really the only tool for large critical applications.

Posted by: Theo at July 29, 2006 12:45 PM

LoL, great post. Josh: "It can do the same amount of work in fewer lines of code, which means 'tada!' easier to maintain" False. Terser program code can be harder to maintain. (see most perl scripts) Coda Hale: "share-nothing architecture" Or if the glass is half-empty, you might call it a "recompute everything on every single request architecture" "ActiveRecord/memcached plugin..." Oooh that's great. Instead of putting the result of my expensive computation in something so primitive as say my computer's memory, I'll open up a network socket and send it across the network to a non-distributed single point of failure using a primitive and feature-poor "caching" API which does very little that a cache API should do leaving it all up to the client library to write its own stuff. memcached is trumpetted as the knight in shining armour that saves PHP, Ruby etc in the performance domain. Even the crappiest Java cacheing solution is orders of magnitude faster. Very high traffic websites live or die based on one thing: cacheing. In Java app servers, cacheing is trivial. Drop in your chosen jar, set some properties (do you want distributed cacheing etc) and that's it. Bob Aman: "If I need performance, I use C." Don't you mean if you need manual memory management, buffer-overflow security nightmares and lovely platform specific code? I love Ruby,Python et al. As Greg discovered though, using them in real world high traffic sites can be painful disappointment when compared to such dull outmoded technology as Java. It will be great when JDK 6 is production quality and we can script more closely within the VM. Switched on Java developers have been using beanshell, Rhino, groovy and so on for lightweight programming against arbitray Java libraries in the VM for years. Everybody will benefit if Ruby, Python etc run well on the Java VM. For me, the VM was always the coolest thing about Java, the JDK itself being pretty dire in places. The ultimate high performance web app would then use a Hibernate mapped domain model, with Java's proven stable JDBC drivers, solid threaded servlet/JSP request processing, and the top layer of framework code and scriptlets written in Ruby. Rails would then assume its true significance: Just Another Web Framework. Nothing more, nothing less.

Posted by: Ben George at July 30, 2006 10:22 AM

A few years ago I decided to seriously learn another language. The choice was between Perl, Python and Ruby. I had always liked the charm of Perl, but the syntax was just too much. I had tried Python before, but was struggling with "whitespace issues". After looking a bit at Ruby I decided to give Python another go and haven't looked back since. I guess I just didn't like the Ruby syntax (too much borrowed from Perl).

I really have no idea why Ruby is getting all this attention. I can't help being just a bit dissapointed and I can't remember Python ever getting the same amount of attention as Ruby is getting now - and it's been around for alot longer. I doubt there is anything you can do in Ruby that Python can't do just as well.

Is Ruby so much better? Surly a language should be expected to be used for more than just web development, because let's face it - most people who learn Ruby today use it with Rails.

No, if you're interested in writing and READING code then Python is a safe bet. I am 99% sure I can read any Python code without much effort because of the mandatory whitespace in the code. It took a bit of getting used to, but now I feel right at home. I don't think you can say the same thing about Perl or Ruby.

Posted by: Lee Francis at July 31, 2006 05:58 PM

Lee, I agree that Python's block formatting makes it very readable compared to most languages (I never thought I would approve of whitespace significance in a language but it actually works well IMHO).

To me, Python's core APIs seem a bit confusing though. Why len(str) instead of str.len()? Why separator.split( target ) instead of target.split( separator )? I get confused about the use of dict() and tuple/list distinctions. The % syntax string interpolation seems archaic (yes I know there is the template module) and harder than Perl or Ruby's "$foo" and "#{foo}". Not major issues and I'm sure I'd get used to all this if I programmed in Python more regularly.

Personally I really like Ruby's similarity to Perl (but then, I'm a Perl fan). Tightly integrated regex support is a major plus as far as I am concerned.

On a side note, I came across a Perl module to allow Python code within Perl, and also a Perl hacker who'd overridden some Perl internals to allow Ruby style message passing. So you could write things like "2.times { block; }" and "2.plus(2)" in Perl.

Posted by: Ben George at July 31, 2006 10:50 PM

What really bothers me about this post is not the bashing of Ruby or of Rails. That's commonplace and if you're going to complain instead of moving on or trying to help fix the problems, then that's your problem. Congratulations on your 15 minutes of fame. What's most disturbing is that you blame Tim O'Reilly for the hype on RoR. The Rails meme had reached meteoric scale way before O'Reilly posted to the Radar about the growth of Ruby book sales. And that's not even hype, that's just reporting the facts of the sales and trying to interpret them. 37Signals just worked the market correctly and got the meme going themselves. Do they stand to gain from RoR being hyped? Only through notoriety because Rails is open source. Yeah, they sell books too, but they're much happier with their self-published book than their books through publishers. Your post is so full of assumptions and leaps that the legitimacy you do have is crushed under the weight of them all. Write this post again and focus your arguments.

Posted by: Erik at August 1, 2006 07:45 AM

>> But rails would like to have your 40,000 table schema all run off of a frikkin _ID_ column per table.

40,000 tables? How many organizations have a schema with 40K tables???
That's exactly why Rails is so popular. It doesn't cater to the 0.01% out there that MUST use something else. If you're in the 99.99% that don't have 40,000 tables in your schema, then Ruby/Rails is for you. Got 40,000+ tables? Then I'm afraid you and the other members of the 0.01% will have to continue coding in Java.

Posted by: J Fister at August 1, 2006 01:03 PM

Um, maybe it's me, but using the terms "huge support economy building around RoR" and "with it lots of vested interests in keeping the hype machine well fed" is sort of funny given the overlarge support economy built around Java (not to mention that it still continues to be overhyped as the only tool for all problems). The corker is "so hype is really the only lasting competitive advantage" applies to Java more than any other single technology I can think of. For what it's worth, EJB still sucks for the problems that RoR, Django, et al., are suited for because it's too damned bulky (and yes, I've worked with Java for a *very* long time). Funnier still is that EJB1/2/3 are not backward-compatible so you get to rewrite your code again and again. I made the observation to a colleague the other day that I'm sure that Java has a certain set of problems that it's appropriate for but apparently the work I do with enterprise systems with web front ends is not among that set of problems. Wanna know a dirty secret? Java is one of the primary reasons that jobs are outsourced to the Far East and Eastern Europe. They have plenty of developers skilled in those technologies and they'll work for a remarkably lower wage (not to mention the tax benefits for the company that is outsourcing work which is the real reason they do so). YMMV..... BTW, for those who know nothing of Rails there are ways to change the primary key from 'id' to something else. Of course, one would have to RTFM to know that.........

Posted by: RUKidding at August 3, 2006 05:58 AM

Howdy Greg, I'm very interested in Haskell, having done loads of it at uni, but I think that's just a dream :P I agree with much of what you've said, having evaluated RoR and come up with too many issues (unicode being the showstopper at the time, although perhaps it isn't now), and am about to embark on a new enterprise app using JEE5, JBoss and JBoss Seam. However, I do think the Prepared Statement issue is a red herring. Oracle has a CURSOR_SHARING setting which may help if you set it to "force", and although you say Java has had PrepStats for years (which is true), earlier JDBC drivers (pre 1.4 I think?) didn't do prepared statement caching, so you only really got benefit if you kept your PreparedStatement objects open and rolled-yr-own PS cache. This particular issue is one that will be easily fixed in the RoR world (unlike unicode). Thanks for being "brave" enough to get flamed down by those who buy into all the hype just to be cool. Disclaimer: I probably would recommend RoR for mickey mouse web apps, but they aren't the kind of apps I'm interested in writing.

Posted by: Daniel Young at August 9, 2006 09:50 AM