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".
I've read Michal's blog for a long time. I used to host with him (in fact I think I still owe him about $60). One thing he is not is a windy tech evangelist. He writes about his experiences small and large. He's a interesting entrepreneur. I think something that's lost in your analysis is his resignation to building with an off the shelf framework. A better title would be "Rails and Django won and also I've given up on writing a better framework".
I agree the article lacks back story and deep analysis (probably making it unsuitable for an HN link), but if you were familiar with his blog that would be unnecessary as the sentiment and not the technical reasons are important.
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 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 )
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. :-)
That's exactly what the author is not saying. The other frameworks were better for them, he says. They didn't like Rails.
But Rails has the most industry and community support. And since nobody plans to write all the code themselves, that matters more than almost anything else.
"It launched before the other web frameworks of its nature (in fact, many were inspired by it)."
It launched at the same time as Nitro, which was similar in some ways, but possible better in others. Nitro was thread safe, faster, had an early form of migrations before Rails, and offered a more capable view/action pipeline model (somewhat akin to Rack middleware).
It allowed for a fast convention-over-configuration rapid development approach, but also made PHP/ASP-style Just One File apps equally easy.
Yet Rails became all the rage and Nitro the forgotten child. My guess is the marketing of Rails beat the pants off everyone else.
"> 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.
"> 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.
"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.
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.
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.
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.
He may be targeting Windows users (since there are an awful lot of them), or want to tie in to some Windows-specific functionality, or a host of other reasons.
Of course, JRuby on Rails (Rails on the JVM) is also a very viable option, and comes with a few nice features you don't get in Rails (Job scheduling with Quartz being my favorite), at the cost of having to deal with the complexity of the JVM (GC tuning is a pain in the ass).
The framework and language you chose are only a part of your company strategy.
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.
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.
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.
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.
>While really nice for basic CRUD apps, as soon as you try to do anything advanced...
And what is there exactly so advanced that you want to do? You have a problem domain object model that you have abstracted as database tables. Is there anything Rails-specific in there? No. Your call, your design.
Then you have to present the objects to the world. Rails gives you REST. You may take it, or you may chose to increase complexity by adding your own methods... Hell, you can even put logic in the controllers, do as you like.
What is exactly bothering you with Rails? Rails just marshals http requests to database and back. Sinatra does the same, but then Rails have more community support and much more of those little snippets of code that just make your life easier. Nobody prevents you from writing your own helpers, if you don't like the Rails' ones.
Rails is just replacement for all the mundane, repeated and brainless tasks of handling those http calls - it lets you focus on the business logic, that's all. I challenge you to invent anything 'advanced' for which Rails (or Django, or Sinatra) are not good enough. The thing is - they are not there to make anything 'advanced'. They release you from managing infrastructure of your app. And 'advanced' stuff is completely up to you.
I agree about the developers that Rails attracts. The one job I had with RoR, the employer was technically incompetent and he didn't pay. He was migrating _everything_ over to Ruby on Rails and spoke incessantly about it.
I've also noticed that the Mac crowd is extremely attracted to Rails. That should show us something -- and please don't assume that I mean all users of these techs fall in here, because I know that very intelligent people use both -- but Rails and Mac both seem to attract arrogant, know-nothing hipsters.
That said, frameworks are a pain when they're overused, but they're handy, even in advanced apps, when you simply consider them as a set of macros and convenience functions instead of an entire philosophy. This is something I really love about Pylons; it's there to help out when its needed and it stays out of the way the rest of the time.
This is very similar to my own experience of working with people who prefer Ruby on Rails. The technology is fine, but the culture seems to attract the worst people to work with.
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.
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.
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.
Not only that, going with the herd would actually mean going with PHP and not Rails. There are dramatically more applications written in PHP and developers working in PHP than with Ruby on Rails.
"Rails seems far better positioned than PHP for future growth. This means PHP will peak and Rails will surpass it eventually."
If this comes to pass I will be completely and utterly stunned. I don't expect to be stunned.
You do know that PHP usage has continued to increase, all throughout RoR's rise to prominence (and subsequent fade in prominence as Django, Erlang, Haskell, Scala, etc. shuffle in and out of the spotlight), right?
There are more PHP developers today than there were three years ago when Ruby started getting folks attention. Book sales are up for PHP while they're down for Ruby, etc. I'm not at all suggesting that RoR isn't awesome or that it isn't alive and well or anything of the sort. I just know the reality of the market. We have thousands of web developers using our software...and I can assure you that the vast majority are working in PHP, despite the fact that we went to great lengths to add a nice RoR environment a couple of years ago (we also added some Python niceties, but it aint exactly mainstream, either). In fact, I'd probably even go so far as to say that more new PHP developers came into existence during the rise of RoR than new Ruby developers. So, not only do I think Ruby on Rails won't surpass PHP eventually, I think it's been falling further behind PHP all along and will continue to do so, just like most languages in the web space.
I don't have to like PHP to recognize this. Believe me, I don't like PHP. But, I'm not going to bury my head in the sand and pretend like it is anything but a massive phenomenon. It's simply the unstoppable juggernaut of "worse is better", when it comes to web software development. Will PHP eventually die? Sure. But it's not going to be killed by Ruby on Rails.
PHP will eventually peak. Rails is almost certainly not the replacement. The replacement will have to be at least as easy to start with and as convenient as PHP, not less so.
I say that's a big maybe. For all it's strengths, Rails requires more programming skills than PHP... PHP will always be better for the "web designer turned scripter" set, just because it's easier to get results with if you aren't really a programmer by trade.
> PHP will always be better for the "web designer turned scripter" set
Funny, I think the same about Ruby/RoR, it just seems like a perfect crowd/match for "web designer turned scripter" mindset - looks like it is marketed to the same crowd too. PHP mostly marketed itself to "script kiddies", albeit not on purpose. It gained a huge following, and with it came lots of inexperienced kids that could "do stuff" easily. Mainly installing phpNukes, at the time, and modifying phpBBs etc. To say that Rails requires more programming skill than PHP is a moot point considering that developing web application, whatever the nature, could be done in both Ruby/Ror or PHP (with from scratch work or some framework) - thus it relates to the same problem set. Why would solving the same issues in one language/framework require a larger skill set then? It is as if you are saying RoR programmers are l33t, PHPs aren't - which doesn't make any sense, because I believe there are many great programmers and programs written with both.
"I think the same about Ruby/RoR, it just seems like a perfect crowd/match for "web designer turned scripter" mindset"
And that is probably one of the greatest strategic weaknesses of Rails - it will be used by those who shouldn't use a web framework, who will make every silly mistake and that could tarnish Rails reputation beyond repair.
Not necessarily. As you can witness, PHP attracted lots of "newbs" and guys that generally don't have a clue, or are just installing drupals, joomlas and whatnots while proclaiming or being proclaimed as PHP gurus. It did get a badge of being a shit language to php, like visual basic (which rightfully deserves so IMO - php does not), but it did fine. Culling of the masses that don't have a clue happens spontaneous, and usually follows them being hoarded into a separate camp - compare to the "normal" hard working php guys and joomla, drupal stuff.
Am I the only one completely underwhelmed by Drupal? The UI is awful and the demo doesn't even have a decent editor. Whomever revamped Wordpress needs to get in touch with the Drupal folks yesterday.
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.
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.
I guess that depends on what you're trying to accomplish. Often one wants to be first to market or add new features quickly. The author states that he was "getting a hell of a lot done in not much time at all." That means the front end of the business could be built quickly, accomplishing the main goal of satifying the customer as quickly as possible.
Now there may be another framework that does it better, if you can find that and use it, you will outrun your competition.
I chose PHP for my first startup, because it was a really fast way to get things done, warts and all, and it seems many feel that way. But I'm going to check out Rails this time because it has so many people getting things done with it.
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
Notice how a comment further up that does nothing but call Rails developers "douchebags" has a high vote count, while other posts that proselytize Rails fare similarly.
There are two camps that are happy to vote en masse for comments that validate their worldview.
> 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.
"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.
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.
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...
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.
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?
Sometimes I, as a Rails developer, forget which is supposed to be pluralized, the model or the table. (Gah!)
Still, Rails' pluralization algorithm is savvy enough to know when it can't just add an 's'. Most of the time, it works.
If you don't like it -- like most things in Rails -- you can just turn it off with one option.
It's the fact that you're allowed to dislike features like that, and make them go away, that makes me wonder how people can hate on it. It's opinionated, but it's not dogmatic.
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".