Ruby On Rails is obsolete

(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at:, or follow me on Twitter.

This is a strange conversation to be having in the year 2016. Ruby On Rails changed the technology industry in 2004, but it can not claim to be winning in 2016. It still lacks a story for concurrency. It is being undermined by 2 forces:

1.) the need for concurrency, which is offered by other eco-systems, such as those that run the JVM. A language like Clojure offers the high level of meta-programming that Rubyists love, but with the vast arsenal of the JVM behind it, and with easy concurrency.

2.) single page apps — MVC seems less important once all the action moves to the frontend. And this issue becomes 100 times more true if people give up on REST and switch to GraphQL.

From the article:

The reality is this: Rails is tailor made for Basecamp.

We all know that, or we should. Basecamp-like apps are not too difficult to make, at least in terms of architecture. You don’t need fancy super performant languages with super duper highly concurrent and parallel primitives. Also a reality is that 80% of the web applications are Basecamp-like (disclosure: my feelings for years of experience in consulting). Which is why Rails has endured so far.

It’s like content management systems, or CMS. Most of them are blog-like systems. And for that you should go ahead and install WordPress. The very same arguments made against Rails can be done against WordPress. And you should never, ever, tweak WordPress to be anything but a blog-system. Try to make it into an e-commerce for high traffic, and you will suffer.

To make it clear: WordPress has one of the most offensive source codes I’ve ever seen. I would hate having to maintain that codebase. I’m sorry if anyone from the WordPress base of contributors is reading this, I say this without malevolence. And you know what? Possibly half of all CMSs in the world are WordPress. Over a million websites.

Then you have the case for Magento2. Big rewrite over the original Magento, written using all the dreaded Zend stuff that everybody else dislikes. But it’s huge. If you need a fast turn-key solution for e-commerce, look no further.

Do WordPress plugins work with Magento? Nope. They are 2 fragmented, independent and isolated communities. But they both generate a lot of revenue, which is what covers the cost of redundancy between them. And this is not even counting Drupal, Joomla. PHP is one big ocean of disconnected islands. Countries with severe immigration laws.

Fragmentation is no stranger to the Javascript world. But it’s a different kind of value generation. Facebook, Google, Microsoft, they all want to be the thought-leaders in the fast evolving Millenials generation. It’s a long term strategy. And one of the elements of this game is the Browser. But not only in terms of Chrome vs Firefox vs IE, but also on how applications are implemented.

Facebook came up with React. Google came up with Polymer and Angular. The Node guys went through a power struggle with Joyent which almost resulted in further fragmentation but they settled for the Node Foundation.

Apple went all on war against Adobe’s Flash and then only now Google is turning them off in Chrome, but they are all looting on the consequences for all the attention it brings in the Web Development communities.

Apple wants native to succeed and Swift to be the one language to lead it all. Google has conflicting strategies because they want native Instant Apps to succeed but if it fails, plan B continues to be for them to dominate HTML5/CSS3 based web apps with Angular. Facebook don’t want to have their fate being decided by the power struggle between Apple and Google.

It’s a complex power struggle unfolding, and you can see that it’s not about technical prowess, it’s not about value generation. It’s about ego, influence and power. Very fitting for the YouTuber generation. And the web technologies are being held hostage in this siege, if you havent’s noticed.

Post external references

  1. 1