Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

Why Rails will Reign Supreme, revisited

Christian Sepulveda
Tuesday, March 18, 2008

Following up from my previous post on the same topic, I’d like to clarify a few points that hopefully address several of the comments on the post.

While the title of the post may be provocative, I am not asserting that Ruby/Rails will be the only framework; I generally don’t believe there needs to be a single framework or in similar absolutes. (For more on this, see my post “Framework Wars: Now all Restaurants are Taco Bell”) The following sentence in the post captures the scope of my position:

I think Ruby/Rails can and will replace Java as the language and platform of choice for software development in the enterprise and will similarly establish itself as the premier option for Web 2.0, cementing the bridge between both markets.

Java has the largest market share, estimated between 20% and 30%, depending on your source. (One example, though there are others, can be found in the following article “Programming Language Trends.” ) Basically, I think Rails will have the largest market share; as Java is currently the default option for software projects (especially in enterprise), I think Ruby/Rails will be the new default. But as with Java, other frameworks will still thrive and will be more appropriate in various cases. I think this shift will take place over the next two to five years.

There are three critical questions that need to be addressed:

  • Is Java’s position vulnerable?
  • Is Rails technically viable?
  • Why Rails, as opposed to another framework?

Java Vulnerability

The majority of my previous post on this subject addressed Java vulnerability; I think PHP was a disruptive innovation that changed the economics of software development. It is hard to justify a software project as requiring $10 million, more than 20 developers and a few years when a similar application was just created by two developers in six months.

PHP delivered the first blow that has made Java vulnerable, as stakeholders are increasing pressure and questioning of the costs of development. However, Java is general purpose langauge and there is a considerable investment in existing applications and infrastructure. While vulnerable, a successor needs to have similar flexibility.

Rails Viability

Rails is not without its problems, as I noted in the previous post:

There is much work to be done on Rails though. There are scalability issues and integration patterns are immature (on average, at least).

Scalability is the most frequently cited criticism of Rails. (I will reference the two related topics of scalability and performance simply as scalability.) It should be noted that for enterprise, which is the primary target audience regarding the claims in this post, most applications do not have more than a few thousand users and scalability is not much of an issue. However, scalability for a popular consumer web application and an internal IT application is very different. I am not trying to simply dismiss the scalability questions, but I think it is only one factor and a broad set of issues affects technology selections.

Twitter is probably the largest Rails application and there has been much discussion of Twitter’s scaling challenges, though the Twitter team continues to improve the situation. Similarly, Facebook is hailed as an example of PHP scaling. While there is no Rails app (to my knowledge), which has scaled to Facebook traffic, Facebook and Twitter are not common scenarios. In these cases, the elected platform will only help or hinder to a degree; the decisions of its developers and how they use their technology options will have the overwhelming impact.

Rails scales horizontally, similarly to PHP, though perhaps not as efficiently in its use of hardware. That said, I think Rails is commonly criticized for scalability problems because it is unfortunately easy to make naive decisions, which still follow Rails conventions, but cause scale problems at low user or page volume. Is this a fundamental failing of Rails? Yes and no. On one hand, you can make decisions with any framework that will cause scalability problems early. However, part of the promise of Rails is that if you follow the conventions, you will be okay.

Scalability is not quite the black, unknown art that it used to be. Most of the patterns and approaches to achieve high scalability are well understood. Java had significant scalability and performance problems in its youth that were addressed. Today, some massively scaled applications are written with Java. Currently, there are Ruby and Rails initiatives that are working on improving performance and scalability, from Rubinius to various ActiveRecord improvements. I expect to see major Rails scalability improvements in the coming year. As an example, the Facebook application Friends for Sale is a Rails app with 300 million views a month.

Why Rails?

Assuming Java is vulnerable and technical viability isn’t an obstacle, why Rails and not another framework? I think there are two other commonly cited alternatives: PHP and Pyhon/Django.

As I noted earlier, PHP is responsible, in my opinion, for first exposing Java’s vulnerability to be replaced at the market share leader. However, I think it is hard to use PHP for general purposes beyond web applications and this inhibits its adoption in enterprise. For example, I can’t imagine a socket-based message queue in PHP.

Another challenge for PHP, in my opinion, is that sustainable development is not as easily achieved as it is with Ruby. Automated testing is more flexible in Ruby/Rails and I think the abstraction/plugin architecture of Rails leads to more maintainable applications. (I know of a PHP application, whose developer is quite talented and decided to port from PHP to Rails. The Rails version had only 9% lines of code of the PHP version. While it can be dangerous to draw conclusions based solely on LOC, an application that is 9% the size of the original is easier to maintain and is more flexible.) While such design patterns are possible in PHP, I don’t think they are employed in the average case and I think the average case influences market adoption.

Python and Django are commonly compared to Ruby and Rails. A simple google search of “rails vs. django” yields numerous articles. Ignoring zealot rants on both sides, I think most balanced discussions conclude both platforms can enable productive development teams and the creation of compelling applications. I don’t think technical comparisons inform why Rails has the edge in gaining market share, but market trends themselves.

Consider the following data that I collected by searching on two popular job sites:

From Monster: Rails – 267 jobs, Django – 143 jobs
From Hot Jobs: Rails – 25 jobs, Django – 8 jobs

I offer these data examples only to convey that I think more developers/stakeholders are taking the Rails plunge than Django. As Pivotal and others have experienced, there are multiples to be gained in productivity gains. I am not claiming Django can’t offer similar productivity gains, but I think it would have to offer even multiples over Rails to get significant numbers of stakeholders or developers to shift from Java to Ruby and then to Django. I haven’t heard anyone claim Django offers productivity multiples over Rails.

Whether you believe the current Rails attention is based on merit or hype, as more and more organizations adopt Ruby/Rails, a synergistic, self-sustaining cycle takes hold and this is the primary consideration in my opinion. As referenced in my last post, Geoffrey Moore, in “Crossing the Chasm”, discusses the adoption curve of technology. He notes that there is a gap in the adoption curve between a relatively small market of early adopters and the huge mass market. Crossing this “chasm” depends on keeping up with market demand and addressing any issues that hinder adoption. This is can be daunting for any organization, but Rails can leverage a strong and motivated community. Rather than a single organization with a few developers trying to bridge any gaps, there are many developers in multiple organizations (and independents) actively working to improve Rails. A few examples (that are also already achieving good results) include Engine Yard, Rubinius, jRuby, and Glassfish.

I close with the short version of my argument:

Ruby on Rails will replace Java as the programming language and platform with dominant market share. Java is vulnerable because alternatives such as PHP have proven viable for application development with dramatically lower costs. While Rails has its shortcomings, concerns such as scalability continue to improve; Rails is not unlike other early-technologies in this regard (consider Java in 1996-98). While other platforms may offer similar productivity benefits to Rails, such as Django, Ruby/Rails is growing in popularity and adoption. This growth can lead to positive, self-sustaining feedback cycle as each phase of Rails adoption improves Rails and encourages more Rails adoption.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

17 Comments

  1. Ex-RoR Fan Boy says:

    “Ruby on Rails will replace Java as the programming language and platform with dominant market share”

    I think you are wrong.

    By the way I recommend you this read: http://antoniocangiano.com/2008/03/20/djangos-tipping-point/

    March 20, 2008 at 6:32 pm

  2. Christian Sepulveda says:

    To Ex-RoR Fan Boy:
    Do you think I am wrong because you don’t think Java is vulnerable or because Rails won’t be its successor?

    Given the link you provided, I assume it is the latter. I think the comment thread on the post you noted actually has many examples the establish the market momentum of Rails — both in its own right and over Django.

    Claiming market momentum, obviously depends on what metrics you use, but I think most of those available give Rails a significant edge.

    Now if you don’t think market adoption is a primary issue, then that would be a different argument.

    March 21, 2008 at 5:57 pm

  3. Ted says:

    “I haven’t heard anyone claim Django offers productivity multiples over Rails.”

    That’s because most of us, Python programmers, are busy coding. We don’t blog as much as Rails weenie. We solve problems. We don’t do marketing.

    I’ve used both Ruby and Python for professional work. I can tell you right now up-front no bullshit that Python has more mature frameworks in any fields. Pick a field: web-development, science, statistics, math, GUI, graphics, binding, network programming.

    Both languages are similar, I don’t see why I can’t work faster than Rails developers. I definitely can see myself working faster than Rails developers because I don’t have to struggle with very-buggy-Rails-plugin.

    I remember using Streamlined, you know, the one that was being touted the Rails “admin” interface answer to Django’s. I used that framework (or plugin, whatever) exactly this time around last year. Boy, it sucked so bad. The documentation was basically one wiki page. It didn’t handle upgrade properly. It was badly designed.

    Oh, did I mentioned the people behind StreamlinedFramework are not some average Joes? You know them names? Justin Gehland? Stuart Halloway? famous book authors….

    I’m not the only one who echoed the same problem shows up repeatedly in Rails community. The attitude of Cowboy Coder will sink Rails. Oh, did I forgot to mention Zed also said the same thing?

    Let’s digest a little bit on Python vs Ruby community.

    FriendFeed, Paul Bucheit (Gmail fame), is written in Python. Lots of smart people here.

    YouTube, scale like mad, is written in Python (95%), the company is filled with super smart people.

    Google, anyone knows Google, filled with super smart people.

    Industrial Light & Magic, animation and visual effect company that does cool movies like Pirates, War of Worlds, etc, filled with strong engineers/math, is using Python.

    The old Yahoo! Mail was written in Python

    Facebook uses Python (sure, PHP for main page, whatever, I asked their engineers, it’s Python).

    Let’s see Ruby community. Ok?

    Twitter: send message
    37Signals: another project management (with no Gantt Chart, too hard)
    43things: put 43 things, uh-huh… nothing else
    BlinkSale: send invoice online, uh-huh, again, nothing else

    So I’m seeing trends here: smart and strong Engineers and Computer Scientists are using Python. Yet another Me-Too “Simple Product” is using Ruby on Rails.

    I suggest you to sit down and think hard before you downplay Python in one way or the other.

    March 22, 2008 at 6:43 am

  4. AW says:

    You heard the man — if your web application is based on RoR you’re doomed.

    Doomed, I tell you! Doomed!

    captcha: garage.

    How fitting, given the post. =D

    March 23, 2008 at 1:22 am

  5. Brian Takita says:

    “First they ignore you, then they laugh at you, then they fight you, then you win.”
    – Mahatma Gandhi

    March 23, 2008 at 6:48 am

  6. Christian Sepulveda says:

    Regarding Ted’s comment, I don’t think anyone is claiming there aren’t smart people using Python.

    And as far as the successful sites you mentioned, I don’t think their success was due to using Python, but their ability to build a compelling product.

    There have been many sites that have failed using Python as well, not because of any technical shortcoming of the language, but the site failed to gain enough interest to sustain it.

    Similarly, Twitter isn’t successful or popular because it uses Rails nor did Facebook garner a $15 billion valuation because it uses PHP.

    I’ve tried not make this a religious debate of Python vs. Ruby/Rails or a similar face-off. I am sorry if that hasn’t been clear.

    If you are interested in a challenge to my position that isn’t asserting technical superiority either way, then I encourage you to look at:
    http://blog.citrusbyte.com/2008/3/22/why-rails-will-not-reign-supreme-and-why-you-shouldn-t-want-it-to/

    or the link referenced in the first comment or this post.

    March 23, 2008 at 9:53 pm

  7. Evan David Light says:

    Insightful post. I started writing a response but it grew a little unwieldy. Ultimately, I’m unsure of the Ruby/Java-in-’98 analogy that you used (even though I use it too). Read more here: http://evan.tiggerpalace.com/?p=41

    March 24, 2008 at 6:41 am

  8. Giles Bowkett says:

    Reigning supreme is for TechCrunch to worry about. We’re programmers; we need to make our decisons based on rational reasons, not social proof. Whether Rails reigns supreme or not is a different question from whether or not Rails continues to be useful and valuable and fun to program in. I strongly believe the latter question is the only question worth asking.

    It bothers me that people are having these debates about the popularity or non-popularity of Rails. It’s entirely possible that we’re entering an era of polyglot programming, where no one language clearly dominates; in fact it’s possible that past situations where one language clearly dominated only existed in the first place because we didn’t have the Internet and couldn’t accomodate a more varied and interesting programmer culture. I think it’s absolutely DISGUSTING that programmers are so fixated on which programming language “dominates” the other languages. It’s inappropriate to a multicultural, multilingual society to be seeking a monocultural and monolingual approach to programming. This whole question is so fucking WRONG I just want to slap people.

    Fortunately I think history is going to slap you for me. I’m going on record with my prediction: the age of dominant languages is OVER. Internet killed the programming language star. There is way too much going on in way too many different languages for the idea of a dominant language to be accurate; and there is way too much power and momentum at work in *every* language’s culture for a dominant language to EVER emerge again; and this polyglot situation is so logically INHERENT to open source and the Internet that even if the momentum, the power, the communities, even if all those things were not there, they would spontaneously emerge, because they are ALL inherent emergent byproducts of the Internet itself. There is NO WAY IN HELL another dominant language will EVER EMERGE AGAIN, and I am SO FUCKING TIRED OF PROGRAMMERS WHO CANNOT FIGURE THIS OUT WHEN IT’S SO FUCKING OBVIOUS FROM THE NATURE OF THE INTERNET ITSELF!!!!!!!!!!!!!

    ONE
    !1
    1

    Read Clay Shirky, god damn it.

    March 24, 2008 at 4:35 pm

  9. Mike McLean says:

    I lost interest right about here:

    >>It is hard to justify a software project as requiring $10 >>million, more than 20 developers and a few years when a >>similar application was just created by two developers in >>six months.

    You must have worked with inordinately dumb java programmers.

    Real world, having worked with both and on teams using both, the productivity is the same given the same process and talent.

    March 24, 2008 at 7:13 pm

  10. Christian Sepulveda says:

    Hello Mike.

    I’ve actually had the good fortune of working with some very good Java programmers, in a variety of different companies (some of which are the largest Internet companies acclaimed for their technical talent).

    In all cases where I knew they had working experience with Rails and Java, they all experienced much higher productivity in Rails.

    I don’t doubt your experience, but mine is certainly not based on bad Java developers.

    March 25, 2008 at 8:14 pm

  11. R Cober says:

    I agree with Giles

    “..the age of dominant languages is OVER..”

    I do prefer to do my web application development in Rails. I find it more fun and more productive than J2EE.

    March 26, 2008 at 8:25 pm

  12. Jose Ignacio Santa Cruz G. says:

    Marrying with a programming language is denying the opportunities around us.

    My experience says that Java is ruling the market, at least in Chile there are not so many Ruby development projects. Perhaps in the future I’ll have to change my Java t-shirt to a Ruby t-shirt, but not today.

    By the way, there are big companies that still use and mantain systems written in COBOL…

    March 27, 2008 at 2:19 pm

  13. Ruby’s not ready says:

    A few really good observation about the big issues with Ruby:

    http://glyphobet.net/blog/essay/228

    April 8, 2008 at 6:03 am

  14. Federico says:

    Ruby is not specialized enough and it’s struggling to find a reason to exist. If it’s not comparing itself with Python, it’s doing it with Java or PHP, and that’s where it’s failing. A language now a days needs to be more specialized, like PHP for example.

    Now, when it comes to frameworks, Ruby/Rails doesn’t offer anything different from Python/Django, and we are talking about Django, a very unpopular framework. Even Guido, the creator of Python, said he wasn’t going to use it. He practically killed Django with that statement. Also, nothing better than mod_php has been created yet, and that’s where the power of PHP is, in LAMP itself.

    When it comes to dynamic languages, Ruby, Python, Perl and PHP are great scripting languages, and what’s great about them is that they all fight for the same cause: Making static languages dynamic.

    April 16, 2008 at 9:06 am

  15. iqewurht says:

    “We don’t blog as much as Rails weenie.” Exactly. That’s one reason why Ruby and Rails are so popular: they’re social. When I learned Rails, there were no good books around, and the docs weren’t great either (still aren’t). I learned it from blogs. Most Rubyists are so excited about their language that they will answer to the dumbest “show me so I don’t have to RTFM” noob question.

    June 3, 2008 at 3:07 am

  16. Go with Google? says:

    I was going to download Ruby and Rails and start tinkering, but Google’s choice of Python as the first language supported by their App Engine (and their inclusion of Django), has persuaded me to spend what little spare time I have tinkering with Python and Django instead. I don’t have the time to invest in learning both Ruby/Rails and Python/Django so I’m just going to have to go with Google on this one.

    Perhaps more developers will find their way to Django, and contribute to its development, because of Google.

    June 3, 2008 at 2:43 pm

  17. Ryan Rickerts says:

    @iqewurht

    Have another look at the docs now – http://guides.rubyonrails.org/. DHH and the Rails crew made a big push this summer to get good documentation out, running a contest to get contributions, because they recognize the importance of being accessible and well documented.

    I agree with the social edge of Ruby and Rails. Programmers may use these languages to talk to machines, but we’re still humans with all our failings, and most often our code is shared amongst other humans with different failings. Learning a language is hard. Reading someone else’s obscure code is even harder. Ruby is nice to read. Ruby people are nice to know. It’s nice to have nice people to work with and learn from.

    Try a Ruby and/or Rails conference some time and you will be so excited you can bust out that project you’ve been considering for years in a few weeks. The positive energy is palpable, and that drives adoption. Not some laundry list of specialized features like a T.V. set.

    RyanR>

    December 1, 2008 at 6:40 pm

Add New Comment Cancel reply

Your email address will not be published.

Christian Sepulveda

Christian Sepulveda

Christian Sepulveda is Vice President of Corporate Development at Pivotal Labs, a role that includes strategic planning, modeling and execution of the company’s vision. He is responsible for negotiating and finalizing all contracts within Pivotal, and has played a key role in M&A deals such as EMC’s acquisition of Pivotal in March 2012. In this position he is involved in establishing new regional offices, new service offerings and new corporate partnerships, among other corporate endeavors.

Prior to joining Pivotal in 2006, Christian was Vice President of Engineering of Nominum, a provider of industry-leading network naming and addressing solutions, from 2003-2005. Previously, Christian was co-founder of a small consulting and software development firm in New York. He has worked in diverse industries, from finance to fashion, on both commercial software and internal IT applications.

Christian holds a BA degree in Computer Science from Harvard University.

Christian's Blog

Recent Posts

  • Join us for RockHealth's Meetup of the Minds
  • Free Version of Tweed no longer compatible with Twitter Authentication
  • Version 1.20: Photo tweets and other bug fixes
Subscribe to Christian's Feed

Author Topics

mojo (10)
palm (10)
webos (12)
software (3)
startup (3)
entrepreneur (2)
vc (2)
venturearchetypes (2)
event (1)
panel (1)
launch (1)
entrepeneur (1)
incremental (1)
innovation (1)
iterative (1)
process (1)
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >