Re: [dispatch] Potential incoming work: web push for IMAP, CalDAV and CardDAV

Julian Reschke <julian.reschke@gmx.de> Thu, 24 October 2019 09:45 UTC

Return-Path: <julian.reschke@gmx.de>
X-Original-To: dispatch@ietfa.amsl.com
Delivered-To: dispatch@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4DB261207FE for <dispatch@ietfa.amsl.com>; Thu, 24 Oct 2019 02:45:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=gmx.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y-WZ_-MFzeDs for <dispatch@ietfa.amsl.com>; Thu, 24 Oct 2019 02:45:55 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5CF6D120024 for <dispatch@ietf.org>; Thu, 24 Oct 2019 02:45:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1571910347; bh=KTc63ShOB2+iRRaTLdpdQ8HDPFXE/G4mdLhFmxshsIM=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=bWCUO+tsvjhGnRdTYFM1AAoaIlDEdkCgem8B1lve/UeW+dnF4S7nkz943PGS/Vd1q QREcbCqs2VE+weYoCRDsa78lk1GMl74F6S8U4VSk8KVO3bBG2zpSRKux7INGfKvfr9 WtCdCvwv0tDs1TiP+WlLqkBE9gL+UpNuLmbF+b9w=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.34] ([217.91.35.233]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MA7GS-1iHUsz2iAU-00Bg8Q; Thu, 24 Oct 2019 11:45:47 +0200
To: Michael Toomim <toomim@gmail.com>
Cc: Bron Gondwana <brong@fastmailteam.com>, dispatch@ietf.org, Seph Gentle <me@josephg.com>, Rafie Walker <slickytail.mc@gmail.com>, Bryn Bellomy <bryn.bellomy@gmail.com>, greg little <glittle@gmail.com>
References: <290514e7-79ce-4852-bf05-a684e2e8d045@beta.fastmail.com> <DFC3797D-DA12-4470-9CBE-D7BD981DB6CE@gmail.com> <839ea4e5-db2d-8220-6058-93869a29c185@gmx.de> <82F33D05-D8BC-4F69-A198-677773F3427C@gmail.com> <11cabf2e-1550-53e5-60dd-7d1bdf65805a@gmx.de> <B1A18B63-B78A-4AE5-A164-A9CE0B13D326@gmail.com> <450f4113-7cdb-f65e-761d-9023e3d625bd@gmx.de> <CEECFFAD-ECAA-41FF-8817-4090DF694B27@gmail.com> <a89ee52b-306b-60ca-35a6-e912c2a2eb82@gmx.de> <34B388A2-50A7-4344-98B6-0D8B08E1277F@gmail.com>
From: Julian Reschke <julian.reschke@gmx.de>
Message-ID: <cb2a76b8-90ae-ada1-5a9a-835bb812ccff@gmx.de>
Date: Thu, 24 Oct 2019 11:45:43 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <34B388A2-50A7-4344-98B6-0D8B08E1277F@gmail.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:fcP9pG8Xq4HAjyojmxXMRbCbAgStOUVjdSnkBjdvsjqVMg3vCgS cEw2XBXwDNyaGEJGL4WbtL6/qStnRWk/PAs5aHIRLfloghwmHn3fOfhDpYpjDsHUu+XqsMn DXsidXDTKgwcoi3oZV6//ap9mf5Uw2i/0wI29Pr2D0heLrcwryTCHxsi7hyjllzaZFmBoeq d8aGMOG6k/F4ktyQQsp3A==
X-UI-Out-Filterresults: notjunk:1;V03:K0:buDduV+r8HU=:VAxYL2gu7CvZL8c/ySf2Sy IAhqNajN5Qdide7oo1D70Q9GOeMKZipf2TCJsN84RdMG2GSAXDt6tegTkXIfrYTnuaSzu2gHa 01HnE4jXNYE0Pcfn9L04awMWhYlCR4CtYbn9Hu0olacHlyrB5ltpLflqXBcvLWpkbxUUi/9GJ NsLGjzS5KIVz65wmnpQR50Nia5qMirABj6WeBO/FgI91t58cqbbsORmqUPSg7rqUDqooptbWI 3XWfoLcoWQweNIhsR/S0iEYpkd+OwhdyWUdr8bhUAM9VU/4bHmWwchjalB9OQDbnKHTRD8QZh 9cS30k6MvpHolKm6DXXGn5DIGndWnOuru8/1aw4an39jFP76sRawN1EBtlWHVgDoP28ZoTfuE xED7iWrIruwKKFyqk0iiifmCsP8ttlfN3W+MyBPBCI+Cb9zEcyt1NrUCr+i1QFrXPzYLshiFo I2SHip/+0+F5UIf0O5Q0KWVA2ULnvyg8RWLy7PExPK2WCplqeSqDECXCx8B2MxnR5uCtCsA6e WP5TrPTiJqGz8nY21KTJok1BWKeFvKvFk6XqcdsijSXc+xpvdGG0UiH9MDVC0TF2SgbEzqOnf BtlZMljNmAEIC9ZHsDsLM9LR3ww8JLGzh4wvr7OPCORfkDxWU+kBqeDUE54kEd2OaB6ootnu8 kEqOnVOL1wyti9B9hkX3jCno/hi4o/kh5ZA6RGlLTb0eizUE9j6VFC3PhS+RCbTMRDPAGcana rKc0AbfvoOhiDu8/a7PYzQdufGNdrHsZPT+dUruG8R9agMhinPvUPeEWYrni2rCSHv6EPeJdv lf06bz7y5b6YWCj+bXw7ziF5xN4o89iEeGWP/Lg/snivR5lZId1hZLQDTclTcHsDnOwuj0Ywm jFejRyj/d/rOqZxvq9IuSugO4jizUOdaby2IuaLjosxt3cI5728O93yZqm5rGrGNNTRYX1E/B 4cAIhjfSesma7bMYdtYp5UIUvNpzUsydzupWxMiwb0Z+H46F/LrD5KF/x5Bzy5mq9bqRYVyb/ dt0MNQpsEDJIRwziOT36ynzFj/JNN6x/aKuz9SkQ2wbpwcuU/h4o+3Fm0PwCjO5I1MZBAF/El Bv4aEVWQDBqnJtsrH9c1SSS2FGET/Q+jDX5j2I2b1wLRaANY5RKkgtwNzqikeVBqk6D7sFL4A Vsbwu+igFkJI6/06aWMmyJ4ssX2VX6MmKDOxXrFKDo5ACWiOUBQdsVrYLu6IumT1iGvfrmo2U pFoi5K0CEIOePAvOnj01j1Dc8iAT1pSpQAqEQJg4/+Xlkupv/aPUItzCW2cU=
Archived-At: <https://mailarchive.ietf.org/arch/msg/dispatch/QLZ4ErDZDQpKljOiBDQGNvDyy_I>
Subject: Re: [dispatch] Potential incoming work: web push for IMAP, CalDAV and CardDAV
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dispatch/>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Oct 2019 09:45:58 -0000

On 24.10.2019 11:34, Michael Toomim wrote:
> Thank you very much for your early comments!
>
> Julian:
>>
>> Hmm. I think you'll need to work on the proper labeling of things. Even
>> if the client opts into this format, the Content-Type will still have to
>> describe the overall payload.
>
> Hm, I think I see where you're coming from.  Here's the example in my mind:
>
> Request:
>       GET /animated-braid.gif
>       Subscribe
>
> Response:
>       OK 200
>       Subscribe
>       Cache-Control: no-cache
>       Patch-Type: braid-patch(bytes, sync9(array))
>       ---- Part 1
>       Content-Type: image/gif
>       Patch-Type: braid-patch(bytes, sync9(array))
>       Content-Length: 1239
>
>       [100:200] = <binary data>
>       ---- Part 2
>       Content-Type: image/gif
>       Patch-Type: braid-patch(bytes, sync9(array))
>       Content-Length: 62638
>
>       [348:887] = <binary data>
>
> I think you're saying that the Content-Type of each part should need to describe the BODY of each part.  Why is that necessary?  I would imagine that it would only impact a cache, but we rule out caches with no-cache unless they understand the patch format.

Not necessarily every part...

> It seems to me that the Content-Type *could* conceivably describe the semantic content of the resource, even though its updates are described with a particular Patch-Type.  Similar to how Range Requests don't change the Content-Type, even though they are only sending a small patch of the object in the BODY.
>
>> You're basically inventing a new payload format that can wrap multiple
>> payloads. But then we already have multipart/*; it really seems to me
>> you should be using that instead.
>
> I'm open to using multipart/*.  Are there any advantages to it?  It requires the sender to come up with a unique separator string, which means they need to scan all messages before choosing the separator to wrap them with.  It seems simpler to just use Content-Length: N to communicate how to break apart multiple messages, and as a bonus, you can stream the data and process just one message at a time.
>
> Thank you very much for your early comments!

And the end of the day, this is still HTTP. The response needs a media
type that describes the payload. You are defining a new payload format
that can handle multiple resources, so you need a container-like format.
multipart can do that, but I agree the mail format legacy with the
boundary string is sub optimal.

But then, sending Content-Length inside the payload is a bit weird as
well; it defeats streaming the part; you may want to consider a binary
container format instead (based on HTTP chunked, for instance).

Best regards, Julian