Well, better late than never ... I've ticked off most of the major
items on the WishList/TodoList and packaged them together as
something I've titled Webware-0.7experimental.
NOTE: It only includes code that I have personally tested, so
although the directory structures are there for UserKit, PSP, etc., I
haven't included the source files for them yet. Cheetah is included.
There's much more in the README, but here's a quick overview:
* It has a non-threaded and forking versions of the dispatcher that
will allow such things as IDE-debugging of servlets/applications
(Chuck's BIG wish) and profiling of servlets & WebKit.
* It includes an automated and easy-to-use testing framework for
WebKit and the beginnings of a test suite. It automatically builds
up a WebKit sandbox environment and runs servlets in that
environment. Install the package, then run 'webkit test -v' to run
* It includes an integrated HTTPServer. It has been tested, thanks
to the new testing framework.
* It uses a new Webware Component and Setup framework that is based
on distutils, and fits in with Chuck's philosophy of what Webware
Components are. Run 'webkit helpdesk start' after installation and
point your browser to http://localhost:8081/ to learn more. There's
alot to this framework, and it's well worth reading up on if you're
interested in making Webware fully extensible. It is ready to roll
for creating a 'batteries-included' distribution of Webware.
* Your applications are now completely separate from the files in the
Webware directory. The makeAppWorkingDir script is no longer needed,
its behaviour is the default.
* The 'webkit' launcher script is much more powerful than the
* it is object-oriented and thus extensible, unlike the existing
* the daemon mode works on platforms without fork() (i.e.Windows)
* the config files can be in either .ini format or in pure Python.
Thus, you can load from raw settings OR live objects assigned in
the config file!
* It has the beginnings of a builtin HelpDesk application that is an
evolution of the builtin application that comes with WebKit 0.6. Its
purpose is to provide a centralized interface to the documentation
and examples installed with Webware components and user applications.
run 'webkit helpdesk start' after installation.
* It has extension cascading. (see the WishList)
* It is easy to use local subclasses of major WebKit classes such
(Ian added this to the WishList yesterday). As such, it supports
* It has a Request.fieldMulti() method.
* It's MultiPortServer framework provides the hooks to implement
WebDav and other protocols.
* Geoff's 'ScalabilityEnhancments' suggestions from yesterday have
been implemented on the WebKit side.
* It has the necessary flexibility to implement gzip compression and
* It gives a more informative error message when someone points there
browser direcly at the AppServer on port 8086. (Mike's Wish)
* It uses SpacesNotTabs ;-)
Changes Likely To Be Controversial
* MiscUtils and WebUtils have been merged into a Python package
called Webware.Utils. The 'Webware' package contains all the core
classes and utitilities that are shared between Webware Components.
WebKit, UserKit etc. are all in separate packages. If this causes a
problem for people we can easily implement transitional versions
MiscUtils and WebUtils that act as proxies to this new package.
* It requires Python 2.0 and up. I don't see any compelling reason
to continue support for 1.5.2. If people can install Webware they
can also install 2.0! If they're concerned about breaking existing
Apps by making that change, why don't they go through their Apps and
make the few minor changes that might be required.
* Some of the methods in the Request class that I complained about in
reference to UrlDecoding and assuming too much about how UrlDecoding
works have not been implemented as part of the core. If there is a
need we can handle this via subclasses.
I'm not submitting this as patches against the Webware CVS because
the internal architectural changes are profound. Applying these
changes via patches would break the existing codebase and render it
useless for weeks while a code audit is performed. That would just
piss everyone off! So please think of this package as an
experimental DEVEL_BRANCH to the Webware CVS. That's what I hope it
will become (Chuck ;-).
There are some implementation details that are radically different
from the existing Webware, but I feel that it follows and builds on
the design principles of Webware:
* Webware as a suite of layered components, rather than as a
In my not so humble opinion it provides a solid base for the 0.7
coding. See the README for TODO notes. I await your thoughts...