Last month I started a couple of threads about my intent to completely
rewrite our HTTP network protocol.
I had originally pushed very hard for writing an entirely new
standalone apache module (mod_svn), which could then provide support
for WebDAV and older clients by deferring requests to mod_dav_svn
running "behind" it. My idea was to model the svnserve protocol -- do
exactly one network turnaround for each RA function. My hope is that
this would give us speed somewhat close to svnserve.
On the plane out to Apachecon New Orleans, I had an opportunity to
really read ra_serf's code and understand what it's doing for each RA
function. I ended up persuading myself that if we can eliminate all
of the DeltaV "discovery" formalities (i.e. cut out all of the extra
PROPFINDs that precede so many different types of requests), we end up
with an HTTP protocol that's about 95% the same as what I would have
written from scratch anyway. Very sane and readable.
This is the point where cmpilato, gstein, jerenkrantz, and many others
all get to scream "I told you so". :-)
In any case, I had a late-night face-to-face design meeting with
{gstein, jerenkrantz, striker, pquerna, fitz} and as a group we worked
out all of the details of exactly how we want to change our existing
protocol. I'll be committing some massive updates to the
notes/http-protocol-v2.txt file very soon for everyone to look at. In
a nutshell, though: we're going to abandon DeltaV formalities and just
let the client *assume* the format of different types of URLs; the
client will be able to construct them all by itself.
Meanwhile, in the same spirit of abandoning DeltaV, we want to do
something we've been discussing doing for (literally) years:
annnouncing a completely open syntax for fetching (rev,path) objects
over HTTP. In the past, people have sort of figured out that
"!svn/bc/REV/path" is the sooper-sekrit syntax, but we've warned
people not to depend on it. No more of that. We'd like to officially
support what source-browsers and other tools have already been doing
for years:
path?r=REV
I already have a smallpatch for mod_dav_svn to support this, and look
forward to others' review of it. It's really quite a tiny change, so
I'd like to see it go out in 1.6 if nobody objects. I'll then have 6
months to do all the 'big' protocol changes for 1.7.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-11-05 17:45:57 CET