Java enthusiasts today seems to have a love-hate relationship with Ruby and Ruby on Rails. While there are some who feel it’s over hyped, there are others who feel that Rails is the coolest web application development technology of our times. So who better to talk about Ruby on Rails and Java than the creator of ROR, David Heinemeier Hansson.
In this interview with Satish Talim, David talks about the growth of Rails and its features. He also tells us why Rails is relevant to Java developers and something Java developers need to look at right away.
Satish Talim >> Hi David and welcome to IndicThreads. Could you tell us a little more about yourself and your involvement with “Rails?”
David Heinemeier Hansson >> I’m a partner at 37signals. The company behind Basecamp, Backpack, and other successful web applications. With the development of our first application, Basecamp, I chose to use Ruby and began the work on Rails. I basically extracted Rails from Basecamp. So instead of sitting down to think about “what would make a good framework”, I created a real application, saw what worked, and put it into the box called Rails.
Satish Talim >> There’s a big buzz around “Rails”, could you give us your thoughts on “What is Rails and how it’s “different”?
David Heinemeier Hansson >> Rails is a framework for creating Model-View-Control-based applications along the traditional request/response paradigm. So that makes it very similar to what especially Java people have been doing for a long time. Many of the basic patterns are the same, at least the theory is the same. The implementation and the feel is very different.
“The theory is the same. The implementation and the feel is very different…”
It’s difference comes from its embrace of Ruby and its thinking. We’re optimizing for happiness by enabling the creation of beautiful code. This optimization manifests itself in principles such as Convention over Configuration where we liberate people from repeating the same mundane decisions over and over again. The stuff that doesn’t matter, that you don’t care about, and that you’ll gladly trade for higher productivity.
Flexibility is often sub-optimization that merely succeeds at making everything equally hard.
“Difference comes from Ruby On Rails’ embrace of Ruby and its thinking…”
Satish Talim >> In a very short time, “Rails” has perhaps become the most talked about ‘framework’ around. What do you think are the reasons? Did you see this coming?
David Heinemeier Hansson >> Rails is optimized for programmer happiness. That’s a very disruptive notion. The fact that we care about what makes programmers happy allows us to unleash a world of passion. That passion in turn leads to motivation. And motivation is the most powerful productivity booster we have available.
“Rails is optimized for programmer happiness…”
I’m certainly surprised that we’ve been able to grow this quickly, this fast. But I was fully aware that Rails would be rocking the boat. We’ve slaughtered a whole farm of holy cows. You can’t do that without causing a stir.
Satish Talim >> David Crane the author of “Ajax in Action”, in a recent interview with IndicThreads mentioned that “Ruby on Rails is clearly enjoying much synergy with Ajax.” What’s your take on this?
“Rails has embraced Ajax in its core, deeper and faster than any other integrated framework…”
This has granted Rails a huge lead on integrated Ajax development. By chasing the notion that Ajax in Rails should be “as easy as not to”, we’re stripping the rocket surgeons of their monopoly on this technology and making every developer capable of creating modern applications with Ajax.
We’re approach the 1-year anniversary of Ajax in Rails while most everyone else are still considering this early-adopter technology.
Satish Talim >> Are there any plans to integrate (a) multilingual support into “Rails” (b) a Reporting tool into “Rails”?
David Heinemeier Hansson >> There is already plenty and strong multilingual support in Rails through plugins such as Localize and Globalize. Internationalization is one of those features where different people wants different things, which makes it a questionable candidate for framework extraction. Good frameworks do their best when they’re abstracting the ways most people do most of their things.
So no, we’re not looking to get the kitchen sink into Rails. But we’re very enthusiastically encouraging people to develop plugins. Once something is a plugin, it integrates with Rails so cleanly that you can’t tell the difference between “native” Rails and “plugin” Rails code.
Internationalization and reporting are both obvious candidates for plugins.
Satish Talim >> One of the wonderful features of Rails is the differentiation between production and development environment, which normally doesn’t come with web tools. Was it a conscious decision to add a flavor of “Enterprise” feature in Rails?
David Heinemeier Hansson >> Actually, we have a conscious mission to avoid things with enterprise labels. To me, enterprise is not about technology or best practices. But all about legacy, complexity, and doubtful value.
“We have a conscious mission to avoid things with enterprise labels…”
So the fact that Rails supports three environments out the box (test, development, and production) is not about enterprise, but about pragmatism and need. To do sane development, you need this division. Every thing from the smallest 4-hour application to the biggest projects benefits from it.
Satish Talim >> Is “Rails” well-suited for Enterprise level applications?
David Heinemeier Hansson >> Again, I think of the “Enterprise” label as an excuse to deliver expensive and painful software over budget and late. So I’m hesitant to say that Rails is well suited for that. But if you take the more generally used definition, such as “important software for the Fortune 1000”, then yes, I most certainly think Rails is well suited to serve them. Who are not interested in getting valuable software faster and cheaper?
I think of the “Enterprise” label as an excuse to deliver expensive and painful software over budget and late.
The caveat to that is of course that a lot of enterprises are culturally and mentally unable to embrace the philosophies that Rails are built upon. So if you’re not having any luck getting agile methodologies adopted by your organization, there’s a good chance that Rails will be a poor fit. Not for technical reasons, but for political ones.
And the final caveat is of course that Rails is about a vertical, but huge, scope: The service/database-backed application. So it won’t help you launch rockets into space or power the pacemaker. It’s just about delivering applications for the web.
Satish Talim >> How do you compare “Rails” with continuation-driven frameworks like “Seaside”?
David Heinemeier Hansson >> Rails is much more traditional and familiar to most programmers. Java programmers with years of experience in J2EE can switch to Rails quickly and all they have to learn is what drudgery not to do any more.
“J2EE programmers can switch to Rails quickly…”
Seaside, on the other hand, is an entirely different paradigm. It’s new, fresh thinking. And for certain narrow domains it can definitely offer significant improvements over the traditional request/response model.
But I don’t see it as something that’s going to catch a ton of mainstream traction the way Rails has. It’s simply too different for too many people. And for the “most applications most of the time” sphere, it doesn’t offer enough benefits over something like Rails to be worth the mental rewrite for most people.
I certainly encourage you to take a look regardless. It’ll broaden your mind.
Satish Talim >> Bruce Tate’s book “Beyond Java” and his articles that talk about how Java developers are adopting Ruby, have sparked off a keen interest in Ruby and “Rails” . Do you see Ruby and “Rails” as the language / framework replacing Java in the long run?
David Heinemeier Hansson >> Languages are never fully replaced. There are still Cobol and Fortan systems out there. And 10 years from now, there will still be Java systems out there. So its not an either/or thing.
“Majority of new web-application development will leave Java in the coming years…”
But yes, I definitely believe that the majority of new web-application development will leave Java in the coming years. Such is evolution. Java served as a very valuable link in that evolution taking business programming out of C++. Now its time to accept that there are more productive ways out there to achieve the same. Just as Java convinced people of that in the mid 90’es. I think 10 years is a great run. Just as Fox should have let The X-Files end with dignity around season 7, so should programmers let Java retire from the spotlight of web applications in dignity.
“Let Java retire from the spotlight of web applications in dignity…”
Satish Talim >> Where do you see “Rails” going from here?
David Heinemeier Hansson >> It’s all up from here. The current level of enthusiasm is mainly being generated by early adopters and thought leaders coming over. The tipping point is still in its infancy.
Satish Talim >> How does your company 37signals make use of “Rails”?
David Heinemeier Hansson >> 37signals uses Rails for all application development. These applications serve as great poster children for what Rails can do. I invite everyone to have a look at http://www.basecamphq.com, http://www.backpackit.com, http://www.tadalist.com, and http://www.writeboard.com. And we’re currently working on two new applications also powered by Rails: Sunrise and Campfire.
Satish Talim >> Thanks David for sharing your views on “Rails.”. On behalf of the many Ruby User Groups and companies interested in Ruby and “Rails” development in India, I am inviting you to India to talk to us about “Rails”. Anything else you would like to share with the IndicThreads readers?
David Heinemeier Hansson >> Have more fun programming. Are those XML configuration files making you happy? If not, maybe you should play around with Ruby on Rails for a while. It’s really easy to get started (and even easier to get hooked).
Satish Talim >> Readers can keep up with David through his blog http://www.loudthinking.com
Satish Talim has been in the software development field since 1978 and has been working with Java since the first Beta.Ã‚ Satish has helped many US software companies like Infonox and others, to set-up their subsidiaries in Pune, India . Nowadays, he does consulting, training and other odds and ends with Java and other languages, including Ruby. He loves to blog on Java, Ruby and Chess.