WebStack

Annotated README.txt

228:5f9836c6dd9d
2004-09-02 paulb [project @ 2004-09-02 19:32:22 by paulb] Added separation of path and body fields to those frameworks which merge the values into a single source. Certain charset/encoding issues may remain.
paulb@68 1
Introduction
paulb@68 2
------------
paulb@68 3
paulb@60 4
WebStack is a package which provides a common API for Python Web applications,
paulb@60 5
regardless of the underlying server or framework environment. It should be
paulb@60 6
possible with WebStack to design and implement an application and to choose a
paulb@60 7
deployment environment, without having to go back and rewrite large parts of
paulb@60 8
that application to work in the chosen environment or in other environments
paulb@60 9
(should the deployment requirements change after the application has been
paulb@60 10
written).
paulb@60 11
paulb@68 12
Framework Support
paulb@68 13
-----------------
paulb@68 14
paulb@218 15
Currently, BaseHTTPRequestHandler (via BaseHTTPServer in the standard
paulb@218 16
library), CGI, Jython/Java Servlet API, mod_python, Twisted, Webware and Zope
paulb@218 17
2 are supported. Each framework has its own set of strengths and weaknesses,
paulb@218 18
but the idea is that deployment concerns can be considered separately from the
paulb@218 19
implementation of application functionality. Consult the NOTES.txt files in
paulb@218 20
each framework's subdirectory of the docs directory for some notes on how
paulb@218 21
applications may be run in each environment.
paulb@60 22
paulb@68 23
Tested Frameworks
paulb@68 24
-----------------
paulb@68 25
paulb@178 26
BaseHTTPRequestHandler    Python 2.2.2, Python 2.3.3
paulb@120 27
CGI                       Apache 2.0.44
paulb@178 28
Jython/Java Servlet API   Jython 2.1, Java JDK 1.3.1_02, Tomcat 4.1.27 (Servlet 2.3)
paulb@102 29
mod_python                3.0.3 (3.1.3 for cookie support)
paulb@68 30
Twisted                   1.0.5
paulb@68 31
Webware                   0.8.1, CVS (2004-02-06)
paulb@192 32
Zope			  2.7.2-0
paulb@192 33
paulb@192 34
New in WebStack 0.7 (Changes Since WebStack 0.6)
paulb@192 35
------------------------------------------------
paulb@192 36
paulb@218 37
Fixed path information semantics.
paulb@192 38
Fixed file upload semantics.
paulb@227 39
Fixed content type handling for Unicode output and for interpreting request
paulb@227 40
body fields/parameters (although some improvement remains).
paulb@227 41
Fixed field/parameter retrieval so that path and body fields are distinct,
paulb@227 42
regardless of the framework employed.
paulb@192 43
Introduced Zope 2 support.
paulb@68 44
paulb@178 45
New in WebStack 0.6 (Changes Since WebStack 0.5)
paulb@178 46
------------------------------------------------
paulb@178 47
paulb@178 48
Introduced Jython/Java Servlet API support.
paulb@178 49
Minor fixes to example applications and to BaseHTTPRequestHandler.
paulb@178 50
paulb@171 51
New in WebStack 0.5 (Changes Since WebStack 0.4)
paulb@171 52
------------------------------------------------
paulb@171 53
paulb@171 54
Changed request body fields/parameters so that they are now represented using
paulb@171 55
Unicode objects rather than plain strings.
paulb@171 56
Introduced better support for Unicode in response streams.
paulb@171 57
paulb@160 58
New in WebStack 0.4 (Changes Since WebStack 0.3)
paulb@160 59
------------------------------------------------
paulb@140 60
paulb@140 61
Added application definition of user identity, permitting alternative
paulb@140 62
authentication mechanisms.
paulb@142 63
Improved BaseHTTPRequestHandler and mod_python reliability around fields from
paulb@142 64
request bodies.
paulb@142 65
Provided stream and environment parameterisation in the CGI adapter.
paulb@140 66
Added LoginRedirect and Login examples.
paulb@164 67
Added get_path_without_query and fixed get_path behaviour.
paulb@140 68
paulb@160 69
New in WebStack 0.3 (Changes Since WebStack 0.2)
paulb@160 70
------------------------------------------------
paulb@120 71
paulb@120 72
Added better header support for Webware (suggested by Ian Bicking).
paulb@120 73
Introduced CGI and Java Servlet support (the latter is currently
paulb@120 74
broken/unfinished).
paulb@120 75
Introduced support for cookies.
paulb@120 76
paulb@68 77
Future Work
paulb@68 78
-----------
paulb@68 79
paulb@165 80
Things to consider for future releases: improved cookie support, redirects,
paulb@218 81
access to shared resources and much better documentation.
paulb@68 82
paulb@88 83
Field access needs testing, especially for anything using the cgi.FieldStorage
paulb@218 84
class, and the way file uploads are exposed should be reviewed (currently the
paulb@218 85
meta-data is not exposed). The acquisition of fields from specific sources
paulb@218 86
should be made more strict - some frameworks (eg. mod_python) provide path
paulb@218 87
fields in the body fields dictionary.
paulb@102 88
paulb@102 89
Cookie objects need defining strictly, especially since the standard library
paulb@102 90
Cookie object behaves differently to mod_python (and possibly Webware) Cookie
paulb@103 91
objects. Moreover, the set_cookie_value method needs to provide access to the
paulb@103 92
usual cookie parameters as supported by the frameworks.
paulb@90 93
paulb@227 94
UTF-16 (and possibly other encodings) causes problems with HTML form data sent
paulb@227 95
in POST requests using the application/x-www-form-urlencoded content type.
paulb@227 96
This should be investigated further.
paulb@218 97
paulb@159 98
Release Procedures
paulb@159 99
------------------
paulb@159 100
paulb@159 101
Update the WebStack/__init__.py __version__ attribute.
paulb@159 102
Update the release notes (see above).
paulb@159 103
Check the setup.py file and ensure that all package directories are mentioned.
paulb@159 104
Tag, export, archive, upload.