Zend Framework reached Version 1.5 since the last article about Zend or Rails. Ruby on Rails also did a big step towards version 2 – 2.0.2, too be precise 😉
So, who is my personal winner in this race? Which framework suits best for fast and innovative web application development?
To say things first: My personal favorite is Ruby-on-Rails!
But the burning questions is: Why!
- Ruby instead of PHP: At first it sounds rather loose to cold-shoulder the sweat and tears of learning PHP – and dig deeply into a quite young and a pure object oriented language. But everybody I talked to in the last months who came from Java or PHP just told me the same story: It’s no big deal to learn Ruby – and the benefits are overwhelming. Ruby enables you to write elegant, readable and easy to maintain code.
- Vision-Driven-Community: No matter where you get in contact with the Rails community – at a developers conference or in a mailing-list: The basic mood and vision of the community is friendly, catching, international and productive. It’s all about creating something new, something better and more elegant with the power of the community … take a look at the RailsConf 2007 keynote of David Heinemeier Hansson in Portland.
- Scalability: By now, there are several examples of high scaling web applications with rails. The only con of Rails applications compared to Zend framework apps is the need of a little bit more hardware. But the pros are worth it: faster development and easier maintenance. Twitter, Qype and Xing show it. Especially, the Twitter developers love to twitter about scalability, like Britt Selvitelle auf der RailsConf Europe 2007 in Berlin.
- REST: Version 2.0 is a big step towards the principle of Representational state transfer. Now REST is deeply implemented into the Ruby on Rails framework. This makes it easy to create consistent interfaces to other systems. REST was nearly buried in oblivion but it’s a sophisticated and strong feature based on the http protocol. Find out more by the free PDF-book of b-simple focusing on RESTful-Rails.
- Database-Migrations: Rails offers a powerful script based tool to create and redo database structures called migrations. For projects following the principles of “pragmatic programming” this is a perfect tool to create and improve the whole database schema and fill tables with data. Zend want to have a feature like that, too. There is a proposal for that feature – but nobody knows when this will be implemented and how it will function.
- Test-Driven-Development: Rails still is one of the leaders in TDD by it’s built in creation of test infrastruktur for automated unit- tests, functional tests and integration tests. Zend Framework tries to catch up with its ZFTestManager – but a conclusive integration into the framework is still missing.
- MultiView: Within Rails, content can be presented in different ways according to the type of request. You easily can create different views to show the data as a CSV file, an RSS feed, a classical HTML page or as a special iPhone page. SlashDotDash shows, how easy it is to create a special iPhone optimized user interface for a rails app.
But there are some specific projects, which are not well suited for Rails:
- … if the application has to run on a shared-host-webspace: Rails is developed to create professional web apps. A simple webspace package at hosters like 1and1 or godaddy are not suited for the deployment of a rails app. Shared-hoster like DreamHost are positive exceptions as they offer Rails on their shared hosts. But there is a growing number of specialized hosters which offer hosting solutions suited for everybody – from private to enterprise. And sure, Rails runs perfectly on a dedicated root server. Ezra Zygmuntowicz, one of the founders of EngineYard, Bruce Tate and Clinton Begin give a lot of insights in their new book Deploying Rails Applications: A Step-by-Step Guide.
- … if the application has to run on a Windows Server: Ruby on Rails is optimized for UNIX/LINUX based systems. It’s fast on the common web-server infrastructures like the different LINUX distributions as well as MacOS X. On Windows machines the performance is enough for development but not enough for most deployments: Ruby on Rails is about ten times faster on non-Windows machines. So, deployments on Windows Servers are only feasible for small intranet settings where the IT department insists on using Windows as a server OS.
- … if you only need the actual date on a static webpage. In this case Rails as well as the Zend Framework are way to big.
- … if you as a developer do not understand an English word 😉 There is a lot of information about Rails out there, and there are localized activities, like the German or Spanish user group. But the community is English focused. Not to forget institutions like Peepcode or Railscasts.