
Rails won - rcoder
http://withoutane.com/rants/2009/03/rails-won
======
mdasen
The title will get votes, but there doesn't seem to be a lot of content in it.
"Rails won". OK, why? What's good about it?

I wish the author at least postulated some reasons why Rails became popular:

* It launched before the other web frameworks of its nature (in fact, many were inspired by it).

* It hit API stability many years before Django did.

* It's a lot more flexible than most PHP frameworks.

* Ruby makes pretty, domain-specific languages easy.

* Rails, while allowing you to override defaults, doesn't ask you if you don't care.

* The features have kept coming in Rails with regular releases increasing its value. Many of the additions have come from real-world, high-value projects. That can't be said for many frameworks which were built as "we can make Rails in (Java|PHP|Python|etc.)".

Rails has hit a tipping point, but the interesting question is why. The author
hasn't put anything forward there. In fact, the author has some downright
weird statements. He can't find anything bad to say about Django? Rails just
plain sucks? Yet Rails wins? Even some of the things he mentions - such as
coupling data objects to the database - are done in Django (and most of these
style frameworks) in a similar fashion. So, that sucks in Rails and doesn't in
Django. Hmm.

It's a great attempt to create one of those articles people love to read that
say, "this sucks, but it's still what you should be doing because it doesn't
matter that it sucks".

~~~
mileszs
I think the article reads much differently if you picture the author saying,
"Rails won in this particular instance, for me/us." Perhaps that is not what
the author intended, but that is how I read it. It's much less polarizing that
way.

I do agree that it lacks substance.

~~~
sunkencity
I don't agree that it lacks substance, the conclusion, and also the conclusion
that I have made according to rails is that it's "good enough" for almost any
web project. It's safe to have it as a default choice. There's a good
community, fantastic libraries, constant innovation, and people are really
happy developing with it.

The notion that there's nothing wrong in choosing rails -- is now acceptable
mainstream. Even the hard ass Java developers at my work can acknowedge that
yes, it speeds up development to use a field tested full-stack framework
instead of rolling your own framework for every project. (Only recently did we
come to a truce, and now I can refrain for a while to try to push even wackier
frameworks on them like some Clojure based ones, because Rails is good enough
for me )

~~~
mileszs
For the record, you're preaching to the choir. I'm a Ruby/Rails developer, and
I'm quite happy about it.

I was only intending to comment that titling an article "Rails won" without
qualification, or without clearly making a decisive argument, lacks substance,
in my opinion. It's an anecdotal piece with which I sympathize, but that
perhaps would have been better titled "Rails won again", which would elicit
thoughts of Rails being chosen over other frameworks (and CMSs, in this case)
in a particular project, as opposed to Rails winning some epic arms race.

I probably just should've kept the last line of that last comment to myself.
:-)

------
plinkplonk
"> Rails is something people either love or hate with a passion

I'm just one data point, but I'm not particularly passionate about any
particular framework."

I am not a passionate hater of Rails, but I have a mild distaste for it and
prefer to use Django unless there is a compelling reason to go with Rails.

In the early days deploying Rails was a complicated process (I hear things are
better now) and that certainly contributed to my turning away from it, but the
deeper influence on me were the people who were evangelizing it to me.

I was working at ThoughtWorks at the time and I noticed that the people who
were all ga ga about Rails (and later JRuby) were people who didn't have much
technical "street smarts" and spent their careers riding the latest bandwagon
and overselling its benefits.

The people I really admired were much more cautious and skeptical and
rigorously logical and measurement centric.

I am not sure I am expressing this well, but the local rails _community_
turned me off it. The Django folks seemed much less fanboi - ish and more
focussed on quietly getting stuff done.

On the one hand it doesn't make sense to abandon a piece of technology because
it has an immature cultish community (or at least it felt like that to me. The
_ruby_ community always seemed better to me than the rails community), but on
the other hand, other things being equal, life is too short to spend with
people you think aren't thinking straight.

These days I just use Django and am happy with my choice. Of course this is
all very subjective and doesn't reflect on Rails technically. I am just
reacting to "hate with a passion". I don't hate rails, but I would rather not
work with it if possible.

~~~
look_lookatme
"> I was working at ThoughtWorks at the time and I noticed that the people who
were all ga ga about Rails (and later JRuby) were people who didn't have much
technical "street smarts" and spent their careers riding the latest bandwagon
and overselling its benefits."

">I am not sure I am expressing this well, but the local rails community
turned me off it."

You expressed it quite well.

I want to say, however, that was a pretty exciting time for many developers
who were stuck in the painful jobs with PHP or Java. At that time two of the
companies I worked for willfully jettisoned years of infrastructure in PHP
based off the work some of the younger devs (including me) had snuck in with
Rails (and Ruby). And it was quality, fast work.

If you had experience with Rails, you could stick out your thumb and get a
fast train from the midwest to the Valley and get paid crazy money, too,
because for some reason the business guys _needed_ rails developers. The Rails
conferences were a mix of pragmatic old school rubyists but also, many, many,
young and talented devs, arrogant and quirky in the way young people are. Also
there was a lot of free booze.

Of course, at the end of the day, we were all just software developers
rallying around an slow language and imperfect framework, but it seemed like a
lot of fun. I met some great people and worked hard and ended up the better
for it.

~~~
critic
> for some reason the business guys _needed_ rails developers

Not anymore?

~~~
moonpolysoft
Tough Economic Times.

------
tdavis
_"I finally gave up trying to get ruby talking to MySQL on my home windows box
and just moved everything over to linux"_

I'm not a Windows fan by any stretch, but it seems like people put up with a
lot of shit to use Rails; why would you choose a web framework which requires
you to change your operating system? That's asinine. It seems these days when
people say bugs and shortcomings "don't matter" they really mean "I haven't
run into a situation where they've screwed me over yet or if I have I just let
the framework win". It's a web framework, people; it should make easy/moderate
things easier, not make hard things any harder, and get the hell out of your
way. It should not make you change your life to use it.

~~~
moe
_why would you choose a web framework which requires you to change your
operating system? That's asinine._

Your desktop operating system != your server operating system.

There are no "windows web frameworks" and that's not a coincidence. If you're
serious about bringing something online then your first step should be to
learn the proper tools anyways.

Insisting on a windows-platform only because that happens to be your preferred
desktop OS, now _that_ would be asinine.

~~~
tdavis
There are no "linux web frameworks" either, aside from Rails I guess, because
I don't know of any currently popular language other than Ruby that doesn't
really work on Windows.

~~~
moe
Most frameworks are obviously not bound to a particular OS but almost all of
them are developed on a Unix and more or less assume a POSIX platform.

Yes, many do have a section in the docs for "Installation under windows" but
that's normally intended for a development environment, at most and comes with
many little strings attached such as "not tested on windows"-markers in the
docs and raised eyebrows on the mailing list.

------
ardit33
I think there is one clear field that Rails own: attracting the most of
douchebags to its community.

True story: In a bar (John Collins)i n SF, few weeks ago, end up striking a
conversation with somebody in a bathroom line.

Him: what do you do for work?

Me: I am an engineer. Software engineer.

Him: A Java guy!?! (with a lot of smugginess).

.... right now i am wondering if i have java printed on my front of something.
wtf.

Me: umm... no. Java is only one of the languages I know. (I use it most in
mobile dev). I also work on python and lua on the server side, and come C too.
And you? (i was still surprised by his condescending tone).

Him: I am rails dev! Ruby on Rails (with even more smugginess, borderlining on
arrogance).

.... few questions later, i realized this guy was a crock. Didn't know much
about closures/blocks, how many databases can you use on rails at a time...
etc.

imagine working with people like that. They setup rails, get a simple app
going, and they feel they are in top of the world and better then you. If you
know java, you are automatically assumed to be be an idiot, and if you don't
use rails you must be a boring person.

I think the Rails Community is full of people that suffer from the Dunning-
Kruger effect. A lot of newbies, who migrated from php, or would have started
with php few years ago, have migrated to Ror.

My point is that Rails is just another framework in top of an scripting
language which I don't prefer that much. While really nice for basic CRUD
apps, as soon as you try to do anything advanced, it shows it's limitations
right away. I tried to use Rails, but I have never been attracted to Ruby as
primary language.

Then I started using django, but I dropped it soon after my dislike with the
way meshes forms and models, and the sheer size of the framework.

I think the lesson I got out of it, is that more than often you just don't
need a full blown framework. If you are doing anything highly specialized, a
framework will get into your way. If you are doing anything very simple, a
full blown framework is just an overkill.

Frameworks like Rails or Django are a perfect fit for most medium complexity
type of CRUD apps. If you are doing anything else, better start looking
somewhere else, and don't just buy the hype.

~~~
flankk2
It is erroneous to judge the entire Rails community based on your experience
with one person.

I used to have much of the same beliefs as you about Rails; Rails is not fit
for highly specialized applications, a framework is overkill for very simple
projects. It is only after I got further involved in understanding Rails that
I understood that the framework is flexible enough to fit complex, simple and
specialized apps alike. I challenge you to give me an example of a web
application which is too advanced for RoR.

~~~
ardit33
Sure: Example one: I have friends that works in one of the major social sites
(not saying the name), and they tried ruby on rail, but failed to scale with
it, both feature wise (modilarity), and sheer performance.

They tested side by side, and they had to add almost x2 the amount of servers
for the same funcionality.

The mantra of Ror, is computers are cheap, developers/getting into marked is
more important. When you are serving millions of users, that mantra quickly
becomes expensive and hard to maintain.

They tried this in 2007, and still use ROR in limited capabilities (for some
tools).

Example two: Encoding video for potentially hundreds type of formats, for
thousands of users at the same time. This is on demand video serving to
customers where they have to scale in a two dimensional way (both users, and
video formats). Even not trendy among many people in here, Java has one of the
best and most advanced multi threading capabilities out there, especially with
Java 6. So, they stuck with java for this part of functionality, and actually
using Ror only for the wap front end.

Example 3: Any custom search engine, api engine, anything that doesn't fit the
CRUD mantra.

Sure you can modify Rails and get it to work for all the above examples, but
it will be probably a poor fit for it. A different technology/framework, or
just build your own web app without a full blown framework are better choices.

I hate it, when many people equate Web Apps with CRUD Apps, which I think it
is a mistake.

~~~
jon_dahl
We built a video transcoding platform in Rails - <http://zencoder.tv> and
<http://flixcloud.com>. Of course, it would be stupid for us to try to
actually do the encoding in Rails. That's what C is for. But Rails makes a
nice lightweight queueing/management platform that can work alongside of other
tools.

Each of your examples is a place where Rails isn't appropriate. But each
example should be a multi-tier architecture, and Rails can happily cover one
or more tier in each case.

------
nailer
"of course they picked the most bone-headed, moronic conventions imaginable,
like coupling data objects to the database"

Because creating every onject twice, once in the logicm, once in the DB, would
be clever?

~~~
Tichy
I don't get your point. In one case, the data object get's created from the
description in the database, in the other case the database schema get's
created from the description in the data object. Seems to me both times the
same amount of creation is going on.

------
goodkarma
I love Rails!

I have been programming my whole life - more than 20 years. Rails is the most
amazing framework to work with. You can do nearly anything with it - and
pretty quickly. And you can get a LOT done in just a few hours of work!

Besides all of this, though, Rails is what got me to learn and truly
appreciate Ruby. And Rails would be nothing without Ruby. Rails is fantastic,
but Sinatra, Merb, etc., are other options that I am exploring more and more
depending on the needs of my project.

------
rbanffy
As much as I appreciate the momentum behind Rails, I cannot stop reminding me
that if I go with the herd and do whatever most people are doing I will have
to find my competitive advantages in places other than technology.

And I think that would be a huge loss for me.

~~~
mikeryan
This seems to be a common thread for engineers building webapps.

Its not to say that you're incorrect, but if you're building a webapp that
doesn't have huge special needs with regards to performance or some special
technology sauce then your technology isn't a competitive advantage.

If you have something that can easily be built in Rails then I have a hard
time thinking of a way to get a real competitive advantage working in
something else. (On the flip side, Twitter was easily built in Rails and it
was very much the wrong tool for them).

In fact working with well known, ubiquitous tools that get the job done well
and fast is in itself an advantage. Being able to rev faster and easier then
the shop down the block with their super cool custom built web framework that
takes people 6 months to learn is an advantage.

Unless your technology IS your product, compete somewhere else.

~~~
rbanffy
It's not about doing stuff in platform A that can't be done in platform B.
It's about delivering things faster than your competition, something that
can't be done if you use the very same tools they use. You can, of course, be
wrong and go with the wrong tool, but remember - it's a bet on a technology
differential.

The Twitter problems stem not from the web framework they used but in flaws in
the design of the data structures under it. When doing something like Twitter,
one should never even consider using relational databases for more than a
prototype.

------
Hexstream
I must be spending too much time on HN, I thought Rails had "won" since at
least a year ago.

------
dustineichler
the author nailed it here, "I noticed that I was actually getting a hell of a
lot done in not much time at all."

~~~
TomOfTTB
That seems to be the essence of the piece and I'm happy for the author but why
did this get posted here?

There's no content to it. He doesn't list the pros and cons, he doesn't really
detail his thought process he basically just says "I chose Rails so it Won".
It's basically a propaganda piece.

I don't fault the author. As a general "this is what's going on with me" post
to an established audience it's fine. But I can't see why it's getting voted
up on HN

~~~
axod
Because rails is so 'hot' right now. Like git/charging customers/cloud/etc

~~~
mrfish
I almost choked on my lunch when I read "charging customers" ha awesome.

------
jncraton
> Rails is something people either love or hate with a passion

I'm just one data point, but I'm not particularly passionate about any
particular framework. I have used Django the most, and it gets the job done.
Rails is a useful tool as well. I'm the kind of person who will write
something in PHP if I need to. I know that there are advantages and
disadvantages, but I usually don't worry too much about sticking to one side.

------
njharman
"If you're building a business you want something approaching an industry
standard, because the more people working on and with a technology, the more
developers you have available to hire, and the more tools they have to help
them work faster."

If you honestly care about that (which is BS btw) then Drupal, RoRails and
Django are non-starters. You have one choice, Java.

Is RoR really all that used/popular (esp outside of startups)? I'm gainfully
employed as a Django dev and my industry, news companies(oka newspapers), is
dominated by Django. So, I'm probably sample biased. Still, I see lots of
Django usage, I see Django jobs, I see Python being much bigger than Ruby.

------
melvinram
Maybe you haven't noticed it yet, but you're getting a lot done because of
those "bone-headed, moronic conventions."

And it doesn't have to be a either/or situation with being a technology leader
& using Rails.

It just frees you to focus on better, higher quality problems to solve.

Anyway, welcome to the Rails community.

------
dpnewman
strange posting really ...saying very little and in a confusing way.

there's certainly little value in claiming one tool is better or worse.
whatever works for you + each project is so different.

that said -- from a purely personal and subjective point of view -- rails
feels to me like playing a beautifully crafted instrument. never had so much
fun programming. there's a lot of accrued wisdom in that opinionation ...
imho...and is evolving at a very rapid clip.

------
gord
The article sounds like... "Rails has too much momentum, so well go with the
hurd."

In my own case were building something framework-like, so Id be fighting the
code if I used another framework - its more like systems programming than app
programming.

I might have used Ruby but I hear Kernighan & McCarthy turning in their graves
whenever I type "end" where a bracket would do the job.

The first hack was in PHP, and now I need some syntax to manage the
complexity, and a custom DSL, so...

plt Scheme won, in my case.

~~~
petercooper
_I might have used Ruby but I hear Kernighan & McCarthy turning in their
graves whenever I type "end" where a bracket would do the job._

Then don't type _end_ , type _}_ instead. Yes, it works.

If you're going to try something and give up before learning syntax, that's
great, but trying to speak authoritatively is misleading.

~~~
gord
Well, I haven't seen a lot of ruby code that uses } instead of end, have you?
So using }, although legal, might not be within standard ruby practice.

The fact that it _allows_ 'end' would be enough to turn me off :]

I guess 'end' wasn't the only reason - while I don't actively dislike Ruby, I
just prefer scheme or the lisp family. Part of that is the logical consistency
of the lisp languages, part of it is purely personal taste.

~~~
petercooper
Standard Ruby style is to use { } when the code block is inline or a single
liner, and do/end on multi-line blocks. This is only common style though.

------
kubrick
_The Railiens make a big fuss about favoring convention over configuration,
and of course they picked the most bone-headed, moronic conventions
imaginable, like coupling data objects to the database, using pluralized table
names_

He's entitled to his opinion, as is DHH. But for my money: why are Rails'
conventions "moronic"? What the heck is wrong with coupling data objects to a
db?? He'd prefer something more awkward and arcane?

~~~
handelaar
Well, the specific example of using pluralised table names works in English,
and completely unworks in many many other languages, for a start.

Hell, it doesn't even completely work in English, either. Not all English
words are pluralised simply by adding a trailing 's'.

~~~
petercooper
Which is why you can add inflections in Rails. It even comes with a reasonable
set to cover the most common exceptions.

------
erlanger
Others that he didn't even mention:

* CakePHP (it's better than CI, Symfony and Zend)

* Catalyst

* ErlyWeb

I think it's particularly surprising that he left Catalyst out with the
language's huge mindshare and the productive nature of the framework.

Drupal simply isn't in the same class as these. It's a CMF, not an application
framework.

