Ich entwickele ja schon seit langem keine Web-Applikation mehr “from scratch”, dafür ist mir meine Zeit zu schade. In den letzten zwei Jahren habe ich dabei häufig auf Zope und Plone gesetzt. Eine gute Wahl, aber für SQL-Jünger ist die objektorientierte Datenhaltung in der Zope-Datenbank (zodb) mehr als gewöhnungsbedürftig.
Ich bin daher auf der Suche nach Alternativen (obwohl gerade Zope 3 mehr Aufmerksamkeit verdient hätte). Am meisten reizen mich momentan Ruby on Rails (wie könnte es anders sein :-) und Django.
Als Python basiertes Framework hat Django bei mir natürlich Pluspunkte. Django ist nach Django Reinhardt benannt, der trotz einer nach einem Unfall verkrüppelten Hand zu einem der besten Jazz-Gitarristen der Welt wurde. Dazu Adrian Holovaty, einer der zwei Hauptentwickler von Django: “Using Django you can make a Website with two fingers”. Django ist noch relativ jung (aktuelle Version noch unter 1.0) und seit Mitte des letzten Jahres Open Source. In Django erstellt man sein Datenmodell in From von Python-Code mit einem automatischen Datenbank-Wrapper und der entsprechenden API zum Zugriff auf diese Daten. Mit enthalten sind automatisch generierte Admin-Interfaces, ein Templating System, i18n, Caching-Framework - unter anderem mit memcached Unterstützung - und eine URL Rewrite Engine für verständliche URLs.
Rails ist seit über einem Jahr bei jeder neuen Version “backwards compatible”, die 1.0 Version kam Ende letzten Jahres heraus. David Heinemeier Hansson, der Core Entwickler von Rails, begründet seine Motivation für die Entwicklung eines Web Frameworks in Ruby mit der Schönheit dieser Sprache: “Beauty [beautiful code] leads to happiness, happiness leads to productivity. Thus, beauty leads to productivity. That’s how I arrived at the notition that I didn’t want to do PHP anymore”. Die “on rails experience” ermöglicht schnelle Webentwicklung (”follow the rails”) verbunden mit dem positiven Gefühl etwas “Schönes” zu erschaffen.
Ruby on Rails nutzt ActiveRecord, um Datenstrukturen ohne manuelles Ausführen von SQL-Statements zu speichern. Die Vorgehensweise von Django und Rails ist prinzipiell ähnlich, der Python- Ansatz wirkt auf den ersten Blick als einfacher umszusetzen (ich bin allerdings auch ein Python Programierer :-), aber ich muss zugeben, dass die Rails-Lösung eleganter wirkt. Rails bietet auch ein Caching-System (allerdings von Haus aus ohne memcached - Unterstützung) und - im Zeichen von Web 2.0 - die Möglichkeit zur automatisierten serverseitigen Erstellung von Javascript Code für AJAX Anwendungen (Rails definiert dazu eine Art Templating Language (RJS)).
Um weiter in die Materie einzusteigen lohnt es sich auf jeden Fall das Video der “Snakes and Rubies” Konferenz aus dem Dezember letzten Jahres anzuschauen. Hier stellen Holovaty und Hansson ihre Frameworks sehr anschaulich und mit viel Witz vor. Aber vor allem die Diskussion am Ende ist interessant. Ein bisschen Polemik ist natürlich auch dabei. Auf der Frage “How do you envison the world coming to an end” antwortet Hansson: “If people keep creating new Java applications the world is going to come to an end”. Am Ende ziehen Hansson und Holovaty ein gemeinsames Fazit, in dem sie Django Vorteil in der Entwicklung von “klassischen” Websites einräumen (Django kommt aus dem Zeitungsumfeld), während Rails seine Stärken in der Entwicklung von Web-Applikationen hat (Rails kommt aus dem Umfeld von 37Signals mit Anwendungen wie Backpack oder Tada-Lists)
Nachtrag: Zusammenfassung von Hansson himself