How viable is it long term?
Working in Java you know that there is a good chance that you could work in Java up to retirement. But, the nature of that job could change drastically. There is also a good chance the next ten to twenty years of that job could be spent maintaining banking software created in the last decade.
I have a rule: "Never fall in love with technology"
The reason you should never fall in love with technology is that it changes. The rules for what technology triumphs are not wholly rooted in market share, technical sophistication, or beauty either. So it is very hard to evaluate where a technology will land in the landscape of all things digital.
The one insurance policy for a developer is to "keep moving" so that they are always on to the greener fresher pastures. But this means never developing a depth of technical knowledge in any one technology stack.
Ruby on Rails is old hat by now. It has been around for several years now and has helped legitimise the LAMP stack in the minds of many traditional developers. Because Rails enforces good design standards such as MVC and Unit testing it sits well with Software Engineering types who like to see discipline in development projects. But, how is it long term? How does it look for someone deciding to build a career on it?
Let's look at why something like Java was able to enter the "Enterprise" business space.
Java was backed by Sun and Sun was big iron. The weight of Sun lent legitimacy to the Java development stack. The marketing of Java focused on "enterprise" quality solutions that conjured images of serious engineers building serious programs to with stand serious load under serious conditions. Java was serious. Seriously.
For just how serious Java was take a look at any fine book store selling computer programming books. If there is more than one shelf of "computer programming books" then you are probably going to be staring at mostly Java or Java related books. Java is everywhere. Java is in your cell phone... and that is a potentially powerful idea.
What gives Ruby any kind of weightiness in light of all that "enterprise" goodness behind Java?
Well, for one thing, look how serious Patrick Lenz is in the photo on this page for "Build Your Own Ruby on Rails Web Applications". And, then there's Amazon who uses it and they are no slouches. The other thing to keep in mind is that when we're talking Ruby we're talking open source and that changes the rules a little. After all, what is Linux? Did it have any big iron support?
So what I might actually ask when determining the long term viability of something like Ruby on Rails is not is "Ruby on Rails" viable but: is the "Ruby on Rails Community" viable? And that is a slightly different question and much more valid today.
Java has about 1.2 billion web frameworks to choose from. (A small exaggeration) The proliferation of choice means that there is enough community behind Java to create all those frameworks. Certainly enough wasted resource and talent in the community to convince someone that they were all needed whether they were wanted or not. And there is a depth of knowledge and wisdom in those development efforts that can be leveraged.
I think this is why Java is being "Open Sourced" today. It is probably an concession by Sun that it can't win the closed source battle against open source and that if the product is to survive it is on community. A vibrant open source community. A community that is leveraged by Ruby on Rails.
Every Java talk I've been to in the last year has had some mention of Ruby on Rails. It has captured the minds of many Java devotees based on its technical beauty. I think RoR actually benefits from its _lack_ of choice. Because there are fewer ways to get things done and fewer options the RoR community is more tightly focused even if they are smaller.
The bottom line is I can't say what the long term viability is for RoR. But I plan on devoting the next few days to studying it and getting a better feel for why it has taken the fancy of certain Java devotees. Why is RoR worth "burning the ships" for and never setting foot on Java land again?
Long term viability of a product in the internet age is not tied to big iron companies with crushing infrastructure. Long term viability of a product today is tied to the community. It is a fact of the internet age. So much so that Gartner believes that open source will be unavoidable.
So I don't have a conclusion for you because I haven't spent enough time in Ruby land. I'll be taking a tour this week and I'll try and render some kind of verdict on the health of the Ruby community. If someone wants to point me in a certain direction feel free.