At the end of 2008, the open source Ruby on Rails and Merb Ruby frameworks merged together
in an effort to unify development of Ruby on Rails 3. Fast forward 18 months and Ruby on Rails 3 (RoR) has yet to be officially released, though a release candidate is set for this week.
With the RoR 3 release, the open source development framework is being overhauled to provide more modularity and greater power compared to the current RoR 2 framework.
"We just spent a year and a half refactoring the whole thing, so there is a huge amount of internal improvement which mostly manifests itself as improvements in plugins," Yehuda Katz, a member of the Ruby on Rails core team and Rails framework architect at Engine Yard, told InternetNews.com.
Katz added that the framework overall was improved, with better dependency management and API improvements. Katz explained that the first year of the Rails 3 effort was largely consumed with refactoring the Rails codebase.
"When I say refactoring, what I mean is the traditional definition, which is making changes to the code without changing the functionality," Katz said. "We've made huge changes to the Rails internals without changing for the most part, how users are expecting to use the framework."
Katz noted that Rails has always been flexible, allowing developers to do whatever they want. With Rails 3, Katz said that the core development team looked at the whole ecosystem to see what people were really doing. The next step was then to expose better, more explicit and supportable ways to do those things that everyone is doing.
From a timing perspective, in May of 2009, Katz told InternetNews.com that Rails 3 would be out by the end of 2009. Rail 3 has not yet been officially released and Katz admitted that at the beginning, the development team didn't realize how long the project would take.
Katz added that development team felt strongly about having a platform that could be relied upon. He noted that the development team has been working with the Rails community to ensure that everything works.
"Had we released in December, I think we could have released something, but we would have had to release a 3.1 version now that would address all the issues that we've been hearing about," Katz said.
With Rails 3, Katz noted that Merb users will likely be happy with what they see as the Merb framework is merged into Rails. One of the ideas that has been carried over from Merb is dependency management.
"Rails has historically tried to sidestep the issue by reducing the number of dependencies, but that is difficult to do," Katz said. "You don't want to be building everything from scratch and that means getting dependency management right, which is something that Merb knows a lot about."
A move towards more modularity is also a key part of Rails 3. Katz explained that in Rails 2, Rails would own a given application process on a global settings basis. Now in Rails 3, the framework is trying to reduce global states inside of Rails, so that the framework can be more modular and scalable.
Rails 3 will also feature an improved router. Katz explained that the Rails 3 router will let developers control where inbound request go with a level of precision that wasn't easily achieved in Rails 2.
"So for instance if a request comes in from an iPhone, a user can be easily redirected to a specific mobile URL," Katz said. "That came from Merb and from existing plugins that tried to create islands of functionality. So now whatever you can do with a request you can do inside the router."
Rails 3.1 when?
Katz noted that the release candidate (RC) for Rails 3 is coming soon and then based on people's experiences with it, if further bugs are identified they can be fixed before a final release.
"We'd like to have other releases happen more rapidly than 3.0 which is a special release with some big changes," Katz said. "With 3.1 we'll go back to basics and look at things that are less invasive internally but could have a big impact on developers.
Tags: Ruby on Rails, Ruby, open source, developers, Web apps