[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r33398 - trunk/notes

From: Ben Collins-Sussman <sussman_at_red-bean.com>
Date: Thu, 2 Oct 2008 11:34:17 -0500

On Thu, Oct 2, 2008 at 11:16 AM, Justin Erenkrantz
<justin_at_erenkrantz.com> wrote:
> On Thu, Oct 2, 2008 at 8:06 AM, <sussman_at_tigris.org> wrote:
>> + XML is out : there's a huge performance penalty for producing and
>> + consuming it, which is why companies like Facebook and Google have
>> + released 'fast wire serialization' libraries like Thrift and
>> + Protocol Buffers. Unfortunately, these libraries require entire
>> + structures to be held in memory in order to serialize/deserialze
>> + them, and this isn't an option when dealing with something
>> + (potentially) infinitely large like an editor-drive.
>
> Then perhaps we should look at improving Thrift parsing to be streamy.
> I'd rather use a library than a custom serialization format - as you
> said, one of the goals should be used to make it simpler to
> understand. And, one of the ways to do that is to go "Learn Thrift"
> rather than read our custom (de)serialization code. =)
>
>> In the list of commands, all commands are assumed to be attached as
>> -?cmd=command to GET requests on the repository root URI, with the
>> -exception of {commit, ...}, which are attached to POST requests.
>> +?cmd=command to the request URI. Command parameters are all
>> +query-encoded (&parm=val), and optional parameters are listed in
>> +square brackets. Server response values are assumed to be in response
>> +bodies.
>
> So, a question is how much we want to push the HTTP envelope. But,
> doing query parameters is kinda lame from a performance standpoint.
>
> The diff kinda butchered it, but you had:
> ---
> get-latest-rev
>
> GET /repos[/path]?cmd=get-latest-rev
>
> response: revnum
> ---
>
> I'd rather see one of the following:
>
> ---
> GET-LATEST-REV /repos
> response: revnum
> ---
> or
> ---
> GET /repos/!svn/get-latest-rev
> response: revnum
> ---
>
> (I sort of prefer the latter, but could be convinced the former works too.)
>
> I think that args should be explicit in the URLs rather than then
> query strings, so get-dated-rev could be:
>
> ---
> GET /repos/!svn/get-dated-rev/<ISO date string>
> response: revnum
> ---
>
> Also:
> ---
> rev-proplist
>
> GET /repos[/path]?cmd=rev-proplist&rev=num
>
> response: proplist
> ---
>
> could be:
>
> ---
> GET /repos/!svn/<revnum>/props/rev
> response: proplist
> ---
>
> etc, etc, etc.
>
> My $.02. -- justin
>

Curious -- why do you prefer putting the "verbs" and parameters
directly into the path space, rather than having them as query
strings? I had chat about this topic with gstein in IRC, and he
seemed to prefer query-args.

Is there really any technical advantage to one style over another, or
is it just a bikeshed?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-02 18:34:39 CEST

This is an archived mail posted to the Subversion Dev mailing list.