From ggbaker at sfu.ca Sat Mar 13 02:19:25 2004
From: ggbaker at sfu.ca (ggbaker@sfu.ca)
Date: Sat Mar 13 02:19:30 2004
Subject: [Web-SIG] safe pickle?
Message-ID: <20040313071923.GB4906@lefty.cs.sfu.ca>
Is there a version of pickle that can be sfaely used with non-trusted
data? It would be very nice to be able to do something like this in a
CGI script:
print ''
# in next script
stateinfo = safeunpickle(form["state"].value)
Of course, the actual contents of the stateinfo variable would be
untrusted at this point, but that's always there with submitted data.
The pickle.load function is advertized as unsafe with untrusted data.
Is there anything similar that is safe? Obviously, it would have to be
more restricted than pickle.
Greg Baker, Lecturer
School of Computing Science
Simon Fraser University
Burnaby, BC, V5A 1S6
E-mail: ggbaker@cs.sfu.ca
From wilk-ml at flibuste.net Sat Mar 13 05:24:55 2004
From: wilk-ml at flibuste.net (William Dode)
Date: Sat Mar 13 05:25:01 2004
Subject: [Web-SIG] safe pickle?
In-Reply-To: <20040313071923.GB4906@lefty.cs.sfu.ca> (ggbaker@sfu.ca's
message of "Fri, 12 Mar 2004 23:19:25 -0800")
References: <20040313071923.GB4906@lefty.cs.sfu.ca>
Message-ID: <87llm511u0.fsf@blakie.riol>
ggbaker@sfu.ca writes:
> Is there a version of pickle that can be sfaely used with non-trusted
> data? It would be very nice to be able to do something like this in a
> CGI script:
>
> print ''
>
> # in next script
> stateinfo = safeunpickle(form["state"].value)
>
> Of course, the actual contents of the stateinfo variable would be
> untrusted at this point, but that's always there with submitted data.
>
> The pickle.load function is advertized as unsafe with untrusted data.
> Is there anything similar that is safe? Obviously, it would have to be
> more restricted than pickle.
I think you should use a sessionID and pickle inside the server... Even
if pickle was safe you could always have problem with incoherent data.
You can also look at yaml to pickle data in a safer way.
bye
--
William - http://flibuste.net
From ianb at colorstudy.com Sat Mar 13 15:16:22 2004
From: ianb at colorstudy.com (Ian Bicking)
Date: Sat Mar 13 15:17:20 2004
Subject: [Web-SIG] safe pickle?
In-Reply-To: <20040313071923.GB4906@lefty.cs.sfu.ca>
References: <20040313071923.GB4906@lefty.cs.sfu.ca>
Message-ID: <4BEEE1B3-752B-11D8-9B3B-000393C2D67E@colorstudy.com>
On Mar 13, 2004, at 1:19 AM, ggbaker@sfu.ca wrote:
> Is there a version of pickle that can be sfaely used with non-trusted
> data? It would be very nice to be able to do something like this in a
> CGI script:
>
> print ''
>
> # in next script
> stateinfo = safeunpickle(form["state"].value)
>
> Of course, the actual contents of the stateinfo variable would be
> untrusted at this point, but that's always there with submitted data.
You need to sign your pickle. Briefly, you have a server-side secret
(a string); you concatenate that secret string with the pickle string,
and make a hash of that (using md5 or sha1), and put that in a second
hidden field. When you get the hidden pickle field back, you
reconstruct that hash and check it against the hash you received -- if
it matches, then you know it's the same pickle you gave them.
--
Ian Bicking | ianb@colorstudy.com | http://blog.ianbicking.org
From ngps at netmemetic.com Sat Mar 13 21:00:04 2004
From: ngps at netmemetic.com (Ng Pheng Siong)
Date: Sat Mar 13 21:01:39 2004
Subject: [Web-SIG] safe pickle?
In-Reply-To: <4BEEE1B3-752B-11D8-9B3B-000393C2D67E@colorstudy.com>
References: <20040313071923.GB4906@lefty.cs.sfu.ca>
<4BEEE1B3-752B-11D8-9B3B-000393C2D67E@colorstudy.com>
Message-ID: <20040314020004.GA484@vista.netmemetic.com>
On Sat, Mar 13, 2004 at 02:16:22PM -0600, Ian Bicking wrote:
> >Of course, the actual contents of the stateinfo variable would be
> >untrusted at this point, but that's always there with submitted data.
>
> You need to sign your pickle. Briefly, you have a server-side secret
> (a string); you concatenate that secret string with the pickle string,
> and make a hash of that (using md5 or sha1), and put that in a second
> hidden field. When you get the hidden pickle field back, you
> reconstruct that hash and check it against the hash you received -- if
> it matches, then you know it's the same pickle you gave them.
OP may also wish to add an expiry timestamp into the mix, to prevent
replay attacks. This may be in the pickled data or added with the hashing
key.
See AuthCookies in M2Crypto (url in .sig) for an implementation.
--
Ng Pheng Siong
http://firewall.rulemaker.net -+- Firewall Change Management & Version Control
http://sandbox.rulemaker.net/ngps -+- Open Source Python Crypto & SSL
From insom at iol.ie Wed Mar 17 05:58:42 2004
From: insom at iol.ie (Aaron Brady)
Date: Wed Mar 17 05:58:54 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
Message-ID:
http://insom.me.uk/blog/Tech/Python/templating.writeback
Rather than come up with YAPWF (Python Web Framework), what would be
people's thoughts on stripping down Quixote to it's bare minimum (I'm
thinking, removing PTL and letting people use what they want;
TAL/Cheetah/"".join()) and that being a contender for the standard
library?
The code base is a joy to work with, so I'd have no problem doing it, if
it sounds like a reasonable idea? (In fairness, there's not a lot of
baggage to strip out!).
Aaron
--
"Lack of planning on your part, does not constitute an
emergency on my part."
-- Office Wisdom (stolen from NooneCasey.ie)
From amk at amk.ca Wed Mar 17 06:59:07 2004
From: amk at amk.ca (A.M. Kuchling)
Date: Wed Mar 17 07:02:05 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <20040317115906.GA17728@rogue.amk.ca>
On Wed, Mar 17, 2004 at 10:58:42AM +0000, Aaron Brady wrote:
> Rather than come up with YAPWF (Python Web Framework), what would be
> people's thoughts on stripping down Quixote to it's bare minimum (I'm
> thinking, removing PTL and letting people use what they want;
Note that PTL is already optional; simply never import and call
enable_ptl(), and the PTL import hook is never installed. As you've
discovered, it's not too difficult to use alternative templating schemes;
you've used Cheetah, and I wrote up a recipe for using ZPT
(http://www.quixote.ca/qx/TemplatingWithZpt). The ptl_compile and
ptl_import modules only add up to around 500 lines, so it wouldn't reduce
the code size of Quixote very much.
--amk
From titus at caltech.edu Wed Mar 17 11:47:22 2004
From: titus at caltech.edu (Titus Brown)
Date: Wed Mar 17 11:47:30 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <20040317164722.GK25375@caltech.edu>
-> http://insom.me.uk/blog/Tech/Python/templating.writeback
->
-> Rather than come up with YAPWF (Python Web Framework), what would be
-> people's thoughts on stripping down Quixote to it's bare minimum (I'm
-> thinking, removing PTL and letting people use what they want;
-> TAL/Cheetah/"".join()) and that being a contender for the standard
-> library?
->
-> The code base is a joy to work with, so I'd have no problem doing it, if
-> it sounds like a reasonable idea? (In fairness, there's not a lot of
-> baggage to strip out!).
I like and use Quixote, so of course I'm in favor.
But I don't see any particular reason to push it into the standard
library over e.g. Webware, which the group I work in uses and also
likes.
These two frameworks support very different programming styles,
some of which may be better suited for some jobs, and some people, than
others.
I'd be more interested in seeing a standardized connection system (e.g.
SCGI) than anything else. Where to draw the line is a tough question,
but I think the http_request and http_response aspects of Quixote
(originally taken from Zope, ne c'est pas?) are quite useful and
could be made universal.
cheers,
--titus
From ianb at colorstudy.com Wed Mar 17 11:58:44 2004
From: ianb at colorstudy.com (Ian Bicking)
Date: Wed Mar 17 12:02:15 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <405883C4.9040700@colorstudy.com>
Aaron Brady wrote:
> Rather than come up with YAPWF (Python Web Framework), what would be
> people's thoughts on stripping down Quixote to it's bare minimum (I'm
> thinking, removing PTL and letting people use what they want;
> TAL/Cheetah/"".join()) and that being a contender for the standard
> library?
What would the goal be in this? (I ask non-rhetorically)
Or, coming from the other direction (from tabula rasa, instead of from
quixote), what would you specifically bring in from quixote?
I'd still love to see a standard request and response -- any request and
response, as long as it isn't too terribly annoying (like FieldStorage).
Besides the request and response, I suppose there is the publisher. I'm
less certain of its general applicability.
Ian
From paul.boddie at ementor.no Wed Mar 17 12:15:38 2004
From: paul.boddie at ementor.no (Paul Boddie)
Date: Wed Mar 17 12:15:45 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
Message-ID:
> I'd still love to see a standard request and response -- any request and
> response, as long as it isn't too terribly annoying (like FieldStorage).
> Besides the request and response, I suppose there is the publisher. I'm
> less certain of its general applicability.
More self-promotion, but what do you think of the WebStack stuff I announced
on PyPI?
http://www.python.org/pypi?:action=display&name=WebStack&version=0.2
There's a single transaction class which manages access to request and
response information - it's done that way because some frameworks make
little distinction between requests and responses, or at least not enough to
justify two distinct classes. I've found some aspects of current framework
support to be rather irritating - FieldStorage is just one part of that -
and sometimes one wonders if it's really possible to make a sane layer of
functionality without undoing the dubious design decisions of various
frameworks and then having to reimplement that sanity, afresh, on top.
Paul
From insom at iol.ie Wed Mar 17 14:16:14 2004
From: insom at iol.ie (Aaron Brady)
Date: Wed Mar 17 14:16:26 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To: <405883C4.9040700@colorstudy.com>
References:
<405883C4.9040700@colorstudy.com>
Message-ID:
IB> What would the goal be in this? (I ask non-rhetorically)
IB>
IB> Or, coming from the other direction (from tabula rasa, instead of from
IB> quixote), what would you specifically bring in from quixote?
IB>
IB> I'd still love to see a standard request and response -- any request and
IB> response, as long as it isn't too terribly annoying (like FieldStorage).
IB>
IB> Besides the request and response, I suppose there is the publisher. I'm
IB> less certain of its general applicability.
Well I was thinking about request, response and publisher, though now that
I think about it, publisher is not as general as I thought.
Quixote's req/res are based off of Zope, albeit a version from the distant
past, and I've found them to be pretty comprehensive. They could be
reasonable easily layered on top of CGI too.
Aaron
From ianb at colorstudy.com Wed Mar 17 14:23:42 2004
From: ianb at colorstudy.com (Ian Bicking)
Date: Wed Mar 17 14:26:51 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References: <405883C4.9040700@colorstudy.com>
Message-ID: <4058A5BE.6030403@colorstudy.com>
Aaron Brady wrote:
> Quixote's req/res are based off of Zope, albeit a version from the distant
> past, and I've found them to be pretty comprehensive. They could be
> reasonable easily layered on top of CGI too.
It's been a while since I looked at them, but I do remember having a
concern that the response didn't seem to support streaming. I.e., you
couldn't write to the response and have that immediately sent to the
client. Most of the time you don't need or want this, but for serving
large files it is important.
Otherwise those request and response objects looked fine to me as far as
I remember.
Ian
From mailinglists at qinternet.com Wed Mar 17 14:30:58 2004
From: mailinglists at qinternet.com (Brian Olsen (Mailing Lists))
Date: Wed Mar 17 14:31:02 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To: <405883C4.9040700@colorstudy.com>
References:
<405883C4.9040700@colorstudy.com>
Message-ID: <1079551858.1134.6.camel@junk.nycinternet.org>
> I'd still love to see a standard request and response -- any request and
> response, as long as it isn't too terribly annoying (like FieldStorage).
After reading this thread, I have come to retract, sort of, the opinion
I held before against *too much* standardization.
A Request and Response class is okay. Something like that can be easily
merged together to make it feel like one class. The init parameters
should be pretty common: a CGI dictionary for example. The two classes
shouldn't imply too much about the environment it is being used in.
What I think will also be useful would be a standard set of functions
for escaping characters, packaged in one place.
I think that would be a good start. Though, I can't think of anything
else to add to the list.
Brian
From ianb at colorstudy.com Wed Mar 17 14:54:43 2004
From: ianb at colorstudy.com (Ian Bicking)
Date: Wed Mar 17 14:57:50 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <4058AD03.7080100@colorstudy.com>
Paul Boddie wrote:
> More self-promotion, but what do you think of the WebStack stuff I announced
> on PyPI?
It kind of opens all sorts of questions. For instance, it's not
unreasonable that Webware could run under mod_python or Twisted (I think
a mod_python version existed a long time ago, and I experimented with
running it under Twisted a while ago as well). (And Quixote already
does this in a less experimental fashion)
So, Quixote, or a more developed Webware, or a bunch of other
frameworks, could each be a kind of compatibility layer of their own.
Well, they *could*, but I don't think it's that easy. But why not? I'm
not up to figuring out quite why right now -- but I think it has to do
with fuzzy layers.
It seems natural that a framework could support one of several
underlying layers (e.g., Apache and Twisted). But the layers aren't
very firm (what's "underlying"?). Can Quixote work under Webware and
vice versa? Or something heavier, like Zope? And what does "work"
mean, anyway? Perhaps that a URL space is segmented off, delegated to a
subframework. Or by extension, ala Apache? What about the frameworks
intermediate work getting to that subspace, like if Zope authenticated a
person at a higher level in the URL?
I don't know... I don't think it's necessarily *that* hard. But we have
to think recursively somewhere in here, instead of layers -- we can only
build on lower-level layers for a while, at some point peers have to
work together in a friendly way. In this case that would mean running
Webware ontop of WebStack ontop of Twisted, or seemingly silly things
like that. But it's not really that silly, because I suspect it would
be fairly useful.
But I'm not exactly sure how reasonable it is -- maybe it would be
better to decouple frameworks and separate layers so that this doesn't
all have to be so vague, and so we can feel more confident in how things
will work together.
Ian
From amk at amk.ca Wed Mar 17 16:03:31 2004
From: amk at amk.ca (A.M. Kuchling)
Date: Wed Mar 17 16:06:29 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <20040317210331.GA19122@rogue.amk.ca>
On Wed, Mar 17, 2004 at 06:15:38PM +0100, Paul Boddie wrote:
> support to be rather irritating - FieldStorage is just one part of that -
> and sometimes one wonders if it's really possible to make a sane layer of
> functionality without undoing the dubious design decisions of various
> frameworks and then having to reimplement that sanity, afresh, on top.
I suspect that most web frameworks will bypass the 'cgi' module as much as
possible; it's too messy to deal with and too difficult to clean up.
I'm puzzled by the WebStack package. Why implement a layer of sanity on top
of various dubious frameworks, instead of just implementing that layer of
sanity directly? But then it's just another framework, and it becomes
apparent that definitions of sanity differ.
--amk
From paul.boddie at ementor.no Thu Mar 18 05:39:48 2004
From: paul.boddie at ementor.no (Paul Boddie)
Date: Thu Mar 18 05:39:54 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
Message-ID:
A.M. Kuchling [mailto:amk@amk.ca] wrote:
>
> On Wed, Mar 17, 2004 at 06:15:38PM +0100, Paul Boddie wrote:
> > support to be rather irritating - FieldStorage is just one part of that -
> > and sometimes one wonders if it's really possible to make a sane layer of
> > functionality without undoing the dubious design decisions of various
> > frameworks and then having to reimplement that sanity, afresh, on top.
>
> I suspect that most web frameworks will bypass the 'cgi' module as much as
> possible; it's too messy to deal with and too difficult to clean up.
Yes, I doubt that most people actually use the FieldStorage class to the
extent of its design; that is, the way that objects of that class can
presumably reside in hierarchies, given the MIME-based nature of HTTP
message bodies. On that front, it's important to distinguish between
"fields" which come from the URL and those which come from some part of the
message body; there have been various discussions about "merging GET and
POST parameters", but the different frameworks are pretty inconsistent on
this. Another disturbing aspect of FieldStorage is the usage of temporary
files and other seemingly "early Web Age" techniques.
> I'm puzzled by the WebStack package. Why implement a layer of sanity on top
> of various dubious frameworks, instead of just implementing that layer of
> sanity directly? But then it's just another framework, and it becomes
> apparent that definitions of sanity differ.
Well, when peeling back framework behaviour which seems errant, and
attempting to support BaseHTTPRequestHandler as a first-class framework, one
does almost start to implement one's own "sane" framework. Anyway, my
motivations should be clearly stated in the README.txt file, but my belief
was that most frameworks do most things in mostly the right way, and by
making use of those mechanisms and exposing them to applications in a
unified fashion, one doesn't have to care about which framework one is going
to be deploying on. Some people are wedded to the choice of certain
frameworks, either for practical or for ideological reasons, but that
doesn't mean that the applications available have to be divided up into
"exclusive", fragmented groups which then have to be ported between
frameworks as the need arises.
A side effect of this, given various oversights in various frameworks, is
that a library of knowledge and techniques can be built up both around each
framework and around the implementation of Web/HTTP mechanisms in general.
It's a bit like a code version of the Web Frameworks Overview but with stuff
you can play with. But really, I just want to be able to deploy things on
different frameworks, hopefully providing things like better URL-to-resource
mapping within applications - an area which often seems incoherent or just
poorly supported within today's frameworks. Whether it's possible to work
around every limitation at a higher level than the underlying framework
seems doubtful, but it's arguably better than slowly drifting towards an
agreement over a vague API specification that none of the framework
developers are interested in implementing anyway.
Paul
From paul.boddie at ementor.no Thu Mar 18 05:56:06 2004
From: paul.boddie at ementor.no (Paul Boddie)
Date: Thu Mar 18 05:56:11 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
Message-ID:
Ian Bicking [mailto:ianb@colorstudy.com] wrote:
>
> Paul Boddie wrote:
> > More self-promotion, but what do you think of the WebStack stuff I
> > announced on PyPI?
>
> It kind of opens all sorts of questions. For instance, it's not
> unreasonable that Webware could run under mod_python or Twisted (I think
> a mod_python version existed a long time ago, and I experimented with
> running it under Twisted a while ago as well). (And Quixote already
> does this in a less experimental fashion)
To me, running Webware on top of another framework seems only to have
deployment benefits, although one could easily say the same about WebStack.
However, Webware also ties the developer to a way of working which carries a
lot of semantic baggage - the servlet model, threading, and so on.
> So, Quixote, or a more developed Webware, or a bunch of other
> frameworks, could each be a kind of compatibility layer of their own.
> Well, they *could*, but I don't think it's that easy. But why not? I'm
> not up to figuring out quite why right now -- but I think it has to do
> with fuzzy layers.
Yes, one could argue that hiding the special parts of frameworks or
correcting the behaviour of such frameworks is the wrong solution to
whichever problem one is trying to solve.
> It seems natural that a framework could support one of several
> underlying layers (e.g., Apache and Twisted). But the layers aren't
> very firm (what's "underlying"?). Can Quixote work under Webware and
> vice versa? Or something heavier, like Zope? And what does "work"
> mean, anyway? Perhaps that a URL space is segmented off, delegated to a
> subframework. Or by extension, ala Apache? What about the frameworks
> intermediate work getting to that subspace, like if Zope authenticated a
> person at a higher level in the URL?
Actually, the issue here seems to be how deep your frameworks are. Most
Python frameworks seem to aspire to "deepness", covering everything from
socket communication right up to session management and application
semantics. What I'd rather see is a collection of layered frameworks and
components which each do their bit of the job. WebStack mostly sits above
the communications layer, using the existing frameworks for that layer and
reusing other parts of those frameworks for higher level features that
should arguably exist elsewhere.
Above WebStack should be components which interpret URLs, control access to
resources, and provide the application-level services. A counterexample of
such an architecture is "Zope plus Products": by the time a Product instance
gets hold of request information, a lot of the decisions about where that
Product instance resides in the URL space have already been taken, but
that's arguably the whole nature of Zope and the way it works and is just
one reason why some people don't really get on with Zope.
> I don't know... I don't think it's necessarily *that* hard. But we have
> to think recursively somewhere in here, instead of layers -- we can only
> build on lower-level layers for a while, at some point peers have to
> work together in a friendly way. In this case that would mean running
> Webware ontop of WebStack ontop of Twisted, or seemingly silly things
> like that. But it's not really that silly, because I suspect it would
> be fairly useful.
I'm not advocating a Web frameworks equivalent to User Mode Linux. ;-)
> But I'm not exactly sure how reasonable it is -- maybe it would be
> better to decouple frameworks and separate layers so that this doesn't
> all have to be so vague, and so we can feel more confident in how things
> will work together.
I'd certainly advocate such an approach instead, however.
Paul
From lucid at escex.com Fri Mar 19 11:57:40 2004
From: lucid at escex.com (Lucid Drake)
Date: Fri Mar 19 11:55:29 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To:
References:
Message-ID: <88740DF1-79C6-11D8-AEC9-000A95C48278@escex.com>
Less talk, more action.
At the risk of putting myself out there as all talk and no action, I
think it would be useful for those on this list that have a strong idea
about what should be added to the Python standard library, to post
something that people can play around with.
I am by no means an expert in the world of web programming, but I am
learning, and I do feel the need to have a better set of standard tools
in Python for developing web applications. I just don't have the
knowledge or expertise to develop something myself.
But what I've noticed is that there are spurts of activity on this
list, but no progress. Perhaps if someone actually coded something and
allowed others to play with it, some progress would be made.
I recall hearing the argument that whatever is developed shouldn't
break current frameworks, or force them into a model they don't want to
use. My question is, why would a new module break or force anything?
Won't the original modules still exist?
In addition, even if the new proposed way of doing things breaks a
framework, how long would it REALLY take for the framework to
accommodate the changes?
All this talk is going no where, what ever happened to experimentation?
Create something, test it, use it, stress it, and learn by doing. Less
abstract design and more progress through action please.
Am I right? Wrong? Not seeing the entire picture? Please, more
experienced developers/politicians chime in.
Thanks,
--Sean
On Mar 18, 2004, at 2:56 AM, Paul Boddie wrote:
> Ian Bicking [mailto:ianb@colorstudy.com] wrote:
>>
>> Paul Boddie wrote:
>>> More self-promotion, but what do you think of the WebStack stuff I
>>> announced on PyPI?
>>
>> It kind of opens all sorts of questions. For instance, it's not
>> unreasonable that Webware could run under mod_python or Twisted (I
>> think
>> a mod_python version existed a long time ago, and I experimented with
>> running it under Twisted a while ago as well). (And Quixote already
>> does this in a less experimental fashion)
>
> To me, running Webware on top of another framework seems only to have
> deployment benefits, although one could easily say the same about
> WebStack.
> However, Webware also ties the developer to a way of working which
> carries a
> lot of semantic baggage - the servlet model, threading, and so on.
>
>> So, Quixote, or a more developed Webware, or a bunch of other
>> frameworks, could each be a kind of compatibility layer of their own.
>> Well, they *could*, but I don't think it's that easy. But why not?
>> I'm
>> not up to figuring out quite why right now -- but I think it has to do
>> with fuzzy layers.
>
> Yes, one could argue that hiding the special parts of frameworks or
> correcting the behaviour of such frameworks is the wrong solution to
> whichever problem one is trying to solve.
>
>> It seems natural that a framework could support one of several
>> underlying layers (e.g., Apache and Twisted). But the layers aren't
>> very firm (what's "underlying"?). Can Quixote work under Webware and
>> vice versa? Or something heavier, like Zope? And what does "work"
>> mean, anyway? Perhaps that a URL space is segmented off, delegated
>> to a
>> subframework. Or by extension, ala Apache? What about the frameworks
>> intermediate work getting to that subspace, like if Zope
>> authenticated a
>> person at a higher level in the URL?
>
> Actually, the issue here seems to be how deep your frameworks are. Most
> Python frameworks seem to aspire to "deepness", covering everything
> from
> socket communication right up to session management and application
> semantics. What I'd rather see is a collection of layered frameworks
> and
> components which each do their bit of the job. WebStack mostly sits
> above
> the communications layer, using the existing frameworks for that layer
> and
> reusing other parts of those frameworks for higher level features that
> should arguably exist elsewhere.
>
> Above WebStack should be components which interpret URLs, control
> access to
> resources, and provide the application-level services. A
> counterexample of
> such an architecture is "Zope plus Products": by the time a Product
> instance
> gets hold of request information, a lot of the decisions about where
> that
> Product instance resides in the URL space have already been taken, but
> that's arguably the whole nature of Zope and the way it works and is
> just
> one reason why some people don't really get on with Zope.
>
>> I don't know... I don't think it's necessarily *that* hard. But we
>> have
>> to think recursively somewhere in here, instead of layers -- we can
>> only
>> build on lower-level layers for a while, at some point peers have to
>> work together in a friendly way. In this case that would mean running
>> Webware ontop of WebStack ontop of Twisted, or seemingly silly things
>> like that. But it's not really that silly, because I suspect it would
>> be fairly useful.
>
> I'm not advocating a Web frameworks equivalent to User Mode Linux. ;-)
>
>> But I'm not exactly sure how reasonable it is -- maybe it would be
>> better to decouple frameworks and separate layers so that this doesn't
>> all have to be so vague, and so we can feel more confident in how
>> things
>> will work together.
>
> I'd certainly advocate such an approach instead, however.
>
> Paul
>
> _______________________________________________
> Web-SIG mailing list
> Web-SIG@python.org
> Web SIG: http://www.python.org/sigs/web-sig
> Unsubscribe:
> http://mail.python.org/mailman/options/web-sig/lucid%40escex.com
>
From janssen at parc.com Fri Mar 19 15:16:07 2004
From: janssen at parc.com (Bill Janssen)
Date: Fri Mar 19 15:16:26 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
In-Reply-To: Your message of "Fri, 19 Mar 2004 08:57:40 PST."
<88740DF1-79C6-11D8-AEC9-000A95C48278@escex.com>
Message-ID: <04Mar19.121611pst."58611"@synergy1.parc.xerox.com>
> But what I've noticed is that there are spurts of activity on this
> list, but no progress. Perhaps if someone actually coded something and
> allowed others to play with it, some progress would be made.
Hear, hear! Although, I think that's really only interesting if
there's an associated PEP. There are plenty of things to play with --
I recommend Medusa and Twisted, for instance.
Bill
From paul.boddie at ementor.no Mon Mar 22 05:58:33 2004
From: paul.boddie at ementor.no (Paul Boddie)
Date: Mon Mar 22 05:58:44 2004
Subject: [Web-SIG] Shameless self promotion, and serious question.
Message-ID:
Lucid Drake [mailto:lucid@escex.com] wrote:
>
> Less talk, more action.
Ahem!
> At the risk of putting myself out there as all talk and no action, I
> think it would be useful for those on this list that have a strong idea
> about what should be added to the Python standard library, to post
> something that people can play around with.
Yes, that was my intention.
> I am by no means an expert in the world of web programming, but I am
> learning, and I do feel the need to have a better set of standard tools
> in Python for developing web applications. I just don't have the
> knowledge or expertise to develop something myself.
But that's alright. You're in a good position to give the more experienced
developers a reality check, to tell them what makes sense and what could be
made easier or more obvious.
> But what I've noticed is that there are spurts of activity on this
> list, but no progress. Perhaps if someone actually coded something and
> allowed others to play with it, some progress would be made.
Well, my contribution was really just letting people in on what I've been
playing with - something I find useful for my own purposes and which might
possibly be useful for others.
> I recall hearing the argument that whatever is developed shouldn't
> break current frameworks, or force them into a model they don't want to
> use. My question is, why would a new module break or force anything?
> Won't the original modules still exist?
That's why I've taken the approach to build on top of existing frameworks,
at least for the time being. Persuading the developers of existing
frameworks is likely to be quite hard because it involves them taking in
code that will lead to more maintenance for them, and since many people who
are up close to any given framework are likely to favour the particular
development styles and practices of that framework, they aren't likely to be
so interested in standardised, framework-neutral APIs that don't expose the
fancy features that they've been promoting.
> In addition, even if the new proposed way of doing things breaks a
> framework, how long would it REALLY take for the framework to
> accommodate the changes?
With WebStack it wouldn't matter - just bundle it with your application and
deploy on top of a supported framework.
> All this talk is going no where, what ever happened to experimentation?
> Create something, test it, use it, stress it, and learn by doing. Less
> abstract design and more progress through action please.
>
> Am I right? Wrong? Not seeing the entire picture? Please, more
> experienced developers/politicians chime in.
If you want something to play with and have some frameworks installed (or
even just have the standard library, since BaseHTTPServer counts as a
framework), try out WebStack:
http://www.python.org/pypi?:action=display&name=WebStack&version=0.2
I'm not suggesting that it's the right way or the best way, or even that the
API it uses could eventually be directly implemented by some framework or
other, as the layer of "translating" functionality between WebStack and such
a framework just melts away, but I think it does count as a possible
reference point that people can either identify with or distance themselves
from.
Paul