Re: [braid] Re: New Version Notification for draft-toomim-httpbis-versions-00.txt
Michael Toomim <toomim@gmail.com> Thu, 25 July 2024 10:48 UTC
Received: by ietfa.amsl.com (Postfix) id 8C337C17C88A; Thu, 25 Jul 2024 03:48:49 -0700 (PDT)
Delivered-To: ietfarch-httpbisa-archive-bis2juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8B3BAC1519AA for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 25 Jul 2024 03:48:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.836
X-Spam-Level:
X-Spam-Status: No, score=-2.836 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, T_MIME_MALF=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=w3.org header.b="Bq5zEhoS"; dkim=pass (2048-bit key) header.d=w3.org header.b="m+D6g6z+"; dkim=pass (2048-bit key) header.d=gmail.com header.b="CPsaHckM"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SyjsRK3tMuNy for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 25 Jul 2024 03:48:45 -0700 (PDT)
Received: from mab.w3.org (mab.w3.org [IPv6:2600:1f18:7d7a:2700:d091:4b25:8566:8113]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 70C1AC151997 for <httpbisa-archive-bis2Juki@ietf.org>; Thu, 25 Jul 2024 03:48:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:In-Reply-To:From:References:Cc:To:MIME-Version:Date: Message-ID:Content-Type:Reply-To; bh=o6q5jkLAINJmA93S0Z9GSASSmvbu1q71BV6CbBo0jys=; b=Bq5zEhoS//zN6Q+aPfxSG92ByV sV0/1FAVhRCMrvpCScFj4IdY+hDetzTb68FnH5F87LEbrtyGyru37kIrUtdTBRY4acalWz6cWONCl sTdLcCIA4yQZAPVV5CjljYHszsd0FPjVM4zHJ3c9Z1K9IWtxaaqEsK6KgDObvyoN42luLK+yoa5PL gEfecKkT6vUIfj9TTvXt4xVBSp3YPNR9ortW0DEC3+9CVtfV5Bzo4m/YXLn4Dp+vE8oK8bQlBiWak JyeJuFxb79/QL9KoIN2glsmpnp7X1sR5oWPq2w7qJPP2n6auFaMgB16vhOiY0k2+Zwg+txjIrJbxk Z9aDij3Q==;
Received: from lists by mab.w3.org with local (Exim 4.96) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1sWw0q-006k1M-0x for ietf-http-wg-dist@listhub.w3.org; Thu, 25 Jul 2024 10:47:56 +0000
Resent-Date: Thu, 25 Jul 2024 10:47:56 +0000
Resent-Message-Id: <E1sWw0q-006k1M-0x@mab.w3.org>
Received: from ip-10-0-0-224.ec2.internal ([10.0.0.224] helo=puck.w3.org) by mab.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <toomim@gmail.com>) id 1sWw0o-006k0K-29 for ietf-http-wg@listhub.w3.internal; Thu, 25 Jul 2024 10:47:54 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Content-Type:Reply-To; bh=o6q5jkLAINJmA93S0Z9GSASSmvbu1q71BV6CbBo0jys=; t=1721904474; x=1722768474; b=m+D6g6z+MIwWcy60kCz7Z2TWCHqfU8Z20kIky94up14sSkfSg3GTDRXS2wfuKzyJ+XHUNambbFo gEUuv+7qXByBiXLRnjM5Iok7bE86wXGqqaJXan0fYLuJfqEzA6oHh54roON+swGvBIEUE457LiC3F FOTe5fJc+ZwVADaVKNWJVY0eFjJBaFdOiUqti/rHkOFNDV5ZnldTrCvxHblawHLaTf50YxWbUHvic JTV9sizn35PEwy6iyvR/p26xxiLozfI0dJ6NAF2qlV4zHDrNxa5/aHzBHdg3DU4PGrsiqe6prxe1u flFDW9yjRBExUcNEysJB7oJedkCnUn7iXkPw==;
Received-SPF: pass (puck.w3.org: domain of gmail.com designates 2607:f8b0:4864:20::536 as permitted sender) client-ip=2607:f8b0:4864:20::536; envelope-from=toomim@gmail.com; helo=mail-pg1-x536.google.com;
Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by puck.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <toomim@gmail.com>) id 1sWw0n-004OWP-1b for ietf-http-wg@w3.org; Thu, 25 Jul 2024 10:47:54 +0000
Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-7a0b2924e52so513585a12.2 for <ietf-http-wg@w3.org>; Thu, 25 Jul 2024 03:47:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721904469; x=1722509269; darn=w3.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=o6q5jkLAINJmA93S0Z9GSASSmvbu1q71BV6CbBo0jys=; b=CPsaHckM2lSBVSGqQIcx3f09+OfAuGwG+ZVidHP2RBJL1jaz3RmbxJN+sCP5Q8ghTz AY99EdnqYqB/b7BsUJf1f1raetLv2rR8D1//2A+VnHWSD0NZ1YXSbYo8Ze+c3HKpcr2+ 5ECXxkRNS+TUVMaykFwCnrSq0uRRraC7QT80duq21qwxdEjQrqcbiVIR3G0GMNviWL4Q 5wahA1eD4EbbV6v+l+IjUE7eNjzKmJCPyaUjJkZGicIGgCPAamvH1WP9J7qsyQH7yOUJ yHEcYy7PKswSznxrWqtQfryUDxcdOhD+WXgsWXX39zN6ZiuQNjaZiakVwWwrxpt8ojzd H9kw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721904469; x=1722509269; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=o6q5jkLAINJmA93S0Z9GSASSmvbu1q71BV6CbBo0jys=; b=nKan1cmcyfIEDLj9yNnBNeOGu2Y80bced2+YYgdvHwkrb72ybyxBYZfljdoZZB6cf2 8MI62YSVP6trAnIOblfraSHAi4OPaT27ZmYjunc7uT+i0gf2DnlDlT6wLCPAZogNNZm/ RwbEag+g6n7hAfRJ70944xhy3CRqUjVELYOHyNX3hnrRYzNrs1ZVEvCvEHZoavfxNAVr etBzu0OrhEXr11sQjXuCO9By7BrVTI0H41Xe9tUVdmlwocb8/p5LDhhQ/s2OIQiyXaMF D4cDk15lhU0tnJYrayIJrWxgf5adxtvMvMfq+AZ4Vai7zDqex1IUIsgbfqumG1jr7h6p s9Iw==
X-Gm-Message-State: AOJu0YzthJVPxrS1Y7Hle8xDwqmKl+TnkGfxCotQ1XqCKirupSDLz06x bEa44zUNRjLVG3YeZCRWDH00sT376JYGBVSwPxn4t4v+eb+3bUKg+/U35DorqSk=
X-Google-Smtp-Source: AGHT+IFa8M9Tv8SZkd8Jw88LaqkKOTcQr9SBpg0wkd2D4/sguKK05R4EteavnqPEpm/QCXYXvAem1w==
X-Received: by 2002:a05:6a21:78a8:b0:1c0:ee57:a9a3 with SMTP id adf61e73a8af0-1c472b2443dmr3297801637.35.1721904469244; Thu, 25 Jul 2024 03:47:49 -0700 (PDT)
Received: from [172.31.7.130] ([207.194.231.35]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fed7f78491sm11190375ad.244.2024.07.25.03.47.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 25 Jul 2024 03:47:48 -0700 (PDT)
Content-Type: multipart/alternative; boundary="------------GYqp15mlA0q6BTumidu2TlTB"
Message-ID: <7ba7da74-bac0-49af-b8e1-84a9678cb838@gmail.com>
Date: Thu, 25 Jul 2024 03:47:47 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Rory Hewitt <rory.hewitt@gmail.com>, Pierre Chapuis <catwell-gmail1@catwell.info>
Cc: HTTP Working Group <ietf-http-wg@w3.org>, Braid <braid-http@googlegroups.com>
References: <172046173132.445281.15041630415895010148@dt-datatracker-5f88556585-j5r2h> <ff54cd4f-c30e-4447-8744-3297e53b74be@gmail.com> <CAEmMwDxBnLtjRCasVz8ogz1c_Q=9XjYtpNu+sJ6UO==xO4QzJw@mail.gmail.com> <d713500c-c4db-4bf8-8096-edb0b5ff1751@gmail.com> <fdce4502-6888-4c27-bb14-c239e19e8771@app.fastmail.com> <CAEmMwDz6bUWbrXRo61XHJ9jmov8Cp8ochTEWDOdDCcHWDZk=yA@mail.gmail.com>
Content-Language: en-US
From: Michael Toomim <toomim@gmail.com>
In-Reply-To: <CAEmMwDz6bUWbrXRo61XHJ9jmov8Cp8ochTEWDOdDCcHWDZk=yA@mail.gmail.com>
X-W3C-Hub-DKIM-Status: validation passed: (address=toomim@gmail.com domain=gmail.com), signature is good
X-W3C-Hub-Spam-Status: No, score=-5.1
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, DMARC_PASS=-0.001, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, T_MIME_MALF=0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_DB=-1, W3C_WL=-1
X-W3C-Scan-Sig: puck.w3.org 1sWw0n-004OWP-1b 3d3fba6c8d28f9d2e54525ffe28efe4a
X-Original-To: ietf-http-wg@w3.org
Subject: Re: [braid] Re: New Version Notification for draft-toomim-httpbis-versions-00.txt
Archived-At: <https://www.w3.org/mid/7ba7da74-bac0-49af-b8e1-84a9678cb838@gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/52133
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
Well, the main reason for the Parents: header is to convey the shape of
the historical time DAG.
The scheme you propose here does not give *quite* the full information
on grandparents. Consider these two time DAGs:
DAG 1 has parents and grandparents:
a1 a2
| |
| |
b1 b2
\ /
c
DAG 2 has the grandparenting flipped:
a1 a2
\ /
/ \
b1 b2
\ /
c
These are different DAGs, but they'd produce the same Parents: header in
your scheme:
Parents: "b1", "b2":1; "a1", "a2":2
So I don't think this scheme is yet an improvement.
If your goal is to have a convenient way to request a span of history,
might I suggest doing a HEAD request on the span:
HEAD /foo
Parents: "a1", "a2"
Version: "c"
The server will respond with an outline of the time DAG:
HTTP/1.1 104 Multiresponse
HTTP/1.1 200 OK
Parents: "a1"
Version: "b1"
HTTP/1.1 200 OK
Parents: "a2"
Version: "b2"
HTTP/1.1 200 OK
Parents: "b1", "b2"
Version: "c"
This lets you access the DAG without downloading any patches or resource
contents.
Cheers!
Michael
On 7/22/24 10:13 PM, Rory Hewitt wrote:
> Hey Pierre,
>
> Actually, I kinda WAS talking about my (mis)understanding that the
> Parents header could contain both parents and grandparents...
>
> That being said, if the Parents header can ONLY contain direct
> parents, that seems like a (possibly significant) limitation.
>
> Would it not be an improvement to allow the header to contain a list
> of ancestors back to whatever level the server feels is appropriate or
> retains information, complete with level information (ancestor level):
>
> Parents: "parent1","parent 2":1;
> "grandparent":2;"greatgrandparent1","greatgrandparent2","greatgrandparent3";3
>
> This indicates two parents (level 1), a single grandparent (level 2)
> and 3 great grandparents (level 3).
>
> This could be compared with a similar Parents header for another
> object to determine where differences may be found, and how far back.
>
> Maybe this is getting too far into the weeds - this was, as I noted,
> based on my misunderstanding, which Pierre obviously understands is a
> possibility.
>
> I guess my primary point is that in finding a balance between brevity
> and flexibility, a design that is able to specify detailed information
> is better, even if that detailed information is often elided or ignored.
>
> With these fairly 'generic' header names like Version and Parents, the
> ability to use them to (in theory) 'build' a history of a file and
> compare with a later, earlier or 'sibling' file send very useful...
>
> But I defer to the smarter minds here - I am a mere tinkerer and may
> well have gotten too deep too early.
>
> Rory
>
>
> On Mon, Jul 22, 2024, 8:04 PM Pierre Chapuis
> <catwell-gmail1@catwell.info> wrote:
>
> Hello Michael,
>
> regarding the "version and parents headers" ordering issue Rory
> mentioned, I don't think he was talking about the case where one
> version descends the other one.
>
> The fact that you say this has very strong implications:
>
> > Any version can be recreated by first merging its parents, and
> then applying the its update onto that merger.
>
> It either means there cannot be conflicts between parents - or in
> other words that conflict resolution is deterministic, commutative
> *and* associative (like CRDTs), or that updates must always
> contain the conflict resolution of their parents like Git.
>
> That last solution also means updates can be rejected by the
> server if its history is incoherent, and comes with its own
> issues. The way Git works is that conflict resolution is always
> performed with human intervention on pull, not on push.
>
> I know Braid has answers to this (Merge Types) and you are trying
> to break up the spec here, but it is not surprising that if you
> have a spec that says "versions can have several parents and you
> can merge them" people are going to wonder how.
>
> --
> Pierre Chapuis
>
> On Tue, Jul 23, 2024, at 00:30, Michael Toomim wrote:
>>
>> Rory, thanks for these excellent thoughts! It's exciting to see
>> other people digging into the versioning problem with us. :)
>>
>> Responses:
>>
>> *== Versioning with ETag ==*
>>
>> You make a good point that ETag headers, like the proposed
>> Version header, are opaque strings that can be formatted to
>> express additional information if we want to. This is true for
>> both ETag and Version:
>>
>> ETag: "Sat, 6 Jul 2024 07:28:00 GMT"
>> Version: "Sat, 6 Jul 2024 07:28:00 GMT"
>>
>> ETag: "v1.0.2"
>> Version: "v1.0.2"
>>
>> We propose articulating the structure of these version ids using
>> a Version-Type header. You could, for instance, use
>> "Version-Type: date" for the first example, and "Version-Type:
>> semver" for the second.
>>
>> The main problem with ETag, though, is that it marks *unique
>> content* rather than *unique time*. If you mutate the state of
>> the resource from "foo" to "bar" and then back to "foo", you'll
>> revert to the same ETag, even though this is at a different point
>> in time. This breaks collaborative editing algorithms.
>>
>> Finally, I'll note that your claim that ETags don't have to be
>> sensitive to content-encoding is only true for *weak* ETags.
>> Strong ETags must change whenever the byte sequence of the
>> response body changes. This means they should be sensitive to
>> content-encoding. RFC9110 is also explicit that they depend on
>> content-type:
>>
>> > A strong validator might change for reasons other than a
>> change to the representation data, such as when a
>> semantically significant part of the representation metadata
>> is changed (e.g., Content-Type)
>> https://datatracker.ietf.org/doc/html/rfc9110#section-8.8.1
>>
>> Consider the case where a user edits a markdown resource:
>>
>> PUT /foo
>> Content-Type: text/markdown
>> Version: "mike-99"
>>
>> # This is a markdown file
>>
>> Hello world!
>>
>> And the server then shares this as HTML:
>>
>> GET /foo
>> Accept: application/html
>>
>>
>> HTTP/1.1 200 OK
>> Content-Type: application/html
>> Version: "mike-99"
>>
>> <html>
>> <body>
>> <h1>This is a markdown file</h1>
>> <p>Hello world!</p>
>> </body>
>> </html>
>>
>> Using the Version header, we're able to express that these are
>> two representations of the resource at the same point in time.
>> You can't do this with a strong ETag.
>>
>> *== Version and Parents headers ==*
>>
>> I think there's been a miscommunication here. The reason there
>> are multiple version IDs in the Parents header is for edits that
>> happen *in parallel*, not for edits that happen in sequence. This
>> is to represent a version DAG:
>>
>> a <-- oldest version
>> / \
>> b c
>> \ /
>> d <-- current version
>>
>> In this example, the current version "d" would have:
>>
>> Parents: "b", "c"
>>
>> This is not allowed:
>>
>> Parents: "d", "b"
>>
>> Because of this language in the spec:
>>
>> For any two version IDs A and B that are specified in a
>> Version or
>> Parents header, A cannot be a descendent of B or vice versa. The
>> ordering of version IDs within the header carries no meaning.
>>
>> Good question!
>>
>> *== Client-generated Version IDs on PUT ==*
>>
>> Yes, there would be a problem if two clients generate the same
>> version IDs for two different PUTs. Then the versions would not
>> be unique!
>>
>> However, requiring the server to generate versions is only one
>> possible solution— and is a solution that requires a server. We
>> also want to support distributed p2p systems, which don't have
>> servers.
>>
>> In these systems, it's quite common for clients to generate
>> version IDs. There are two common ways to solve this problem:
>>
>> 1. Use a large random hash space so that collisions are
>> extremely unlikely. This works well enough for git, for instance.
>> 2. Each client gets a unique ID, possibly by coordinating with a
>> server, and then versions are constructed by concatenating
>> "<client-id>:<counter>" for each client.
>>
>> Does this all make sense?
>>
>> Again, good questions, and I am glad to see this interest in the
>> topic! I think we can do a lot with it!
>>
>> Michael
>>
>> On 7/17/24 2:56 PM, Rory Hewitt wrote:
>>> Hey Michael,
>>>
>>> A few thoughts...
>>>
>>> First, I agree that the concept of versioning hasn't been
>>> thought about enough, and this is definitely a 'good idea (TM)'.
>>>
>>> However, I have a few concerns:
>>>
>>> *1.1.2 Versioning with ETag*
>>>
>>> Because ETags are, by definition, unformatted, while it's
>>> true to say that you often can't rely on them to establish a
>>> version, that's entirely dependent on the format chosen by the
>>> user. An ETag *could* validly be specified as a date:
>>>
>>> ETag: "Sat, 6 Jul 2024 07:28:00 GMT"
>>>
>>> or as a version number:
>>>
>>> ETag: "v1.0.2"
>>>
>>> or as a random string:
>>>
>>> ETag: "Michael is cool"
>>>
>>> IOW, it's totally possible for a site that cares about
>>> versioning to use a format that specifies a version number. I
>>> recognize this isn't *necessarily* the case, but it helps to be
>>> clear here. It should be noted that many web servers that
>>> include the creation of ETags natively (e.g. Apache) include an
>>> effective version as part of the ETag.
>>>
>>> Likewise ETags don't *have* to be sensitive to encoding -
>>> there's nothing to stop a server from sending the exact same
>>> ETag for two differently-encoded copies of the same underlying
>>> resource. It's just that they typically do.
>>>
>>> None of this is to say that ETags are better or worse than you
>>> describe - just to say that they *can* be better than they are.
>>>
>>> *2.3 Version and Parents headers*
>>>
>>> You state that the Parents header can include multiple parents
>>> (parents, grandparents, great-grandparents?) and provide an example:
>>>
>>> Parents: "ajtva12kid", "cmdpvkpll2"
>>>
>>> and then say "Any version can be recreated by first merging its
>>> parents, and then applying the its update onto that merger."
>>> (Nit: additional "the" in this sentence). However, you also say
>>> that the order of the values in a Parents header makes no
>>> difference.
>>>
>>> Maybe I'm missing something, but in this scenario, how could
>>> that work? Using your example above, here are two possible
>>> scenarios:
>>>
>>> * Version "ajtva12kid" is earlier. Version "cmdpvkpll2" is later
>>> and contains an additional section of HTML
>>> * Version "ajtva12kid" is earlier and contains a section of HTML
>>> which is removed in the later "cmdpvkpll2" version
>>>
>>> If you merge the two parent versions, then does the outcome
>>> (onto which you will apply the update) include that section of HTML?
>>>
>>> I guess it just makes sense to me to have the order in the
>>> Parents have some meaning - whether oldest first or last. Or you
>>> could specify that both Version and Parent values must be integers.
>>>
>>> 2.4.3 PUT a new version
>>>
>>> This seems like it could lead to either race conditions or some
>>> other issue with duplicate Version values. Surely it's better to
>>> have the client submit a new version of a resource (passing the
>>> Parents header but *not* passing the Version header) and have
>>> the server, which is presumably the prime source of versioning
>>> truth, calculate a version (perhaps after retrieving other PUT
>>> requests from other clients) and return that value in the
>>> Version response header?
>>>
>>> I see you discuss this later with the Current-Version header, so
>>> perhaps you covered this and my old eyes missed it.
>>>
>>> Rory
>>>
>>>
>>> On Mon, Jul 15, 2024 at 6:31 PM Michael Toomim
>>> <toomim@gmail.com> wrote:
>>>
>>> Hi everyone in HTTP!
>>>
>>> Last fall we solicited feedback on the Braid State
>>> Synchronization proposal [draft
>>> <https://datatracker.ietf.org/doc/html/draft-toomim-httpbis-braid-http-04>,
>>> slides
>>> <https://datatracker.ietf.org/meeting/118/materials/slides-118-httpbis-braid-http-add-synchronization-to-http-00>],
>>> which I'd summarize as:
>>>
>>> "We're enthusiastic about the general work, but the
>>> proposal is too high-level. Break the spec up into
>>> multiple independent specs, and work bottom-up. Focus on
>>> concrete 'bits-on-the-wire'."
>>>
>>> So I'm breaking the spec up, and have drafted up the first
>>> chunk for you. I would very much like your review on:
>>>
>>> *Versioning of HTTP Resources*
>>> draft-toomim-httpbis-versions
>>> https://datatracker.ietf.org/doc/html/draft-toomim-httpbis-versions-00
>>>
>>> Versioning is necessary for state synchronization—and occurs
>>> in a range of HTTP systems:
>>>
>>> * Caching
>>> * Archiving
>>> * Version Control
>>> * Collaborative Editing
>>>
>>> Today, HTTP has resource versions in the Last-Modified and
>>> ETag headers, and sometimes embeds versions in URLs, like
>>> with WebDAV. Each of these options serves some needs, but
>>> also has specific limitations. An improved general approach
>>> is proposed, which provides new features, that could enable
>>> cool new applications, such as incrementally-updated RSS
>>> feeds, and could simplify existing specifications, such as
>>> resumeable uploads, and history compression in OT/CRDT
>>> algorithms.
>>>
>>> I would love to know if people find this work interesting. I
>>> think we could improve performance, interoperability, and be
>>> one step closer to having Google Docs power within HTTP URLs.
>>>
>>> Michael
>>>
>>
>> --
>> You received this message because you are subscribed to the
>> Google Groups "Braid" group.
>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to braid-http+unsubscribe@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/braid-http/d713500c-c4db-4bf8-8096-edb0b5ff1751%40gmail.com
>> <https://groups.google.com/d/msgid/braid-http/d713500c-c4db-4bf8-8096-edb0b5ff1751%40gmail.com?utm_medium=email&utm_source=footer>.
>
- Fwd: New Version Notification for draft-toomim-ht… Michael Toomim
- Re: New Version Notification for draft-toomim-htt… Rory Hewitt
- Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: New Version Notification for draft-toomim-htt… Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: [braid] Re: New Version Notification for draf… Rory Hewitt
- Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Marius Kleidl
- Re: New Version Notification for draft-toomim-htt… Julian Reschke
- Re: New Version Notification for draft-toomim-htt… Michael Toomim
- Re: [braid] Re: New Version Notification for draf… Michael Toomim
- Re: [braid] Re: New Version Notification for draf… Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Fwd: New Version Notification for draft-toomi… Julian Reschke
- Re: Fwd: New Version Notification for draft-toomi… Josh Cohen
- Re: Fwd: New Version Notification for draft-toomi… Lisa Dusseault
- Re: Fwd: New Version Notification for draft-toomi… Michael Toomim
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim
- Re: Fwd: New Version Notification for draft-toomi… Josh Cohen
- Re: Review of draft-toomim-httpbis-versions-00 Ben Schwartz
- Re: Review of draft-toomim-httpbis-versions-00 Michael Toomim