I do agree on what Ian is saying, but I want to go forward. I've tried to write down the requirements the 'ultimate' Python web framework needs to comply to. PHP supports all of these:
- a template syntax that can mix fixed HTML with generated code. Sadly enough the whitespace of Python does not fit very well with HTML. There have been numerous attemps to overcome this (Quixote ptl, psp, ...) but none of them are as easy as PHP. I think this is the main reason why Python keeps on struggling to become a very popular Web language. This one will be the main hurdle to get an agreement on because of the legacy of the existing templates systems
- a simple relationship: a web page is a file. Storing web pages in an object database (the Zope way) only increases complexity: it requires specific tools to do ftp, webdav, ..., while it does not bring anything more than the file system does. A web page can be an object if we stick to the 'one object in one file' rule.
- a RDMBS back end. While pyhton lovers will argue that a ptyhon object store is more pythonic, these object stores lacks the features of RDMBS like MySQL and Oracle: robustness, backup/restore , scalability, replication, transactional behaviour, ... People are scared to put 2 Gb of critical business data in an 'unknown' OO database. SQLObject might do the job to link to the back-end.
- non stop behaviour. Most Python web framework requires you to stop and restart the framework when you add/edit/delete a web page. In most case a web page is directly linked to a Python object, which cannot be easily removed/modified from a running Python process. This behaviour is not acceptable for operational sites. Or we need to go away from the paradigm 'a web page is a Python object' or we need to solve remove/modify objects issue.
- a decent release policy (and not like Webware who lives in the SVN repository for the last 2 years)
- a good Apache integration (both release 1 and 2)
- a good persistent session management (not like Quixote). PHP dumps session info in ordinary files, which is not nice, but it works.
Looking at the existing web framework we have (Quixote, Webware, CherryPy, SnakeLets, mod_python, ...) all of the frameworks miss at least one. Only if we have a framework that complies to all of these requirements, we can go for the last one:
- a solution that integrates nicely the different components, having a single integrated configuration file, installation script, start/stop script and documentation