Re: Versions and configurations

Christopher Seiwald (seiwald@p3.com)
Wed, 29 May 1996 22:25:52 -0700


| Decorated URLs in the MKS style may suffice for the simple versioning
| needs. But I suspect we'll want to look at an additional HTTP method --
| call it SET_CONFIG -- to tell a server, "Now switch to serving the
| 'tables-no-frames' version of the pages."

Yikes.

Let me demur.  [ Hephaestus gloves on. ]

1)      As David Fiander points out, the example muddles content negotiation
        and versioning.  I fear that if we don't keep the two quite distinct,
        we'll have a hard time convincing people that version information
        belongs in a URL (because clearly content negotiation doesn't).

        As Larry Masinter notes, the above scheme requires state in
        conjunction with a URL, which (to me) defies the notion of a
        URL.

2)      I'm not sure that "configuration information" is distinct
        from "version information", if you don't limit "version" to be
        simply "revision" information.  That is,

                http://www.economist.com;version=May-4-1996

        can describe the whole configuration of The Economist's articles
        as of that date, while

                http://www.foo.com/something.html;version=1.2

        would pick out a particular rev of a single document.

        I don't see where lies the added value of a "configuration" over
        a versioned directory tree, but this could just be a problem
        with terminology.

David's example of http://www.economist.com leads me to another suggestion
for decorating a URL with version information: the pages on that site
are organized as http://www.economist.com/issue/_date_/_article_.  What
they've done is implemented poor man's version control, but they used
the name space (i.e. the URL) in an intuitive and natural way.

Three ways of making that a convention would be:

a.  The explict:  http://www.foo.com/a/b/version=_verions_/morestuff

    In this case, the version is identified by a specially marked path
    element.  The path element could be anywhere.

b.  The implicit: http://www.foo.com/_version_/morestuff

    Here the first element implicitly denotes the version.  This is a
    bit like the way Atria uses their view-extended path names: the
    first element is the view (which selects the the versions), and
    subsequent elements are interpreted according to that view.

c.  The hidden:   http://www.foo.com/a/b/_version_/morestuff

    Here the version, just as with The Economist, is simply an
    indistinguishable part of the path.  No one knows, except for
    the version-controlled server.

The nice part about embedding the version is that relative paths would
point to the same version across the whole document tree.  I think
that "tree * version = configuration", so it should satisfy people
who want full configuration selectability.

Christopher
----
Christopher Seiwald     P3 Software             http://www.p3.com
seiwald@p3.com          f-f-f-fast SCM          1-510-865-8720