

WTH is happening to Rails? I'll tell you. - emiller829
http://metautonomo.us/2011/06/14/wth-is-happening-to-rails-ill-tell-you/

======
trustfundbaby
I don't think the author really gets why people have a problem with what's
going on with Rails, and the article strikes me as a "I like this why don't
you?!" type deal vs making a reasoned argument for why the constant change in
the Rails way of doing things is necessary.

> If you’re learning a new language, a strong community consensus about a
> right and a wrong way to tackle problems aids learning

\-----------------

Right, but the problem is that there doesn't seem to be a 'right' way, That's
the problem.

We were all prototype a few years ago, now it jquery ... we (well I) hadn't
heard of coffeescript till a few months ago and now its a default option in
rails, The way we were constructing ActiveRecord finders had been set all
through Rails 2, now we've changed it, the way we dealt with gems was set all
through rails 2 now its changed completely in Rails 3.

I like change, I like staying on the cutting edge of web technologies, but I
don't want to learn something, only to discard it and re-do it completely to
bring it up to date with a new way of doing things all the time.

> If, as coders, we aren’t constantly striving to improve the status quo,
> what’s the point?

\---------------------------

The point is that you have to realize that Rails isn't just your personal
plaything any more, people are invested in it just as much any one person or
group of people.

I have 5 Rails 2 apps that I support at work and a couple more outside of
that, they're all on rails 2 ... bringing them up to Rails 3 without
disruption, isn't going to be trivial and I'd be nice if folks acted like they
understood that and didn't dismiss similar concerns, or berate folks for
having concerns.

To that end, my personal preference would be to see fewer but more substantial
releases and a little bit more engagement with the community before making
major decisions about the framework instead of the steady drumbeat of updates
and (seemingly) unilateral decisions (that coffee script decision really irked
me, can you tell?)

~~~
sabat
The Rails core team does seem to treat the project as if it's a personal
playground. But the improvements they make do seem to (usually) be good ones.
Since it's almost always the case that you can eschew their choices, the
complaints I hear are not compelling.

~~~
ericb
I think you're missing the perspective of someone who has a major body of apps
to maintain. I easily upgraded a trivial app. Now I'm slogging through a month
long Rails upgrade process on a very large app. Unless you've been stuck with
a large upgrade like this, it is probably hard to understand the upgrade pain.

That said, I love the changes in Rails 3. Considering strings unsafe and
escaping them by default is great, bundler rocks, arel is very nice, and the
mailer api is nice.

The rapid change and code purity ideals in the Rails world leads to benefits,
so I tolerate it in Rails in spite of its costs.

This idealism has unfortunately infected projects in the Rails ecosystem that
are really just infrastructure (where change should occur slowly). As
examples, both Rspec and RubyGems are willing to break compatibility and code
that I rely on for benefits that are neglible, aesthetic, or invisible to me.
The difference is, when Rails breaks something, 90% of the time it buys me
something.

------
joshuacc
_The difference is that Steve Coast, the post’s author, casts himself in the
role of a crusader for the newbies._

I find this all a bit odd, since as a Rails newbie[1], I found Rails 3.0.x
very easy to learn with a little help from Michael Hartl's tutorial and the
Rails Guides. Perhaps this is an example of the "curse of knowledge?" In other
words, that since Coast found Rails 2 easier, he assumed that newbies would as
well?

[1] Front-end developer with little back-end experience.

~~~
trustfundbaby
Wait till you have to keep up with the changes when 3.1 then 3.2 come out six
months within each other, and start to change and deprecate things that you
learned in 3.0.x

~~~
jharrison
You don't have to keep up if you don't want to. Your apps will not stop
working if you choose not to upgrade. I have apps still running on Rails 1.x
and 2.x. They don't get huge traffic and they are meeting the customer's
needs. There would be no business advantage for these particular customers if
I had to charge them to upgrade.

~~~
makmanalp
Will they keep doing security patches for those?

~~~
jarin
They have been pretty good about doing that. There was a security patch for
Rails 2.3.x 6 days ago: [http://weblog.rubyonrails.org/2011/6/8/ann-
rails-2-3-12-has-...](http://weblog.rubyonrails.org/2011/6/8/ann-
rails-2-3-12-has-been-released)

~~~
jamesbritt
It's not just security (and other) patches for Rails, it's maintenance for the
assorted plugins one inevitably ends up using.

If you've a Rails 2.x app with plugin ActsLikeWhatever, and you run into some
problem with that plugin, chances are the fix will only be in the newest, non-
Rails2, release.

------
flocial
This is the typical "rails" response. Rails will make you a better programmer
by teaching you the right design patterns, etc. Of course, it does indeed give
you a proper structure to building a web service and can be quite educational.
However, it can make life difficult once you start straying from "their way"
even if you know exactly what you're doing for even simple things like mapping
to a legacy DB with schema intact (not gonna happen). Conventions over
configuration is nice but it requires some stability.

Part of the problem is the leadership. They take the stance, "you bastards are
doing it wrong" if you want to do things a little different.

The community almost split when they managed to swallow Merb and keep Rails.
It's toned down quite a bit but that negativity definitely carried over from
the early days and infects the community (swearing in presentations and porn
references, etc.).

But these thinking aids aren't exactly radical paradigm shifts that will
expand your mind and make you a significantly better programmer for the rest
of your days. Rails is one of the most influential frameworks and did a lot to
advance the field but now there are other frameworks that are much easier to
learn and get a functional web service started.

So saying dissenters are slow to learn, stubborn or haven't been writing tests
really doesn't do anyone a service and doesn't make anything clearer, sorry.

~~~
bxr
>it can make life difficult once you start straying from "their way" even if
you know exactly what you're doing for even simple things like mapping to a
legacy DB with schema intact (not gonna happen)

Yikes, unfortunately this knocks rails off of my to-try list. I've got a non-
web application with an unusual, but by no means bad, schema. I've found it
makes a good measuring stick for frameworks/tools. I have nothing against
doing things in the way of a particular framework, but I have existing code to
bring to the party too, if something isn't going to play nice I ignore it. I
can't live with building something that exists in isolation. Its either not
going to work with what I have, or hold me back when I want to build on top of
it with something else.

~~~
sebilasse
Give datamapper a try, might be better for your case.

------
jarin
I think most of the arguments people have any time Rails does a major change
can really be re-interpreted as:

"I have a moderately complex Rails app that I want to upgrade, but I don't
have much confidence in my tests, I maybe don't have proper separation of
concerns, and I just know that one hacky thing I did a while back is going to
bite me in the ass."

It's just something that happens over time in any moderately complex app. I
see Rails point release candidates as a good reminder to bust out rcov and
spend a few days plugging up the gaps in test coverage before the stable
release comes out.

If you've been procrastinating upgrading your Rails 2.3.x app to 3.0.x, you're
really gonna have fun going straight from 2.3.x to 3.1. Sometimes you just
gotta rip off the band-aid.

~~~
bgentry
_"I have a moderately complex Rails app that I want to upgrade, but I don't
have much confidence in my tests, I maybe don't have proper separation of
concerns, and I just know that one hacky thing I did a while back is going to
bite me in the ass."_

This says it all for me. Upgrading an app or parts of an app that have great
test coverage is really pretty straightforward. It's only more difficult if
you weren't following best practices all along.

~~~
joshwa
> _Upgrading an app or parts of an app that have great test coverage is really
> pretty straightforward. It's only more difficult if you weren't following
> best practices all along._

Like people working with Rails in the the real world with real, less-than-
perfect programmers.

Yes, if I'm an ideologically pure, saint-like programmer with 100% test
coverage and purely idiomatic ruby, then upgrades should be a breeze.

Except the plugin ecosystem problems still arise-- even the 'perfect'
programmer has to be perpetually upgrading to the latest-and-greatest plugins
since the last authentication/taggable/whatever plugin has been abandoned in
favor of the flavor-of-the-week.

------
tptacek
Hard to take too seriously any OO fundamentalism from someone who cites the
Gang of Four patterns as if they were sacred scripture. Actually, they're
techniques for working around the limitations of languages like C++, and when
evoked explicitly in Ruby tend to be a "code smell".

This comment has been a service provided by the small bot running in my brain
programmed to respond to mentions of the GoF book with a link to Norvig's
presentation on them:

<http://norvig.com/design-patterns/>

------
lisperforlife
I maintain a couple of non-trivial Rails 2 apps, have just shipped a couple of
Rails 3 apps and am preparing to write a Rails 3.1 app. I had always been
using Sass and Haml for my views from the Rails 2 days. I moved over from
shoulda to rspec 2 for Rails 3. All my solutions run partly on MRI/1.9.2 and
have certain parts in JRuby (document parsing, search, etc). I had always been
minifying and combining my Javascript. Sass with Compass/Blueprint took care
of minifying and compressing my CSS. The only change that I am not comfortable
with as yet is CoffeeScript. But after playing with it for a couple of hours I
understand that this is an excellent choice. I have been a Python programmer
before and significant whitespace in CoffeeScript or Sass does not bother me.

I am extremely thankful to the people in the community who are putting their
time and effort to build such great software and essentially giving it away
for free. I am personally both awed and humbled by the excellent work put in
by all the individuals who directly or indirectly contributed to Ruby and
Rails across all the versions. If not for them I would not have quit my day
job. If not for Rails, I am pretty sure that I would not be enjoying my life,
as much as I am enjoying it today.

The point is that Rails has grown up to the point where makes it simple to
write complex applications. For small projects, these choices may seem to be
an overkill. But trust me, when you put it into production and start getting
traction you will thank Rails. I have built applications with Sinatra and Rack
and assembled my own Rails environment using tons of middleware and a lot of
glue. I know how hard it is to do it the right way and appreciate the fact
that Rails makes it a cakewalk for us. I sure learnt a lot of Ruby but I would
choose Rails any day as I know that there has been a lot of thought put in by
the community to make it awesome.

------
mcantor
I've lost count of how many times I have tried to do something in Rails which
was trivial in every other framework I have ever worked with; struggled; gone
to #rubyonrails or a mailing list and asked for advice; and had people tell me
that I was "fighting the framework". I understand the benefit of not having to
make every single decision from the ground up when you're getting started on a
project, but sometimes I worry that working with rails is actually warping my
thought patterns to fit its myopic vision of how web apps "should" work.

To phrase it differently: I feel comfortable with a framework or community
forcing me to change _how_ I achieve some higher-level goal. But when that
convention prevents me from doing something, _period_ , I start to worry.

~~~
trustfundbaby
Thats how Rails is ... I fought it at first, but you either come around or you
don't. There isn't much middle ground with rails, you have to accept that and
plan accordingly.

~~~
gaius
Like everything Ruby, you have to drink the Kool-aid, or walk away completely.

------
perlgeek
> In most cases — for mere humans, anyway — there really is a right way to do
> things. Ruby is an Object Oriented programming language. There are literally
> decades of prior research in the field of OO software design, and they’ve
> resulted in a lot of really well-documented and well-tested design patterns
> for building software.

... coming from the people who are known for relying heavily on monkey
patching existing classes.

Or did that change recently?

~~~
prodigal_erik
Allegedly they have faced enough mutually-inflicted pain to realize that
monkey-patching was a bad idea, and so it's no longer cool.

------
runjake
The rapid pace of Rails is a turn-off to me, and I do bounce between it and
the more "sane" Django.

But I think that's more a reflection of myself (being an "old" guy who's "been
there, done that" several times over and resistant to change and trends) and
not the fault of Rails. So I try to keep up.

But Rails is good for the web. The web was pretty stagnant at one time, and it
sucked, and didn't keep up with the needs of users and businesses.

And that's why I don't have a real problem with Rails' rapid pace. It keeps
everyone on their toes, including their competitors.

------
betageek
I agree with a lot of what the article says but I do think the newbie coming
to rails at the moment has to do a hell of a lot more to start swimming
compared to the "good old days" of Rails 2.

Ruby 1.8 or 1.9? Use RVM? How does this Bundler thing work? What the hell are
all these deprecation warning? Rake's broken? etc. etc. 3.1 brings asset
pipelines where it seems you need to install a Javascript runtime on the
server to deploy?!?

Even when you get your app up and running the load times in 1.9.x at the
minute mean you'll be hanging around waiting for rails to generate files and
your going to have to get Spork running to make any kind of rapid TDD/BDD.

Rails used to be the easy way into all this modern development goodness, now
that "blog in 20 minutes" simplicity has gone along with the famous
screencast.

------
dochtman
It seems actually kind of obvious that "opinionated" software would have a
higher rate of change than other kinds of software: opinions change faster
than the other stuff.

~~~
ahi
I was thinking just the opposite. When it comes to frameworks, opinions are
good things. But you kind of look like an undependable jackass if your opinion
changes every 5 minutes.

------
joeburke
All the frameworks "are growing up", this is nothing to be proud about. The
real question is: is the framework becoming mature?

Because RoR has this tendency to reinvent itself every 18 months or so, the
answer to the question is a resounding no. It's being used mostly to explore
new ways to create web sites, but RoR is more and more becoming a framework
you really want to avoid if you need to create a production site that you are
planning to work on for years to come.

------
synnik
When one person drives the platform strategy, and it is opinion-driven, then
conflict like this is inevitable. You either agree or you don't, and if DHH
changes his mind, you might changes yours, too.

I don't think it is a statement on the platform at all - just a repercussion
of one of its tenets.

------
clu3
At least you guys Rails have something new to look at, good or bad I don't
judge. I've been using Zend framework for the last 3 years and it's latest
version 1.10 has lived like "forever", until the day ZF 2.0 comes out, which
has been "promised" a long time ago

~~~
trustfundbaby
In PHP's defense ... Development on CakePHP has been chugging along like a
champ for a while now.

------
tluyben2
I don't think this is a good thing. I built a few rails apps and currently we
are doing our startup in rails and java and depressingly enough Java is
actually nicer for me. He's talking about well documented gems; which ones? I
haven't seen much of those; it's usually 'go read the source code'. And all
those 'great OO practices' where suddenly some class is behaving totally
different because you installed a plugin is GREAT when it works. When it
doesn't you are debugging yourself silly through all that meta programming
crap. And having (as in, stuff stops working) to change your code through
minor versions? That's not growing up, that's just crazy behavior.

------
MartinMond
I remember a blog post from 2008:

Rails will be retrofitted to make it easy to start with a “core” version of
Rails (like Merb’s current core generator), that starts with all modules out,
and makes it easy to select just the parts that are important for your app. Of
course, Rails will still ship with the “stack” version as the default (just as
Merb does since 1.0), but the goal is to make it easy to do with Rails what
people do with Merb today.

<http://yehudakatz.com/2008/12/23/rails-and-merb-merge/>

~~~
epochwolf
And they have been moving in this direction.

Here's configuring the middleware:
<http://guides.rubyonrails.org/rails_on_rack.html>

Here's a stackoverflow question on how to disable ActiveRecord:
[http://stackoverflow.com/questions/2212709/remove-
activereco...](http://stackoverflow.com/questions/2212709/remove-activerecord-
in-rails-3-beta)

Have you seen ActiveModel? It gives a common interface for orms to interface
with so swapping out ActiveRecord doesn't break half of the view helpers.

Rails 3 is far, far easier to extend and modify than 2.3 was.

------
ryanisinallofus
"It's growing up" sounds like "it's turning into java"

Now I know it's not that bad but I can see a future where instead of just
having the rails book, you have books for every new thing and option possible
and the section looks like the Java section where Struts, Spring, and even
Scala/Clojure all make the idea of switching to to rails seem far more
daunting than it needs to be.

------
radagaisus
What's with the PHP bashing? MVC and ActiveRecord were in PHP frameworks and
code before rails was born.

~~~
sigzero
It's easy to bash PHP.

------
jasongullickson
Right or wrong, I'm looking forward to whatever fills the spot that Rails left
behind. It was a pleasure to work with a few years back and I miss that.

If you've seen something that fits the bill, please pass it on.

~~~
ryanisinallofus
Sinatra I guess. You can choose the orm and templating language you want-
which sort of just turns it back into rails.

Still working in Sinatra does give you that fun feeling of old Rails.

~~~
jasongullickson
I liked being able to think of an idea, sketch out a schema and have it up in
(admittedly ugly) webpages in a matter of minutes...and on almost any machine
in just the time it took to download the package (no crazy dependencies,
etc.).

The fact that you could then evolve this into something production-ready
(arguably), well that was just icing on the cake!

------
bxr
Thank you for making "You just don't get it" point number 1. I like to know
early on when I should bail out and stop reading something.

~~~
emiller829
Had you continued reading, you'd see that I backed the point up by explaining
what I meant. :)

~~~
josefresco
Bxr is suggesting that you either move that conclusion to the end or eliminate
it completely and define your argument so that the reader can figure out
whether or not "he gets it". If I had to guess I'd say he would prefer the
latter.

~~~
pointclick
i prefer the way he said it.. same as bxr, i'd like to know early on what i'm
about to waste time on.. i finished reading the whole thing..

------
gusi
I dont think that rails should worry about complaints coming from php
developer.....

~~~
zoul
<http://en.wikipedia.org/wiki/Ad_hominem>

~~~
gusi
<http://news.ycombinator.com/item?id=2688788>

this is what i was referring too much of these are in ruby on rails from the
beging ...

<http://en.wikipedia.org/wiki/Change_management>

