List of my favourite web application frameworks by language
The frameworks in this list were chosen based on a number of intuitive parameters, which may or may not work for you. There are many good frameworks out there, and choosing one is often based on the scale of a given project or support for certain features.
These frameworks are frameworks I enjoyed working with and make the "job" of developing a website something that is actually enjoyable and doesn't feel repetitive.
- Python - Pyramid
Long gone are the days when Python felt like it was a bit clumsy for use on the web. Although Django is one of the more expansive frameworks available, the lightweight, surprisingly enterprise-level, resource-view patterned Pyramid really allows you to build a web application you feel is truly yours. Pyramid is possibly my favourite out of everything I've seen.
- PHP - Laravel
If you share my opinion that, to an extent, the MVC approach always feels weird with PHP, Laravel will disillusion you. Here's a surprisingly fresh, surprisingly intuitive, surprisingly cosy and best of all -- surprisingly clean framework that makes coding in PHP feel less like PHP than ever.
Laravel is a framework in the true sense that you'll feel like you're coding in Laravel and less like you're coding in PHP, which is a welcome escape from the messiness and headaches we've come to expect from the language. Laravel has pretty much everything you could need, and if your project has to be in PHP, it will seem at least 75% less of a chore.
- Ruby - Rails
Well this one comes as little surprise. I considered for a moment not listing Rails because it's such an obvious choice, but nothing really matches up to it. Rails is the reason why many people choose Ruby, and learning Ruby would be entirely worthwhile were it only because of Rails.
It's the framework most commonly used as an inspiration for others, but nothing can really match up to it because Ruby's idiomatic ways provide the perfect expression for Rails' grammar. It's like kanji provide the perfect way to write Japanese, it simply clicks. Oh, and Ruby is from Japan, so it kind of makes sense.
- Perl - Catalyst
If using Perl when you have all these other opportunities feels a little quaint and retro, Catalyst makes it seem very modern and simple. Catalyst brings some much-needed structure to Perl code while allowing you to fully exploit your Perl way of thinking without feeling intrusive. If it weren't for the Laravel framework, I'd cite myself and say: "If you need to use PHP, use Perl". Catalyst brings Perl up to speed in terms of ease of development, making it as viable a choice as the others listed here.
- Clojure - Compojure
Clojure is a weird choice here, and that's why I listed it last. In fact, I'm not sure there are any other web frameworks for Clojure. I should note that Clojure/Compojure is definitely not a framework you should attempt using for anything other than extremely small projects such as personal websites. Its importance stems from the fact that it allows you to create a website with Clojure.
Be prepared for little documentation on the matter, some extensive tweaking and a very lo-fi feel. Compojure is the perfect example of picking a language you probably don't know anything about and using it for developing a site simply for the excitement that brings (and to say you did it). It's entirely possible and easy to build a blog, wiki or personal portfolio site using this technology and deploy it (or several instances of it) on a server (likely it will have to be one you have a certain level of access to, so free hosts are probably out of the question) and watch it respond to requests. It's cute, fun and best of all Clojure is a dialect of Lisp so it's bound to appeal to you.
Well, that would be it as far as this list goes. One of the reasons why I allowed myself to be this inexact and still believe that this might be a useful and relevant guide is the fact that web development is closely bound to web design in certain respects. Web developers like nice, clean code and colorful editors. Development should be an enjoyable process for both personal and business needs. If you'd like to make your own site but your day-to-day job makes it seem like a chore, you really need a framework to motivate you -- not only your rational mind, but also your creative side.
The frameworks here appeal to my creative side, they make coding exciting and the resulting applications feel personal. The process of learning the ins and outs of each framework feels more like a hobby, like getting familiar with sanding down a boat or investigating the features of your new camera. They bring a much-needed freshness and reinvigorate your worn-out developer's soul.