I'm on an Amtrak train as I write this heading to New York City where I'll get a chance to see Harvard's Andrew McAfee of Enterprise 2.0 fame speak at Interop, a chance I'll actually get twice in the next two days, so expect some coverage here shortly. On my ride, I thought I'd address some of the good points fellow ZDNetter Ryan Stewart made last week about the rise of new Rich Internet Applications (RIA) technologies such as Flex and OpenLaszlo. Specifically, Ryan wrote about the significant advantage of having a robust, modern Web stack supporting a RIA aplication. And by robust, I mean a stack that provides a complete, low-barrier solution across the browser all the way back to the databases that power Web applications.
These days, the pace of Web development both inside and outside of organizations is more rapid than ever and is directly enabled by a host of new frameworks that allow a level of productivity, agility, and speed that was almost unthinkable just a few years ago. Along the way, RIAs have thrown a curve-ball at the traditional Web development community and creating good software with RIA tools using some of the aging back-end platforms such as J2EE can be time-consuming and painful.
Specifically however, it's the rise of Ruby on Rails and Rails clones that are helping change the perception -- often dramatically -- of what is possible in Web development in the Web 2.0 era. Much has been made about the 10-to-1 productivity gains that Rails users usually see and it this, and stories like it, that are sustaining the rapidly growing interest in rails (see the Google Trends graph to the left to see an admittedly unscientific chart of Rails popularity.)
I've written in the past that the great strength of Rails is the dramatic collapse of something called abstraction impedance; developers spend less time with software plumbing and converting data formats from one format to another and more time solving important problems. Also automated is the tedious CRUD (create, read, update, delete) work that most applications are made of and is made ridiculously easy in the Rails model. There is a well-known demo of Rails that shows the development of a complete database-driven blog application complete with user comments, administration interface, and unit tests in 15 short minutes.
Ruby on Rails and frameworks like it enable many of the latest concepts we see in newer Web development techniques these days including turning applications into platforms (Rails makes exposing public APIs nearly automatic), Rich Internet Applications (support for popular Ajax frameworks Prototype and script.aculo.us), highly iterative, rapid releases to production, often many times a day, and more.
Back to Ryan's point however, is the desirability for RIA solutions to be well-integrated with the most popular Web application frameworks, and that we are indeed starting to see. For example, Adobe recently announced a Ruby on Rails SDK for Flex that allows it's up-and-coming RIA platform to play well with the biggest up-and-coming Web application stack.
Another significant and related trend is the movement of Rails concepts back into the older application stacks. For PHP, there is now CakePHP, which is "a well-documented framework inspired by the concepts introduced in Ruby On Rails as they can be applied in PHP 4 and 5." For Java, there is now the quite popular Roma Framework, which is #32 on Sourceforge's popular database of tens of thousands of open source software projects and is a "Java framework that is totally POJO based and designed with the concepts taken from Ruby On Rails. The current release is full working and allows to build Ajax Web Apps with database and CRUD in minutes."
I myself have been working with some projects with Ruby on Rails as the infrastructure and it's clear that in resource constrained environments -- and aren't most software projects resource constrained -- the results seem to be clear; there's a new, better way of build Web apps in town.
The "ilities" challenge of the new Web application frameworks
One key aspect of the latest genereation of Web application frameworks is the fact that they are based on dynamic languages like Ruby, Python, and PHP. This means they aren't as fast as older compiled languages, are potentially more suspectible to bottlenecks and poor optimized code, and might not stack up to existing platforms in terms of raw performance. Scalability, reliability, and the other well-known "ilities" of the enterprise and Web-scale spaces are still fairly unknown with Rails. However, Moore Law tends to amortize these issues away over time and certainly many folks have argued about the enterprise suitability of Ruby on Rails and related approaches, but it seems clear that as Rails matures, it will increasingly find its way into IT departments and even mission critical uses.
The bottom line: RIAs and the new applications frameworks that support them are a major part of our software development future and we're watching a generational change as we find out the patterns and practices that have worked best in Web development in the last 10 years and bake them into the core of our newer frameworks.
Are you considering moving to Ruby on Rails? Why or why not?