Re: New Version Notification for draft-toomim-httpbis-versions-00.txt

Rory Hewitt <rory.hewitt@gmail.com> Wed, 17 July 2024 21:57 UTC

Received: by ietfa.amsl.com (Postfix) id 6306BC15170B; Wed, 17 Jul 2024 14:57:26 -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 622A4C1516E0 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 17 Jul 2024 14:57:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.857
X-Spam-Level:
X-Spam-Status: No, score=-2.857 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_SCC_BODY_TEXT_LINE=-0.01, 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="K1A7Y01U"; dkim=pass (2048-bit key) header.d=w3.org header.b="qAQx1YvU"; dkim=pass (2048-bit key) header.d=gmail.com header.b="kO1A9f8E"
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 CDz91xS7Gmec for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 17 Jul 2024 14:57:22 -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 51988C151556 for <httpbisa-archive-bis2Juki@ietf.org>; Wed, 17 Jul 2024 14:57:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:Content-Type:Cc:To:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To; bh=sya15IeXQSds8A/pp6PCFVPZIhkivtbSKk4l33NDqY4=; b=K1A7Y01UcNDxou9e+zKwxuLf1s eZhDdU8pr9WlE7vyAPlQ7ilZo4yTNZw2uKDXemvFN3aos3yxFa/i03v8QU7MyUPDPiCHijrkfmFbO 2vgm59LjnqPm+A15iza5wWLxd0zs5MknYT3s7ZU8tqjQ2/g6kXiOc7PK1Gc8WB/gelkax+q6mtHNj 9gfl6jd6u+oUNN2wNgJg9YgOBYZwa+SK9QGTgI7wCoNAlDT3ZeM0ZdgP0A6Al/cJY99Yrf+N5G7YE UFYCq8a1P+UUinra3xyyaITdWyywS37mvhIgs1yhVW7ExmQ6jMcrjWtkEa2sQIyCrITUJpih3G2bR XYLNtl+Q==;
Received: from lists by mab.w3.org with local (Exim 4.96) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1sUCdK-005DGL-04 for ietf-http-wg-dist@listhub.w3.org; Wed, 17 Jul 2024 21:56:22 +0000
Resent-Date: Wed, 17 Jul 2024 21:56:22 +0000
Resent-Message-Id: <E1sUCdK-005DGL-04@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 <roryhewitt@gmail.com>) id 1sUCdI-005DFL-25 for ietf-http-wg@listhub.w3.internal; Wed, 17 Jul 2024 21:56:20 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To; bh=sya15IeXQSds8A/pp6PCFVPZIhkivtbSKk4l33NDqY4=; t=1721253380; x=1722117380; b=qAQx1YvU27n5qfYAaGFO5ZlXUKeD/rwgYxrdlACY5MM+MUv1MNzIBp6k8NFHYzdNymz8i+1gBUY U2LRNx68TWcCOOC06vDFjF3yEnul8xAyLyVwSEOZAC1pcjNOD2DB3lCg4SoLZ7D+dqnf25KYuMYCd x88GOv2rc07oImYbSMhTL4mjdozZmQuJqqR0JRpRZpDpbXt/FTVL0vsY8NtdKvJludpLrYlrN9kJX D4SwAWF+65dg0kBkbmYkP5gWxMMjOm21X2Kjwjx8QRuIVNnQUGL4Y/lCZwU2jvaLrk44M+yRrvmE4 o6x9MV2muvTQzIHuedz5xagewlED3pCLi0Dw==;
Received-SPF: pass (puck.w3.org: domain of gmail.com designates 2a00:1450:4864:20::32a as permitted sender) client-ip=2a00:1450:4864:20::32a; envelope-from=roryhewitt@gmail.com; helo=mail-wm1-x32a.google.com;
Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by puck.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <roryhewitt@gmail.com>) id 1sUCdH-001lQx-2u for ietf-http-wg@w3.org; Wed, 17 Jul 2024 21:56:20 +0000
Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-427b1d4da32so7478595e9.0 for <ietf-http-wg@w3.org>; Wed, 17 Jul 2024 14:56:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721253376; x=1721858176; darn=w3.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sya15IeXQSds8A/pp6PCFVPZIhkivtbSKk4l33NDqY4=; b=kO1A9f8E3DKFv+wBRFUlG2rew29xreNLJsnvuwisBktOlDsm6WiPegdAECGiOlNI+P CbKtHk+LqqtEQ4Ygt21CXcj1SzMCwcCFH4KOfpEdYBfx9np2W+U0qCy8bS5EccW0JKhN JSHkolymZTaZJHbRb9X/S41T7ibFUo5vAdS8Fj+X+gTYoV1ntXKu5AIzbrCbBNYiVClp /p3okcQdDT8lU7Uxf6vQotVGWjI/FSLYlBmbe0CB2xwWLv4kvjpuWnskRCGgZG+SLEQN 4B/3UIN973HfOjV8R/so968OpRLyZoUHIKXTZrGdj+rIFi/YvCt0lVdKOJSP1qTGCpvK 0zhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721253376; x=1721858176; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sya15IeXQSds8A/pp6PCFVPZIhkivtbSKk4l33NDqY4=; b=ittnILZ89LGE2yTMeAAbeCOsuOUWFn3bwCRSPBzNPKreyO219rMP5Pde0sFa50Aif4 5MErM7bpAzbxNguCdn2waA22pKl3gZYbmJT5slvNglDkaLP+lHypyayXNizHYxc/G4S4 t7pQBhQ9oA6uwBCMoSmAJytAW7S0nwz41C1/g9I8gSkQwSKBaxDJMwk49oCyDx/hM9xh RnFvwUGoseOUjSYmXg5kku5KiCsSWFnie4sousBoAODpyixm8PxMnEzULEsNErxXAzfS TqnffKEgzt0YrNgGIrMP4nS7Z8lFrXAK+Z+Y0Ft9UrWsQw0cp4HtezBnUT9XvEEG3F5g NO3w==
X-Gm-Message-State: AOJu0YwR5lK2fUyAcl4BXMg/95FfosP+V+dMak0ztOEN2s6MOPICyUnH mJwMx77wLA8wZvKCPORe7rQhjFAKJtojzs3+soSQDjLWnm8XUHLvK90paHoRIIV716hoYPlzLkq L3j3q89VrsqA+ZlMmJcs+E1xSTVA=
X-Google-Smtp-Source: AGHT+IF0DAmH/oCoaow+FsMbYLyq0X05ItMgP2itIPICw3dQf+O/uSErG+DOw79DyE9V14Lik/q27zvyuuSGdsjSc+M=
X-Received: by 2002:adf:fa02:0:b0:367:8fd9:db6b with SMTP id ffacd0b85a97d-3684b387d14mr656067f8f.9.1721253375435; Wed, 17 Jul 2024 14:56:15 -0700 (PDT)
MIME-Version: 1.0
References: <172046173132.445281.15041630415895010148@dt-datatracker-5f88556585-j5r2h> <ff54cd4f-c30e-4447-8744-3297e53b74be@gmail.com>
In-Reply-To: <ff54cd4f-c30e-4447-8744-3297e53b74be@gmail.com>
From: Rory Hewitt <rory.hewitt@gmail.com>
Date: Wed, 17 Jul 2024 14:56:04 -0700
Message-ID: <CAEmMwDxBnLtjRCasVz8ogz1c_Q=9XjYtpNu+sJ6UO==xO4QzJw@mail.gmail.com>
To: Michael Toomim <toomim@gmail.com>
Cc: HTTP Working Group <ietf-http-wg@w3.org>, Braid <braid-http@googlegroups.com>
Content-Type: multipart/alternative; boundary="00000000000002ed30061d7888c0"
X-W3C-Hub-DKIM-Status: validation passed: (address=roryhewitt@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, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_DB=-1, W3C_WL=-1
X-W3C-Scan-Sig: puck.w3.org 1sUCdH-001lQx-2u f1518907ca54fcae80c06aea22e372e3
X-Original-To: ietf-http-wg@w3.org
Subject: Re: New Version Notification for draft-toomim-httpbis-versions-00.txt
Archived-At: <https://www.w3.org/mid/CAEmMwDxBnLtjRCasVz8ogz1c_Q=9XjYtpNu+sJ6UO==xO4QzJw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/52078
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>

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
>