Slashdot Log In
Twitter Reportedly May Abandon Ruby On Rails
Posted by
kdawson
on Fri May 02, 2008 10:44 AM
from the call-it-a-derailing dept.
from the call-it-a-derailing dept.
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.
Related Stories
[+]
Rails May Not Suck 160 comments
KDan writes "With astonishing regularity, articles or posts come out claiming that the popular Ruby on Rails framework sucks in some way or another. People complain that Rails isn't as easy to deploy as PHP, that Rails just didn't do it for project XYZ. They range from the articulate and well thought out to the frankly inane and stupid (and wrong). Recently, there's also of course been the spectacular nuclear rant by Zed Shaw, which was more a rant against random elements of the community than against Rails, but was still presented as a rant against Rails.
Here's an article that tries to put some perspective on why these opinions are irrelevant to whether or not Rails sucks."
[+]
Technology: Blogger Incites Outcry Over Twitter Harassment 146 comments
CNet is reporting that one blogger has started an outcry about harassment as it applies to Twitter. While their written stance appears to support the safeguarding of abuse, Twitter appears to be waffling on the issue when it comes to the hard line of enforcement. "The final response to Waldman's complaint from Twitter co-founder Biz Stone asserted that "Twitter is a communication utility, not a mediator of content," and that "Twitter recognizes that it is not skilled at judging content disputes between individuals. Determining the line between update and insult is not something that Twitter, nor a crowd, would do well. Stone added that Twitter's team would continue talking about which situations were appropriate for account banning."
[+]
Technology: Twitter Not Rocket Science, but Still a Work in Progress 111 comments
While it may not be rocket science, the Twitter team has been making a concerted effort to effect better communication with their community at large. Recently they were set-upon by a barrage of technical and related questions and the resulting answers are actually somewhat interesting. "Before we share our answers, it's important to note one very big piece of information: We are currently taking a new approach to the way Twitter functions technically with the help of a recently enhanced staff of amazing systems engineers formerly of Google, IBM, and other high-profile technology companies added to our core team. Our answers below refer to how Twitter has worked historically--we know it is not correct and we're changing that."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
I'm surprised they didn't do it sooner (Score:3, Insightful)
Re:I'm surprised they didn't do it sooner (Score:5, Funny)
Parent
Re:I'm surprised they didn't do it sooner (Score:5, Funny)
On an unrelated note, is anyone here good with hello world programs? Mine keeps crashing.
Parent
Re:I'm surprised they didn't do it sooner (Score:5, Funny)
Parent
Re: (Score:3, Insightful)
Twitter don't use Rails to handle most of that though, do they? I don't think drix is suggesting that they rewrite every piece of code they have, just the Rails portion.
Re: (Score:3, Interesting)
Rails is a Ghetto (Score:2)
http://www.zedshaw.com/rants/rails_is_a_ghetto.html [zedshaw.com]
Does a clean architecture matter? (Score:5, Interesting)
What is more important? Is developer time and productivity over the software lifetime more valuable than CPU cycles? If the price of that productivity imposes a maximum limit on performance, how much optimization should be undertaken?
It's a hard question to answer. On the one hand employees are expensive and hardware is cheap. On the other hand, you can't simply forego developing for performance just because of some religious belief that architecture should be clean.
Re: (Score:3, Insightful)
That said, I don't really think that clean architecture and speed are orthogonal goals. Frameworks like Rails add overhead because they are general - they allow you to do all sorts of things on top of them, and still support all those things even when you're only using
Re:Does a clean architecture matter? (Score:4, Insightful)
On the other hand, if you spend all day pondering the ultimate architecture, you'll never ship and if you do you won't meet requirements. Learning where those tradeoffs are is all about experience and is why the engineers with over a decade of real world experience earn more.
Parent
Re:Does a clean architecture matter? (Score:4, Insightful)
I've never seen anything saying otherwise.
Follow any of these sets of rules:
http://c2.com/cgi/wiki?RulesOfOptimization [c2.com]
http://schwern.org/~schwern/talks/What_Works/What_Works/slide016.html [schwern.org]
http://www.cs.cmu.edu/~jch/java/rules.html [cmu.edu]
Or my version--
1) Don't optimize, no really, don't.
2) If you absolutely have to, write it unoptimized, test it, write it optimized, then:
2a) If the first is anywhere in the ballpark, throw away the second,
2b) If the second has enough of a proven, documented speed gain to get you past some accept/no accept barrier, comment out the slower one, but keep it so the next guy can follow the "Good" code.
If you don't document exactly what you did in the code and why, I'm going to refactor it into something readable the second I see it.
Also--know how to program. Choosing a linked list instead of an array list for an insertion sort is just programming correctly. It's not an optimization.
-1 offtopic... Just wanted to help the parent out with his cow-orker.
Parent
Re:Does a clean architecture matter? (Score:5, Insightful)
That would be the crux of it, as I read it.
The rails framework is aptly named. Its like driving a train. You follow the rails. Its easy, simple, and those are its strengths. But if one day, you decide you want to cut across a field save a few hours of travel, well, you probably shouldn't have chosen 'train' as your mode of transportation.
The simpler and easier a framework is the harder it is to change its behaviour in ways the designers didn't expect. Its like using Microsofts web rendering controls in an application... they are drag and drop simple to use and that's great. But if you want to tweak them so they handle a particular css element in a different way [read standards compliant way], its not going to happen. The -best- you can hope for is to pre-parse the document to rewrite it in a way that the rendering control will get the appearance right, because you are NOT going to change the rendering behaviour itself easily. Better by far to just switch to a different rendering engine.
Conversely the more robust a framework is, and the more hooks they give you to inject/alter behavior, the more complicated and bug-prone it is to develop with.
Rails is a trade off... great when it fits what you need, abysmal when it doesn't. And rails in particular from what I've heard is especially frustrating when its 'oh-so-close-but-not-quite' what you need.
Parent
Re:Examples? (Score:5, Interesting)
The framework operates a multiple levels. At the highest, a complete page can be generated from scaffold that automatically hook model to controller to view. I have found the scaffolds to be lack luster. From a completely database-centric view, there are some neat things that are automatically generated. For instance, verification methods in models are use to display errors on the page and mark input fields in red. My personal experience has found scaffolds to be lackluster.
Most well-designed applications revolve around the application's use, not its internal data representation. Using scaffold strongly ties the interface to data representation which creates the situation that "the user can be wrong." You see this in Microsoft Access databases where you can enter something in or choose options that are mutually exclusive. Because the application lets you see that data, the program generates an error if you are wrong. From what I have seen, the gripe is that the full scaffold is too specific and rigid. Well, duh?! That's the point of each layer of scaffold--to provide a guide for usage.
Personally, I have shunned most of the page scaffolding and tend to rely on creating my own use flow. I use the controllers to present that choices are possible and to manipulate the models as opposed to the common practice of having the controller just load a set of records and pass it to the view (which formats the output). The advantage is that the user is never wrong. Options that are logically inconsistent are never presented. Add to this the ability to monkey-patch (the extension of predefined classes) and lambdas, the code is clean and concise. Both can be used to refactor procedural code into functional code and move it out of the controllers and models. Most importantly, the design allows you to think about what you want to manipulate and then after the fact extend the functionality. A common example of the is the statement:
1.day.from_now
The numeric class is extended in Rails so that you do not have find and use a static date class, but can state simply the desired result.
So, where does it fail miserably? So far, I have not found any great place that it does. It performs as well I need it to serve about a dozen users on a lowly Pentium 4 machine with 256 megs of RAM. So far, the application has been 99% maintenance free. A date verification package I am using had a Feb 29th bug in it. The cool thing is that since I can see the source, I could fixed it. Perhaps there are issues with scaling, but from what I understand, the system was designed around a non-centric design. In theory, a correctly designed application should be able scale horizontally.
Given that there are other high-profile, high-use web sites written in Rails that do not suffer from Twitter's issues, I am left thinking that its failure in general looking for a specific reason. Rails has been very stable and easy to extend, but then I write for maintenance and ignore hype.
Parent
Re: (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,
Ruby Can't Scale (Score:5, Insightful)
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.
Parent
Re: (Score:3, Insightful)
If the language were a problem, then Ruby without Rails wouldn't be an option, now would it? Think about that, genius.
And actually, I'm not a ruby developer. Nice try though.
Re: (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
Hype vs. reality... again. (Score:5, Insightful)
Rails was the cat's pajamas two years ago. The future. The in-thing. Revolutionary. Exciting. Radical. Amazing!
Then like so many similar times before, reality set in. It turned out to be buggy, unstable, less performant, and heavily dependant upon an evangelical base.
Ruby the language is interesting. Not my personal cuppa, but I have nothing against it. Rails, however... After having analyzed it and developed a prototype application for my company, I came to realize that there are other frameworks out there that are more worthwhile, epecially in an enterprise environment. The problems I've seen Twitter experience only solidify this.
If you are doing green-field development Rails should probably not be your first choice. Yes, Rails is interesting. No, it is not the end-all-be-all, and it certainly has some rather major warts.
Re:Hype vs. reality... again. (Score:5, Informative)
Standard prologue: I work at yellowpages.com, a Rails site that gets millions of searches a day. The site went from 125,000 lines of Java to around 14,000 lines of Ruby and shrinking. For more details, see our presentation at RailsConf.
Buggy? I have no idea what you're talking about. Since going 1.0, I've run into one non-critical bug in the framework. I wrote a patch in an hour, which was quickly accepted by Rails Core.
Unstable? The framework is backed by solid test suite. Patches are only accepted if they have tests to back them up. But maybe you just meant to say "buggy" again.
Less performant? Yes, Ruby is slower than Java. If you're folding chromosomes, choose a different language. However, the real bottleneck in most sites is the database.
Evangelical base? I'll gladly tell you the technical issues of Rails. Nobody brings them up. Instead they repeat something from a coworker who read a blog post by a java guy.
The problems you see with twitter have about zero to do with Rails. Rails serves their website, not their service tier. The majority of their traffic goes through their API. They said this at RailsConf last year.
Their problem is twitter is not a web app. It's a network. They're using a database as a router.
While you've done one prototype, I've lost count of the Rails projects I've put into production for myself, for consulting, and now every day in the "enterprise." Most are green-field projects, and they are consistently delivered faster, with fewer developers, and of higher quality than past projects on other platforms.
Parent
Re: (Score:3, Interesting)
When Twitter opened it was handling 11,000 requests per second and doing it well. Twitter has gone from nothing to sensational in a very small amount of time. If you hit the ground running that quickly, your growing pains will be evident regardless of what framework or language choice you're using.
That I'm going to have to disagree with you on. For starters the most recent troubles that have plagued Twitter happened as recently as a few days ago. They have had plenty of time to mature their stack, but th
The problem is ruby (Score:4, Interesting)
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 queri
Re: (Score:3, Insightful)
Yes, in fact, RoR DOES suck (WARNING: RANT.) (Score:4, Interesting)
1) Automated copy-n-paste is still copy-n-paste
Maybe it's changed since the last time I used it, but creating a rails application COPIES a bunch of files from the distribution into the app directory it creates. How do you upgrade? Painfully, that's how. I have numerous small applications that break when I upgrade rails and it's dependencies because the copied files don't work with the newer version. My applications should be 100% code I write directly. Everything else should be kept separate and accessed via includes so emerge/apt/yum/gem dependencies can keep the rails code compatible with itself and I never have to "fix" code I didn't write.
2) RoR gives you the 1% that's used 10% of the time, not the 10% that's used 90% of the time.
So you set up a RAILS app, create your database table, and run 'generate' to get your pseudo-MVC (seen #4 below). You've got everything you need to edit a single table via the web, but that's not even close to an application. It probably saved me about 1/2 of setting things up by hand. That's simply not good enough. It should be able to create an app that supports validation (both JS and server-side for obvious stuff like numeric and lengths), sorting, filtering, searching, relationships, and css skins. It could do this just from the information available in the database metadata, which would get you 90% done. And a huge number of simple apps could be completed simply by writing a custom CSS skin and adding some graphics.
3) No UI components, which are the hardest part of web development.
Most of what rails does buy you is the back-end stuff. It's an easy way to get stared with ActiveRecord, which does the heavy SQL lifting. AR, the one shining gem of RoR, is a great object-relational model and I believe it is responsible for 99% of RoR's popularity. But SQL isn't that complicated in the first place. The real tough part of web development is getting rich, graphical, reusable UI components that work across web browsers. Prototype/Scriptaculous are a wonderful starting place, but I need code that I can feed an AR class (and possibly a list of columns and/or related tables+columns) that will generate cross-browser compatible HTML view of the table complete with searching, sorting, filtering, and paging. There could be functions/objects that render it as a table, a list, a tree, etc. You're probably thinking I should just use
4) It's NOT MVC
The Model-View-Controller design pattern is about limiting the amount of communication necessary by having one instance of some code (the controller) that all access to data (the model) from other code (the views) goes through. Views subscribe to a model, get their data and then do their thing without worrying about other views. If some other view changes the model, the controller notifies all other subscribed views of the change. Rails MVC is something totally different that doesn't solve the same problem. Rails does provide data validation via AR, which is part of true MVC, but it still misses the point of MVC, which is a coherent and always up to date set of views into the model. In fact, an MVC is impossible to implement over the web because communication is one way: the browser must initiate all communication with the web server. (For those that don't "get" this,
Groovy on Grails instead? (Score:3, Interesting)
Grails is very similar to Rails, but is not a straight port -- more "inspired by," as it's described by its proponents. Grails also doesn't have the problem that Rails has in terms of scalability and performance, since it's built on Groovy/Java (which have a real threading model). No screwing around with creating a zillion Mongrel instances to scale your site, etc. And if you don't care to use the built-in web server that comes with Grails, you can have the Grails framework generate a WAR file which you can deploy in any container like Tomcat or Jboss.
At a recent 3-day Grails training session taught by Scott Davis, I was surprised to hear that some major corporations have jumped on the Groovy/Grails bandwagon, including Mutual of Omaha. For a conservative company to make that kind of leap says something. (Furthermore, they used to be a COBOL shop -- the rationale appears to be that it's easier to get COBOL programmers to make the leap to Groovy first, then switch slowly to Java, as opposed to migrating directly to Java.)
After that 3-day training, I was pretty impressed. The biggest win for Grails seems to be rapid development and deployment, but all the other stuff you get for free in the package makes it something you'd like to stick with. I'd say the thing that most impressed me with Grails was GORM, which makes Hibernate even easier to work with. GORM spoils me, since it obviates the need to write SQL most of the time.
Re: (Score:2, Insightful)
Re:What is Twitter? (Score:4, Insightful)
For a medium to large site they should consider using servlets and java and avoid J2EE.
For a very large site I would recommend C/C++ and maybe java if they have the budget for hardware.
The toughest part is getting developers that can code webapps (not just CGIs) in C/C++ (while easy to do C/C++ developers overall are hard to find and are not as cheap as ruby/perl/python ones and even java ones; this is from experience of trying to hire them). So they should check their developer base and see what is the fastest language they feel very comfortable with and go with it. From experience they may have to settle for java since that will provide them a large pool to pick developers from and the learning curve is slightly less steep than C/C++.
I suspect they fell into the trap of building a demo fast using RoR and then just going with it into production, I have seen this way too many times unfortunately.
Parent
Re: (Score:3, Interesting)
A modern C++ library that takes an abstract layout description and creates browser-specific HTML to match that description would be a very cool thing. A C++ library that merely generates "standard HTML, verified by the W
Re: (Score:3, Informative)
Re:Follow the script (Score:4, Insightful)
And indeed, your experience differs a lot from that of thousands of web developers. Perl in particular had been called the Duct Tape of the Internet.
Speaking of Perl, I notice that your complaint it is not that it's slow, but that it's hard to support. That's a legitimate complaint, but it says nothing about the relative efficiency of scripting languages.
Parent
Re: (Score:3, Funny)
Have you tried PHP? I hear it runs several [yahoo.com] high [wikipedia.org] load [facebook.com] websites [digg.com] ;-)
Re:What is Twitter? (Score:5, Informative)
Parent
Re:What is Twitter? (Score:4, Funny)
In my day, we had talk, finger, vi, and elm and we never complained! Green vt100 terminals were all anyone really needed! Get off of my lawn!
Seriously, talk had advantages over IM. You actually could see what the other person typed as they typed it, including backspaces...
And finger worked great. I knew a nerd that had his
The more things change, the more they stay the same.
Parent
Re: (Score:3, Interesting)
ICQ actually offered a "chat session" feature that did that. but it required direct client-client connection which made many people (me included) abandon it. Also it apparently had fairly high network overhead.
I tend to think being able to compose your thoughts before letting the other end see them is probablly a good thing anyway.
Re:What is Twitter? (Score:4, Funny)
Parent
Re: (Score:3, Insightful)
I know it isn't considered trendy,although "Good Old VB6" is still in the top 5 of programming languages(number 3 to be precise) and as long as you aren't trying to build some gigantic multi-us
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.
Parent
Re:What is Twitter? (Score:5, Insightful)
Most popular things are useless.
Parent
Re:What is Twitter? (Score:5, Funny)
Parent
Re:What is Twitter? (Score:5, Funny)
Parent
Re: (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
Re:What is Twitter? (Score:5, Insightful)
Unless you are claiming there are a substantial percentage of folks who use twitter but don't use email. I'll want citations for that though, because I don't believe it for a minute.
Parent
Re:What is Twitter? (Score:5, Insightful)
Actually, all of these free social networking services have figured out how to monetize it.
Twitter is the honeypot to collect a group of users. After a density of users is reached, larger communication companies will start looking at purchasing Twitter so they can "integrate" their service. Nevermind that integrating a free service with an available API doesn't require purchase.
What the larger company is actually doing is buying customers.
From the TOS:
It's the web 2.0 business model, all coated in a lovely veneer of altruistic "doing it for the love of geekiness" bullshit.
Parent
Re: (Score:2)
According to Penny-Arcade: (Score:5, Informative)
Parent
Re: (Score:2)
Re: (Score:2, Informative)
What is Twitter and why is it significant that they are abandoning it as opposed to anyone else?
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:There's a whole monty python sketch for this sh (Score:2)
Isn't that what we do here?
Re:There's a whole monty python sketch for this sh (Score:4, Funny)
Parent