Tuesday, January 11, 2011

Open-source Server-side Web Application Frameworks

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.

Other PHP frameworks include:
Zend Framework The Horde Project Symfony WASP Yellow Duck

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 little 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, 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.
Share/Bookmark

No comments:

Post a Comment