[Web-SIG] Standardized configuration

Ian Bicking ianb at colorstudy.com
Tue Jul 19 19:28:21 CEST 2005


Phillip J. Eby wrote:
> At 07:29 AM 7/17/2005 -0400, Chris McDonough wrote:
> 
>> I'm a bit confused because one of the canonical examples of
>> how WSGI middleware is useful seems to be the example of implementing a
>> framework-agnostic sessioning service.  And for that sessioning service
>> to be useful, your application has to be able to depend on its
>> availability so it can't be "oblivious".
> 
> 
> Exactly.  As soon as you start trying to have configured services, you 
> are creating Yet Another Framework.  Which isn't a bad thing per se, 
> except that it falls outside the scope of  PEP 333.  It deserves a 
> separate PEP, I think, and a separate implementation mechanism than 
> being crammed into the request environment.  These things should be 
> allowed to be static, so that an application can do some reasonable 
> setup, and so that you don't have per-request overhead to shove ninety 
> services into the environment.

The services themselves can be fairly lazy; though unfortunately you 
can't be trickly and add laziness when a service was originally written 
in a very concrete way, since that would require fake dictionaries and 
other things WSGI disallows.

But there's not a lot of overhead to environ['paste.session.factory']() 
-- it's just a stub object stuck in a particulra key, that knows the 
context in which it was created so it can communicate with that context 
later.

> Also, because we are dealing not with basic plumbing but with making a 
> nice kitchen, it seems to me we can afford to make the fixtures nice.  
> That is, for an add-on specification to WSGI we don't need to adhere to 
> the "let it be ugly for apps if it makes the server easier" principle 
> that guided PEP 333.  The assumption there was that people would mostly 
> port existing wrappers over HTTP/CGI to be wrappers over WSGI.  But for 
> services, we are talking about an actual framework to be used by 
> application developers directly, so more user-friendliness is definitely 
> in order.

My own vision for most middleware is that it get wrapped by frameworks. 
  In fact, that it be so godawful ugly you can't help but wrap it ;) 
Well, not deliberately horrible for no good reason... but at least that 
it doesn't matter that much, because the frameworks will want to wrap it 
anyway.

This is the "aesthetically neutral" aspect of middleware that I've 
mentioned before.  People get all bothered if you use underscores 
instead of mixed case, or vice versa, even though that's one of the 
least important aspects of the features being implemented.

Of course, there are real problems with wrapping.  Like it reduces the 
transparency -- middleware becomes this magic part of the system because 
it's not something people deal with day-to-day, and if your first chance 
to work with middleware is to write it, that's intimidating.  There's 
also the leaky abstraction problem; though I think well-defined 
middleware helps avoid this.

Really, if you are building user-visible standard libraries, you are 
building a framework.  And maybe I'm just too pessimistic about a 
standard framework... but, well, I am certainly not optimistic about it. 
  On the other hand, it's not like people are breaking down my door with 
their enthusiasm to use Paste middleware either.  So I dunno.

I can only say a good strategy clearly has to build on developer's 
laziness, their fear of new things, and their reluctance to learn new 
things.  Well, that's the negative way of saying it.  It has to build on 
the likelihood that their attention is primarily focused on their 
domain, that it builds on their existing knowledge, and that it presents 
a minimal set of new concepts.


-- 
Ian Bicking  /  ianb at colorstudy.com  /  http://blog.ianbicking.org


More information about the Web-SIG mailing list