durusmail: quixote-users: Re: Quixote plans for PyCon?
Quixote plans for PyCon?
2003-12-08
2003-12-08
Re: Quixote plans for PyCon?
2004-01-09
2004-01-10
2004-01-12
2004-01-29
Re: Quixote plans for PyCon?
Graham Fawcett
2004-01-12
A.M. Kuchling wrote:

> On Fri, Jan 09, 2004 at 04:26:26PM -0500, Graham Fawcett wrote:
>
>>conference? And what would you like to work on? I recall some talk of a
>>refactored Publisher some time ago; are there other such projects on the
>>back-burners?
>
> There's the 1.0 roadmap I posted some time ago; I should dust it off and try
> to get working on it again.  That might be a good sprint candidate.  Can
> anyone think of other useful Quixote projects?  Is there any form framework
> stuff that would need doing? Holding a BoF is worthwhile, too.


For dissucssion, I hunted down the 1.0 roadmap (Mar 13, 2003):

http://article.gmane.org/gmane.comp.web.quixote.user/1306

excerpted in full, below. The brief ensuing discussion concerned the
Publisher proposal, forms and PTL dependencies, and customizable URL
traversal.

Perhaps the Web Container Interface proposed on Web-SIG might have
frozen by March. If so, implementing the WCI might be a worthy (and
relatively easy) 1.0 feature.

-- G


Long ago, A.M. Kuchling wrote:

> For a while the only thing preventing us from stamping the magic 1.0
> version number on Quixote was a vague desire to refactor the
> quixote.publish.Publisher class.  Yesterday David, Neil, and I sat
> down to actually discuss what to do.
>
> Publisher is a large bear of a class, around 275 lines of code.  When
> you want to connect Quixote to a new infrastructure such as Medusa, or
> SCGI, or Twisted, you have to subclass Publisher to customize it.
> This used to be very messy, but I cleaned things up a bit writing
> medusa_http.py.  The need to subclass still makes the required driver
> script for a Quixote application a bit more complicated than it should
> be.
>
> Publisher does a number of things, such as logging, creating request
> objects, and traversing the namespace based on the URL.  The goal for
> the future version of Publisher is to let the user specify objects
> that will handle these tasks instead of having to subclass.
> Session management will also be done by an object.
>
> For example, the driver for Quixote-via-CGI might look something like:
>
>    logger = LoggingObject()
>    publisher = Publisher('application.ui',
>                          log = logger,
>                          request = CGIRequester(),
>                          # default session manager does nothing
>                         )
>    publisher.run()
>
> (I just came up with the name 'Requester' for the class; it may be
> something different in the actual 1.0 code.)
>
> Publisher.run() will then do something like:
>
>     def run (self):
>         # Loop ends when there are no more requests
>         for request in self.requester:
>             self.do_request(request)
>
> (Again, details subject to change...)
>
> The application can be changed to work with SCGI by using
> SCGIRequester instead of CGIRequester.  You can turn off logging by
> specifying a NullLogger instance that does nothing.  You can supply
> your own session manager.
>
> Note that the traversal process is not on the list of customizable
> things.  Therefore, one of my first jobs will be to remove that logic
> from the Publisher class.  I doubt anyone is overriding these methods
> to customize the traversal process, so this change seems safe for 0.6.
>
> It's not yet clear how to do this and keep existing code running, but
> we'll certainly try.  Do any of you have your own subclasses of
> Publisher?  If so, I'd like to know about them and, if possible, get
> copies of them.
>
> Plan of action:
>
> For 0.6b4:
>
>    * Factor traverse_url() and get_component() out of the Publisher
>      class.  (Mostly done at this writing; I need to check why
>      _q_exception_handler doesn't seem to be working.)
>
>    * Release 0.6b4 very soon -- today, tomorrow?  This will then
>      become 0.6final.  (Really, this time.  Hey, stop laughing!)
>
> For 1.0:
>    * Factor out the logging and request-building interfaces from
>      Publisher.
>
>    * Factor out the session management interface from
>      SessionPublisher.  SessionPublisher will become a near-trivial
>      subclass of Publisher; Publisher will default to using
>      a null session manager while SessionPublisher will default
>      to the current in-memory session storage.
>
>    * Include NullLogger, NullSessionManager, and sensible default
>      implementations.  Include CGIRequester, SCGIRequester,
>      FastCGIRequester.
>
>    * Release 1.0, and then hopefully we can leave it alone.
>
> I'd like to see 1.0 done soon, perhaps in time for PyCon, but we'll
> see how it goes.  Watch the -checkins list to follow the activity.
>
> Comments welcome.
>
> --amk                                                    (www.amk.ca)
> I never think twice about anything; takes too much time.
>       -- Sanders, in "Kinda"




reply