At 12:42 AM 8/10/00 -0400, Daniel Green wrote:
> I've been developing an application server (FCGI only) that does
>essentially what Webware does, but isn't nearly as feature-complete yet. So
>I figured I'd hop on here and see if I could just help out with Webware
>rather than bother having a competing product with the same goals in mind.
>So, need a hand? :)
Welcome to the list. I've been keeping kind of a messy TO DO list which I'm
including here. The current plan is to freeze the code Sunday night, crank
out docs, test and then release 0.4.
I'd recommend for starters, becoming familiar with Webware and helping with
the testing of 0.4. After that, you should have an idea of what you think
you can and want to work on.
Have you been looking at the 0.3 version or the CVS repositor (e.g., pre-0.4)?
Here's the list:
WEBWARE TO DO
[ ] Handle unknown session ids with a specific page.
[ ] Fix ExamplePage to handle Plug-ins generically. Fix PSP link.
[ ] When I do a CVS co on FreeBSD, I get 'cache', but not 'Cache'
[ ] Make OneShot executable in the repository
[ ] With release 0.4 change SourceForge status to Alpha.
[ ] Make other adapters inherit Adapter.py
[ ] Disk based sessions
[ ] FormKit/
[ ] Page: Add features for style sheets.
[ ] Add Last-modified: to generic files that get served up (this problem
came up because of images getting reloaded everytime).
[ ] bug: Today I was testing WebKit for the first time and unfortantly I
found a bug right at the first request. In line 625 of the file
WebUtils/Cookie.py we have
if K == "$":
When the interpreter avaliated that lines it returned a "index out of
range" error. Probably because K had become any null object. To solve this
problem I just edited that like like this:
if K and (K == "$"): ...and the system worked pretty well!
[ ] Review default file type for generic file servlet. Should probably be
text, not text/html.
[ ] Application.running to something else like Application._running
[ ] Number the requests and use the number in the BEGIN REQUEST message
[ ] Investigate case insensitive URLs. TO DO: send out a msg to the group
on this. support both UNIX and Windows?
[ ] Memory leak TO DO: test for this.
[ ] Adaptors get raw responses as dictionaries. They should be structured
strings instead so that adapters can start using them before they're
[ ] Try out CGI Wrapper on Windows
[ ] AppServer doesn't print anything interesting or informative when it
exits (on Windows)
[ ] Review name and use of settings
[ ] WebKit, FCGIAdaptor: apply WebKitDir feature
[ ] Add Sessions/ and save them to disk (according to a setting)
[ ] AppServer's shutDown() method does not actually cause a shut down. The
sweeper thread of Application hangs around.
[ ] Consider adding mxDateTime
[ ] Need benchmarks for both OneShot.cgi and WebKit.cgi so that as new
releases are made we can monitor performance.
[ ] Test with another web server besides Apache. Xitami seems like a good
[ ] debug.cgi adapter:
print "content-type: text/plain"
sys.stderr = sys.stdout
[ ] Review breakdown of methods of Page.
[2000-06-10] Split out AppServer into subclasses
[2000-06-10] Make special OneShotAppServer for OneShot.cgi.
[2000-07-14] Fix address.text to use 127.0.0.1 instead of '' for hostname
[2000-07-14] Netscape Nav 4.7 doesn't like the sidebar on admin pages.
[2000-07-14] Change host from hardcoded 127.0.0.1 to a setting 'Host'
[2000-07-14] "cache/" to "Cache/"; make a dir for each plug-in; Put a
_README similar to
[2000-08-01] An adapter for http://www.modpython.org/. Jay checked this in.
[2000-08-02] Review all examples of for use of Page attributes like
_session and convert to method calls.
[2000-08-02] Consider WebKit.bat|WebKit instead of AppServer.bat|AppServer.
8/2: Stick with AppServer.
[2000-08-02] Fix .text extension 2000-08-02: It's really a browser MIME
[2000-08-02] Remove self._session = None in Servlet.py
[2000-08-04] KeyValueAccess to NamedValueAccess and put in MiscUtils
[2000-08-04] Change SessionTimeout to minutes instead of seconds
[2000-08-04] New sweeper method.
[2000-08-04] Pass 'transaction' into imported servlet scripts so they can
use them in set up.
[2000-08-04] Add MiscUtils testing
[2000-08-07] Created Adapter, subclass of Configurable.
[2000-08-07] OneShot: When capturing output, provide option to word wrap it
so the table doesn't get so wide
[2000-08-07] Navbar for Examples. SidebarPage
[2000-08-07] Review Cans. Discussed with Jay. On hold for now.
[ ] Docs
- "Running and Testing" to "Testing"
- syntax highlighted source
- browse the two above from the class hierarchy table
- webware docs: toc
- OneShot adapter
- for development of sites
- for running in "CGI mode" rather than "server mode"
- for development of plug-ins
- for development of WebKit
- no more underscore convention for admin scripts, different URL
- split the "Getting Started" instructions into 2 parts: Windows,
UNIX, Linux, et al
- Give install instructions based on my experience at pair.com
- Review and update settings
- When a servlet is loaded, it is given the global 'transaction'
in case it needs to do something sneaky.
- Instruct on the use of self.request(), not self._request in
subclasses of Page. This is required for session and could leak to breaks
from future releases if not applied to the other objects.
- Installation guide. Review and enhance, as needed, the release
instructions for Webware
- Transaction gets passed to loaded scripts
- Config files for adapters
- Debugging: When using OneShot consider turning on ShowConsole
[ ] MiddleKit
[ ] Load balancing
[ ] Fault tolerance
[ ] Expanded regression test suite
[ ] Automated regression test suite
[ ] Refinements and fixes
[ ] More testing
[ ] Tutorial
[ ] Consider moving Configurable from WebKit to MiscUtils
[ ] Investigate http://starship.python.net/crew/neale/src/whiz/
[ ] (?) When locating Servlets inside Python modules, if there is exactly
one class that inherits from Servlet, then accept it.
[ ] (?) Create cycle checker in class Object
[ ] (?) Consider os._exit()
[ ] Investigate pyunit.sourceforge.net
[ ] Embedded servlet URLs
[ ] Consider renaming content['default'] to context['']
[ ] Consider having the generic file servlet cache the files
[ ] (?) Create warning and error for Application. Search out WARNING:
ERROR: print statements
[ ] Consider whether each application should be its own process. Consider
relationship and role of app server.
[ ] It may be useful to pass information to a servlet when it's being
imported/executed for the very first time. It may want to use this
information during initialization. Information could be, pointer to app
server, pointer to app, pointer to factory, initiating request.
[ ] Check out Aquarium, http://sourceforge.net/project/?group_id=5453