This post originated from an RSS feed registered with Web Buzz
by Douglas Clifton.
Original Post: Open-source Server-side Web Application Frameworks
Feed Title: blogZero
Feed URL: http://loadaveragezero.com/app/s9y/index.php?/feeds/index.rss1
Feed Description: Web Development News, Culture and Opinion
It just wouldn't be fair after my last post to ignore the tried-and-true server-side Web application frameworks. I am certainly familiar with all of them, though I haven't necessarily used every one in a production environment. PHP seems to be the best represented, or maybe it's just my bias seeing as how I've spent more time with it in a Web environment than some of the other languages. Python has several options, one of which is very popular and the other I find interesting. Perl only seems to have one viable Web framework, if there are others then I'm simply not aware of them. And of course we have Ruby, with Rails being perhaps the the most hyped out of the entire list. Would you expect anything less from the folks at 37signals?
PHP
Being a Web scripting language from the get-go, there are countless PHP frameworks to choose from. I'll concentrate on three, and list some others that I'm at least aware of.
Drupal is the big daddy of PHP frameworks, or is it a CMS? You decide. This extremely popular (insert your one word
description here) "system" has features galore, and a whole network of developers have grown up devoted to working with it. In my neck of the woods at least, being a skilled Drupal developer is gold.
CodeIgniter is definitely up my alley. It's light weight, fast, and stays out of your way. There are any number of class modules to choose from, and you can discard what you don't need to lighten the load even more. After seeing a presentation at the DC PHP Developers group a few months back I was intrigued and took a closer look at the package. The presentation, from two developers at Forum One, showcased the work they did on the CARMA Web site, and in particular the database backend that drives the mapping of global power plant emissions. PPT slides are available if you're interested. Plus, if Rasmus endorses CodeIgniter, I'm all ears.
CakePHP is another popular MVC application framework. Conceptually, it's similar to Ruby on Rails.
And there are more. I'm not writing a book here folks!
Python
If PHP is more specific to Web development (some people consider it not much more than a templating language), then Python, like Perl, is more general purpose. In terms of Web frameworks, there is one standout, with a loyal, some might say rabid, following.
Django, first developed at Lawrence Journal-World (I lived in Lawrence, Kansas for many years!), and released to the public under a BSD license in 2005, it has since become the Web application framework of choice in the Python community. Django, like everything Python, is based on the DRY principle, and everything is an object. You begin your project by defining a set of data models (which are Python classes of course), and build from there. The number of features are only limited by everything Python has to offer, which is a lot: an embedded HTTP server, friendly URLs based on regular expressions, an ORM connection to your database, page caching, input validation and sanitizing, tools to prevent XSS and CSRF attacks, authentication and sessions, RSS feeds, and much more.
CherryPy is another option for the Python developer. Like Django, it has a built-in HTTP server, or you can connect it to any WSGI compliant server (such as Apache 2). It has tools for caching, encoding, sessions, authorization, and lots more. Once again, anything Python can do...
Perl
The Swiss Army knife of scripting languages. Perl has a long history and a large user base. Where PHP tends to be monolithic, Perl, like Python, is built from a core language with a countless number of callable modules (aka CPAN). Like many other programmers, this is the language I started out with developing dynamic Web pages back in the days of CGI. Then mod_perl came along, and we have Mason and many other templating solutions. Whatever happened to eperl I wonder?
If Perl rules your world and you're shopping for a Web application framework, then look no further that Catalyst. Like Django, the feature-set is only limited by what's available in the form of CPAN modules. In other words, go nuts. Given the opportunity to work with this framework, I would jump right in.
There are no other viable Perl frameworks for developing Web applications. At least that I'm aware of. Drop me a note if you disagree.
Ruby
The Ruby language itself I am not that familiar with, many people like to compare it to Python. You be the judge. But when it comes to Web application frameworks, if you haven't heard of Rails then you've had your head in a bucket of sand.
The hype surrounding the release of this framework, which continues to this day, is astonishing. RoR began life as the backbone of the popular Basecamp Web-based project management tool from 37signals. The author released the framework to the development community in 2005. Like many modern frameworks, it is centered around the DRY principle and a MVC architecture. It also supports JavaScript/Ajax libraries which users of all 37signals products rave about. Simple, easy to use, rapid development and simple, easy to use results are the hallmarks of this system. Many of these same philosophies have been the basis of frameworks that followed.