Default
Google

Web Modules Overview

Home Abstract Tables Notes Assessment Acknowledgements Status

Abstract

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)

Tables

Open Source

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

Commercial

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

Notes

Template Systems

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.

The PSP Confusion

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.

Licences

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.

Jython

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

"Deployment" refers to the means by which the framework modules themselves are deployed.

Developer APIs

"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.

Terms Used

Programmatic

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

*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

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

FCGI (Fast CGI) is a mechanism for providing a CGI environment to programs without the performance penalties usually incurred in traditional CGI approaches.

PCGI

PCGI (Persistent CGI) is a deployment option principally for Zope. It is described in the Zope documentation.

Java Servlet

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.

Own Server

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.

Servlet

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.

Object-oriented

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.

Zope Components

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).

Assessment

Whether a particular module or framework is suitable for development and deployment depends on a number of assessment criteria:

Deployment

Deployment Effort, Specialisation and Performance for the four principal methods of deployment.

The four principal methods of deploying Web application frameworks are often reported to exhibit the following characteristics:

CGI
Given expertise in setting up Web servers or having one already set up, CGI deployment requires little extra effort, is well documented, but gives basic performance only.
FCGI, PCGI
These deployment options require integration with a Web server, but in a fairly standard way; some Web servers may be supplied with modules for these options. Performance is improved supposedly substantially.
Web server integration
Modules such as mod_python and PyWX integrate with specific Web servers, possibly increasing the specialisation of skills required to administer them. Performance should be improved substantially since Python interpreters need not be invoked afresh for each request, but solutions such as mod_perl have been reported to be resource intensive.
Own server
Server programs provided by frameworks are usually (if not always) specific to those frameworks, and may not be as widely known, as easy to manage, or as well documented as more mainstream application, Web or data servers. However, deployment may be as straightforward as that of a Web server, for example. Performance may be superior to the other deployment options, but there may be disadvantages in using these kinds of server programs to serve static content; for this reason, some framework developers may advocate the use of Web servers alongside or connected to framework-specific servers.

Acknowledgements

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.

Status

(September 4th, 2001)
Updated SkunkWeb's release number and date.
(August 17th, 2001)
Added SkunkWeb, Twisted and SandStorm. Changed the styles to remove certain font definitions.
(July 2nd, 2001)
Added PyWebLib.
(June 6th, 2001)
Added Pyml and added some missing links.
(May 29th, 2001)
Updated many entries with new release information. Added newly discovered projects (sPSP, Wasp and PyHP), renamed JPython to Jython, and added a link to the Webware Templates page.
(March 9th, 2001)
Modified Webware release information.
(February 20th, 2001)
Modified mod_snake release information.
(December 19th, 2000)
Modified mod_python release information.
(November 27th, 2000)
Removed the "Assessment", "Coverage" section - the components of the frameworks will be dealt with later. Added PyPortal and metahtmllib.
(October 30th, 2000)
Added PyApache, cgipm, eGenix, as well as a description of programmatic presentation.
(October 24th, 2000)
Updated Quixote's version.
(October 23rd, 2000)
Added cgimodel and template.py.
(October 21st, 2000)
Added more pictures!
(October 20th, 2000)
Added Zope due to popular demand! Introduced a section which aims to assess the essential elements of modules and frameworks.
(October 19th, 2000)
Updated the mod_python version.
(October 18th, 2000)
Updated this page after constructive criticism from a number of parties.
(October 11th, 2000)
Added Python ServerPages - a package apparently unrelated to the similarly named PSP.
(October 10th, 2000)
Updated Quixote's version.
(October 5th, 2000)
Updated Webware's version again!
(September 29th, 2000)
Updated Webware's version and added a note concerning Fenster's status.
(September 22nd, 2000)
Updated mod_python's version.
(August 31st, 2000)
Added PyWX.
(August 11th, 2000)
Added lloop.
(August 10th, 2000)
Added more Webware details, a few links, and API information.
(August 9th, 2000)
Created this page.


Acquiring image from ProHosting Banner Exchange