| Home | Abstract | Tables | Notes | Assessment | Acknowledgements | Status |
The Python Web
modules e-group was formed to provide a forum for the discussion of the
development of Web modules and frameworks for Python. Although Zope had come to occupy a prominent position as
a Web applications framework or platform, and had been recommended extensively
on the Python mailing list and comp.lang.python, some
dissatisfaction with Zope had been
experienced by certain Python community members and from this came their
motivation to develop new and, more importantly, different modules
and frameworks to approach the many problems of sustainable and convenient Web
application development.
Since the establishment of the Python Web modules e-group, a number of modules and frameworks have appeared. The following table gives details of each of the Web module projects currently in progress including Zope, but the numerous derivatives and components of Zope have been excluded to maintain a clear high-level overview.
Author: Paul Boddie (paul@boddie.net)
| Project | Version | Licence | Description | Language | Presentation | Sessions | Deployment | Developer APIs | |
|---|---|---|---|---|---|---|---|---|---|
| Python | Jython | ||||||||
| Fenster | Discontinued (development combined with Webware) | None stated | Application server | Yes | *SP | Yes | FCGI | *SP | |
| PSP | 1.0.2 (1999.06.22) | AEI (CNRI-like?) | Scripting engine | Yes | *SP | Yes | Java servlet | *SP | |
| Aquarium | 0.6 | Aquarium (liberal) | Web site framework | Yes | ? | Yes | Embedded in Apache using PyApache | Servlet | |
| Quixote | 0.20 (2001.01.16) | CNRI | Web applications framework | Yes | PTL | CGI? | *SP | ||
| PMZ | 0.21 (2000.02.09)
(development being more actively pursued in simple Python Server Page) |
"no special licence", "use-at-your-risk" | Python script | Yes | *SP | CGI | *SP | ||
| simple Python Server Page | 0.3a (2001.04.08) | GPL | Server-side scripting facility which is similar to ASP/JSP/PHP | Yes | *SP | CGI | *SP | ||
| Zebra | 0.4 (1999.12.16) | GPL | XML-based preprocessing language | Yes | *SP | *SP | |||
| weblib | Unspecified (2000.05.05)
or see CVS repository |
None stated | library to build interactive websites | Yes | Zebra | Yes | CGI | CGI-like, Zebra | |
| Webware | 0.5.1rc3 | Old-style Python licence | Suite for developing web-based applications | Yes | *SP | Yes | CGI, FCGI, own server, embedded in Apache using mod_webkit, mod_snake and mod_python, and in AOLserver using PyWX | CGI Wrapper component, PSP component, servlet, object-oriented using MiddleKit, UserKit, TaskKit and other components | |
| mod_python | 2.7.3 (2001.05.12) | Old-style Zope licence | Apache/Python Integration | Yes | Embedded in Apache | CGI Handler component, Httpdapy component, Publisher component and Z Handler component | |||
| lloop | 0.1.0
Discontinued |
GPL | Framework for building community portals | Yes | *SP | Yes (privileges managed by Portal component) | FCGI | *SP | |
| PyWX | 1.0b1 (2001.03.01) | LGPL | Python plugin for AOLserver | Yes | *SP | Embedded in AOLserver | CGI, *SP, object-oriented | ||
| Python ServerPages | 0.7.0a | Old-style Python licence (stated in source code) | CGI wrapper script | Yes | *SP | Yes | CGI | *SP | |
| mod_snake | 0.5.0 (2001.02.03) | BSD | Python module creation within Apache | Yes | Embedded in Apache | CGI-like | |||
| Zope | 2.3.2 | ZPL | Open Source web application server | Yes | DTML | Yes | CGI, PCGI, FCGI, ZServer (own server), and various combinations | Object-oriented environment with APIs such as DTML Methods, External Methods, Products, ZClasses... | |
| template.py | 1.3 (in template.py) | None stated | Generating dynamic documents from templates | Yes | No: uses regex/regsub | Own template language | Own template language | ||
| cgimodel | 1.2 (in cgimodel.py and in cgidisp.py) | Old-style Python licence (stated in source code) | CGI programming made easy | Yes | CGI, PCGI, FCGI (probably) | Apparently object-oriented | |||
| PyApache | 4.19 (2000.04.03)
4.22 (2001.05.15) |
LGPL | Embeds the Python Interpreter into the Apache HTTP Server | Yes | Embedded in Apache | Apparently object-oriented | |||
| cgipm | 0.3 (2000.02.21) | LGPL | Perl CGI.pm workalike | Yes | Programmatic | CGI | CGI-like | ||
| PyPortal | 0.0.1 | GPL | Site generator program | Yes | Programmatic | ||||
| metahtmllib | 0.51 | GPL | Document transformation library | Yes | HTML-like language with programmatic transformation rules | ||||
| Wasp | 1.22 (2001.05.15) | GPL | Open-source HTML preprocessor | Yes | Own template language | Yes | CGI | Own template language, CGI-like customisation | |
| PyHP | 0.92 (2000.11.10) | None stated | A system to include Python scripts in HTML documents | Yes | *SP | mod_python, "stand-alone" | *SP | ||
| Pyml | 1.14 | GPL | Server side HTML embedded scripting language | Yes | *SP | CGI | *SP | ||
| PyWebLib | 1.0.1 | GPL | Yet another web programming framework | Yes | Programmatic | Yes | CGI | Object-oriented | |
| SkunkWeb | 3.0 (2001.08.23) | GPL | Scalable, extensible and easy to use web application server | Yes | STML | Yes | Embedded in Apache | Object-oriented | |
| Twisted | 0.9.5 (2001.08.06) | LGPL | An event-based framework for internet applications | Yes | ? | ? | "Stand-alone" | Object-oriented | |
| SandStorm | 0.85 (2001.08.13) | GPL | Framework for creating cross-platform, multi-language, modular and distributed "middle-ware" web applications | Yes | ? | ? | CGI or "stand-alone" | Object-oriented | |
| Project | Version | Licence | Description | Language | Presentation | Sessions | Deployment | Developer APIs | |
|---|---|---|---|---|---|---|---|---|---|
| Python | Jython | ||||||||
| eGenix Application Server | Not specified | Commercial | Application Server | Yes | PythonHTML(tm) (*SP?) | Presumably | Integrated with Apache | *SP, object-oriented | |
Some of the modules or frameworks described above are really "pure" template systems; such systems do not always attempt to provide more than the most basic facilities for producing textual documents given document templates and some data as inputs. Conversely, "complete" Web frameworks should at least define how they are to serve Web contents or be interfaced to Web servers. A useful resource concerning template systems for use within existing Web frameworks is the Webware Template page, which covers such systems in a similar fashion to this page's coverage of general Web frameworks.
Several parties have introduced modules, frameworks and components referring to "Python server pages" and have named them similarly. It is advised that developers be attentive to the origin of such software as well as the name in order to avoid confusion over the different *SP systems available to Python developers.
Any licence descriptions not referring to widely-used licences such as the GPL, those using the suffixes "-like" or "-style", and those using subjective terms such as "liberal", are purely one interpretation of the licence used by the module or framework in question. Definitive licence information must be obtained by visiting the software's licence page or by examining licence declarations in the software's source code or accompanying documentation. I accept no responsibility for the failure of any person or organisation to comply with software licence requirements, particularly where their understanding of a licence is based solely on the descriptions given here.
Unless a module or framework explicitly supports or requires Jython (formerly JPython), it is not indicated as being a Jython-compatible framework. Some frameworks probably will support Jython, provided they do not use modules not implemented for Jython; other frameworks rely on modules specific to the C implementation of Python (CPython) and are explicitly stated as being incompatible in the table above.
"Deployment" refers to the means by which the framework modules themselves are deployed.
"Developer APIs" refers to the means by which application developers can deploy their software on top of each framework. Some frameworks provide support for CGI programs, so that application developers can migrate from traditional CGI environments to such frameworks.
With specific relevance to presentation of content, "programmatic" means that content can be generated in a structured way, using functions or methods provided as an abstraction over raw HTML text.
*SP is the term used to describe variants of the Active Server Pages concept. This typically involves code, embedded in HTML pages, which appears to be executed in order to change the content of the page when instantiated or viewed.
CGI (Common Gateway Interface) was the original, widespread method of interfacing programs to Web servers. It is arguably the most supported interface mechanism to date.
FCGI (Fast CGI) is a mechanism for providing a CGI environment to programs without the performance penalties usually incurred in traditional CGI approaches.
PCGI (Persistent CGI) is a deployment option principally for Zope. It is described in the Zope documentation.
The Java Servlet API is the principal standard API for interfacing Java programs with Web servers in order to achieve similar results to CGI programs, even if the API is rather different to the lowest level CGI API.
The provision of a framework's own server indicates that instead of writing software which interfaces to a separate Web server process, the framework has its own server process (or processes) from (or inside) which all Web application software runs.
In the more generic sense, a servlet-like API can be said to resemble the Java Servlet API even if it is used by programs written in Python as opposed to programs written in Java.
An object-oriented developer API indicates that "object-oriented considerations" dictate how an application is structured and shall respond to events originating from users. Traditionally, object-oriented application designs have involved hierarchies of objects, each of which passes events to its "children" until one specific object can deal with the event in its entirety.
The Zope Web application server contains various components which have proven more interesting to developers than the complete Zope environment itself. Such components implement network servers (ZPublisher) or document template systems (ZTemplates).
Whether a particular module or framework is suitable for development and deployment depends on a number of assessment criteria:
The four principal methods of deploying Web application frameworks are often reported to exhibit the following characteristics:
Many people have contributed ideas or offered their criticism of this page. Thanks go to all those people, including: Chuck Esterbrook, Dan Green, David Creemer, Michael Haggerty, Andrew Malcolmson, "Jeff", Amos Latteier, Jason Cunliffe and the members of the Python Web modules e-group.