Twitter Reportedly May Abandon Ruby On Rails 423
Raster Burn writes "According to TechCrunch, Twitter has plans to abandon Ruby on Rails after two years of scalability issues. Candidates to replace Rails are said to be PHP, Java, and Ruby without the Rails framework." The post links a brief comment (at 139 characters, probably a tweet) from Twitter founder Ev Williams saying it ain't so. The comments following the post embody the controversy over whether or not RoR sucks.
Re:What is Twitter? (Score:5, Informative)
Re:What is Twitter? (Score:5, Informative)
You can twitter from your cell or PC.
I think it is one of the most usless things on the face of the earth but it seems popular for some strange reason.
According to Penny-Arcade: (Score:5, Informative)
Re:What is Twitter? (Score:2, Informative)
It's a service to announce to your friends what you're having for dinner, how satisfying your bowel movements are, and whether or not you intend to see the hip concert that is happening next week in your neighborhood.
It's the blog without the content, the conversation without the words, the letter to a friend without the feeling, and the kiss goodnight without the tongue.
As for the significance of them allegedly leaving RoR, that's anyone's guess. Probably to incite more PHP vs. RoR battles on /.
Re:According to Penny-Arcade: (Score:2, Informative)
Re:What is Twitter? (Score:3, Informative)
It depends on what you use it for. For what I use it for [twitter.com] it's quite useless but if you're into notifying groups of friends what you happen to be doing and want it to be delivered by their preferred method of receiving that information, then it's great.
I want to tell 10+ people that I'm going away for the weekend and I don't want to deal with two SMSs, three e-mails, four IMs and one phone call so I just fire off a message on twitter and it's all done and everyone gets the information quickly and easily.
Re:Ruby Can't Scale (Score:4, Informative)
Please refrain from commenting when you don't know what you're talking about. The desire to stir up a flamewar is not sufficient justification.
Twitter has no plans to abandon RoR... (Score:1, Informative)
Re:Ruby Can't Scale (Score:2, Informative)
So. Since rails isn't thread safe you have to use a process model where one process handles one request. Now these ruby processes can get up to 100MB in ram (depending on application). That means it takes 100MB to post a comment, display a page,etc.. This is an extremely unforgiving environment when you are trying to scale. There are many scenarios where just a little extra i/o wait in your system will cause everything to crash and burn.
A lot of RoR developers are looking at merb. No native threads but it is thread safe and solves the problem I described above.
The problem is the database (Score:3, Informative)
MatzRuby 1.8 is somewhat slow, but it does proportionality very little work compared to the MySQL and Memcached back end. Quite frankly, I've never seen a performance profile of a Rails site where Ruby was the problem; it's almost always the database, or too many AR queries.
Comment removed (Score:5, Informative)
Re:Sense, you're not making any... (Score:2, Informative)
The RoR community does not want this to happen.
Re:Does a clean architecture matter? (Score:3, Informative)
That would be an incorrect assumption. I was actually referring to a winforms web browser control:
e.g.
http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx [microsoft.com]
This is a control that takes an url or webpage as input and renders it in a control. Its basically an embeddable web browser. And of course it relies on the Internet Explorer (Trident) rendering engine. I use them, for example, for printing in quick and dirty utility apps. Suppose I've got some data structured as an xml document -- its SOOO easy to just write a quick xsl transform, and push the xml through it to an attractive formatted html/css document and feed it to this control which renders it, and can also print it.
Instant attractive report printing, and as a bonus I've got attractive onscreen display that copes with rezizing etc, the option to save as html/css. or even as an xml/xsl pair. Which makes it easy for someone else to work with the data, and view it attractively.
Contrast with the effort of developing something to print 'manually'. Which just gets me printer output and is a TON more work.
The big handicap though is that I'm basically embedding 'Internet Explorer', and leveraging its features... but I get all its warts too, and have little real control over the rendering.
All stock Web controls provide a protected non-sealed virtual method named "RenderControl" (actually, they all inherit it from their common base class). You can always override that in a derived class, and do what you see fit in your implementation, without any preparsing.
All true, and I'm a big fan of ASP.NET because of this. The only things that really bug me about asp.net rendering output is that:
a) some of the defaults really suck (but can be easily fixed as per above),
b) the fact that they seem to have disowned maintaining the browser-capabilities which is why safari 3 gets treated as 'downlevel' for items like certain menu control configurations when it's more than capable of handling the uplevel code correctly. And worse the company they handed it off to... 'cyscape' has even less interest in maintaining it... no they want me to pay for their product that does it.
If Microsoft wants to support uplevel/downlevel browsers and send custom code to different browsers, that's great. But I shouldn't have to manage this myself except maybe for bleeding edge beta browsers. And I certainly shouldn't have to bloody pay for it.
c) the __VIEWSTATE and a couple other item names that piss off 'html tidy' and don't validate as strict xhtml. I've never found a good way of 'fixing' that. I've seen a few idiotic solutions that run a regex on the incoming requests and outgoing pages to fix it, but that's a stupid performance hit just to get a 'green-checkmark'.
-cheers
Re:Yes, in fact, RoR DOES suck (WARNING: RANT.) (Score:2, Informative)
You are wrong about MVC. In classic MVC, Vs access Ms directly. Cs manage changes to Ms and select Vs to be displayed (which in turn access Ms). Web frameworks do not implement classic MVC. What you're describing is something that used to be called model 2 in the struts world.
The /*/view mapping is a way to have "restful" URLs and are the result of browsers (and I guess HTML) not fully supporting/integrating with HTTP. In general, they are good thing, and you'll see them outside of Rails, of course. "view" just happens to be a bad one because browsers support GET which is what a view is going to be.
Re:Ruby Can't Scale (Score:3, Informative)
Using memcached to cache, among other things, ActiveRecord objects instead of always hitting the database has been a common practice for people using Rails (and lots of other frameworks, Ruby and otherwise) for years. So, AFAICT, you're just plain wrong here. Now, it may be a valid complaint that database caching isn't integrated into Rails, but its certainly not something foreign to the Rails world as you suggest.
Assuming you write the long-lived jobs in Rails, which is just the wrong way to do it. You are right that everything written in Rails is centered around servicing web requests; if you need to trigger off long-running processes from that that are themselves only indirectly bound to the request-response cycle, you do that outside of Rails entirely. I would guess the easiest way to do that would be to use the database as the communications vehicle between Rails and whatever system you build to handle the long-running processes using ActiveRecord on the Rails side (and, if you are using Ruby "off the Rails" for the other end, possibly on that end as well), though there are other options.
Rails isn't even conceptually aimed at being a general alternative to the kind of technologies you hold it up against (J2EE in particular).
Re:What is Twitter? (Score:3, Informative)
Re:Yes, in fact, RoR DOES suck (WARNING: RANT.) (Score:2, Informative)
1) Yes, it copies things into your Rails directory. Know how to fix that little upgrade problem? rake rails:update. Done. They made a task to do exactly what you describe.
2) There are plugins available that do all the things you describe, but the Rails framework is meant to be a very slim platform to build applications on. If you want all the bells and whistles, look up things like ActiveScaffold, Magic Models, etc. The point of Rails isn't to make an application for you like Joomla or something; it's a framework/platform to build things like Joomla on top of.
3) Again, plugins. It isn't Rails job to generate your HTML designs for you.
4) It's as close to MVC as you're going to get on the web. It IS MVC in a loose design pattern sense, but of course I'm not a purist so who cares.
5) You don't have to use mod_rewrite. Rails has extremely rich routing. You can make any URL point to any controller, action, and even provide custom parameters to that action dependent on the URL. I don't think Rails has used mod_rewrite in something like 3 years. Even further, most heavy duty deploys of Rails these days use nginx, not Apache or Lighty as you describe.
It seems that your opinions are based on an old version of Rails or something. So, I adjure you to go check out the new version. It's matured a lot in the past 1.5-2 years.