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.

http://calrudd.com/Webware/Webware-0.7experimental.tar.gz 

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:  

Tick List
----------------

* 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 
the tests.

* 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 
existing ones:
   * it is object-oriented and thus extensible, unlike the existing 
     ones
   * 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 
flexible UrlDecoding!!

* 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 
OutputCaching.

* 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:

  * Modularity
  * Flexibility/Extensibility
  * Webware as a suite of layered components, rather than as a 
    monolith.

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

Cheers,
Tavis

_______________________________________________
Webware-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-devel

Reply via email to