Re: [Jmap] Benjamin Kaduk's Discuss on draft-ietf-jmap-core-14: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Fri, 22 February 2019 17:09 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: jmap@ietfa.amsl.com
Delivered-To: jmap@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0420D130F1C; Fri, 22 Feb 2019 09:09:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Level:
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=mit.edu
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 nNitOmeAnLMH; Fri, 22 Feb 2019 09:09:28 -0800 (PST)
Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-co1nam04on072c.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4d::72c]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D6FAF130F14; Fri, 22 Feb 2019 09:09:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UWUTxYi/yog/Wm6wRvPeTo4c00modGMqJhubS37dn2M=; b=vNW6cQDuJ7peuTJuS8xTO1/96HpwzOxX/6J/PBEWe/xU+2pqzMHmrQp5pvhkVWAz185miTkZHP8MXcJ/XCwYnKONC73DPzKnGUba9/maaw+oHytnm4iUsYnyD2M+mVehCXlpkl+1xyTE8AMhB9s/I9JHkdSWaY+Kio7KfUti2CE=
Received: from SN6PR0102CA0035.prod.exchangelabs.com (2603:10b6:805:1::48) by BN8PR01MB5601.prod.exchangelabs.com (2603:10b6:408:be::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb 2019 17:09:26 +0000
Received: from DM3NAM03FT040.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e49::204) by SN6PR0102CA0035.outlook.office365.com (2603:10b6:805:1::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.18 via Frontend Transport; Fri, 22 Feb 2019 17:09:25 +0000
Authentication-Results: spf=pass (sender IP is 18.9.28.11) smtp.mailfrom=mit.edu; ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=bestguesspass action=none header.from=mit.edu;
Received-SPF: Pass (protection.outlook.com: domain of mit.edu designates 18.9.28.11 as permitted sender) receiver=protection.outlook.com; client-ip=18.9.28.11; helo=outgoing.mit.edu;
Received: from outgoing.mit.edu (18.9.28.11) by DM3NAM03FT040.mail.protection.outlook.com (10.152.83.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.13 via Frontend Transport; Fri, 22 Feb 2019 17:09:24 +0000
Received: from kduck.mit.edu (24-107-191-124.dhcp.stls.mo.charter.com [24.107.191.124]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id x1MH9K0U015229 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Feb 2019 12:09:22 -0500
Date: Fri, 22 Feb 2019 11:09:20 -0600
From: Benjamin Kaduk <kaduk@mit.edu>
To: Alexey Melnikov <aamelnikov@fastmail.fm>
CC: The IESG <iesg@ietf.org>, brong@fastmailteam.com, draft-ietf-jmap-core@ietf.org, jmap-chairs@ietf.org, jmap@ietf.org
Message-ID: <20190222170920.GA69562@kduck.mit.edu>
References: <155072687005.20308.1288342758446844678.idtracker@ietfa.amsl.com> <CEF846E0-DB3C-49DE-8649-B591AEA0B45D@fastmail.fm>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CEF846E0-DB3C-49DE-8649-B591AEA0B45D@fastmail.fm>
User-Agent: Mutt/1.10.1 (2018-07-13)
X-EOPAttributedMessage: 0
X-Forefront-Antispam-Report: CIP:18.9.28.11; IPV:CAL; SCL:-1; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(39860400002)(346002)(396003)(136003)(376002)(2980300002)(199004)(189003)(50466002)(229853002)(966005)(26826003)(8936002)(46406003)(7696005)(66574012)(4326008)(23726003)(1076003)(53416004)(97756001)(8676002)(76176011)(88552002)(5660300002)(305945005)(33656002)(246002)(2906002)(478600001)(786003)(446003)(36906005)(11346002)(476003)(486006)(86362001)(106466001)(16586007)(956004)(6916009)(316002)(126002)(6246003)(426003)(58126008)(106002)(336012)(47776003)(186003)(104016004)(26005)(54906003)(356004)(75432002)(55016002)(53546011)(6306002)(14444005)(18370500001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN8PR01MB5601; H:outgoing.mit.edu; FPR:; SPF:Pass; LANG:en; PTR:outgoing-auth-1.mit.edu; A:1; MX:1;
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 0762730e-08bf-47fb-e338-08d698e87f4e
X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060); SRVR:BN8PR01MB5601;
X-MS-TrafficTypeDiagnostic: BN8PR01MB5601:
X-MS-Exchange-PUrlCount: 1
X-Microsoft-Exchange-Diagnostics: 1; BN8PR01MB5601; 20:DAtmHngctvusMjMsWoZ4YVVBeS8GYAp3tbRclU+gFLpIHiOiJdTi4ZdXto8KYi8HH1Irn1fcP+Mlqz94IsPOdabLl9e01M39VHT2LUR+juPzMdojQEUcyuRIAoa92mQdGJdauvtMkdIMJ6dJAQS/9hai1n36mj/TyniCp/PnkuCWpJNhdNMgGqOsfykxZUJkRWUiSheDf5rZ75kqI/OMV7ILbD5GDKq2eu5UCBCfdIOjohiw48D8TfEJRiQMWtrSq2t6wedeSlfZmfUYX4s3od/W2Kg3rnjMEt9kLb7yQO+z/Ey2QN+YkjDvRqRQxcrT0Fm7iXFlyVx/0RyLhClpefRFuY18XGGcf/D7wKUvZaEtZHFnHXE/PDdzhnFRrBqIJ3LZ3AmkuEodxPhQcR4zTnl/WiLo7Xja9GWjYrWc0M37WnEW8G4BGVbCanmqQI7lArHVewrOhqAHR8THiYkP7D/qxEXDwHWvThnYanQo5LNrJsT1OqM2Adol7Gb62wNLwvC5LEePKkQuuiPdbNrDicczC6k9daHu9pWaD9V6jPWmE5MNc1raCOkvdE6Nu8fW0D5kkShPMVw4z31LEIDk8PxL4soL0i0ngF4J2/f0MAg=
X-Microsoft-Antispam-PRVS: <BN8PR01MB5601766BA8DEFB345F4C1C47A07F0@BN8PR01MB5601.prod.exchangelabs.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: 1; BN8PR01MB5601; 23:7nsabRY1Ipr+WGE7xlU9gO7gnymrsfTNIcLtnGqwS59bnbH1ro7zAzZU+l48TRIwYvQqfFgA6PG5nook234QoFNAIp1GrGUKwwY98EYauXzOsZhhNw7TAz5+tqEiPGLqA8VfiX1ICW9oaIrYRBo8wUXFF81f4/IMYGZF3fa5nvsL5q3Grja6EPbopEO4RDP7B0GW06ufKcmw2e6sPYLObKw6XSocCvrnR1Ag0ciJ5jaY/2k+BJ/TqYlp7CdK0pmevCx3XftXkjMXPeZe8PLe7DYCRLL75JycC1e8QSb3pjVR9t5BFU9WNK/aR1a1Kc0tMvL8hCTT5NUJInn17YgBMPD72pY0VYd8WVJV4kUMzCGcCvM5rNxjfh2C8SGXRlGSGYQvqJturszInhLYf6XvTzgxhb4p68PqT5+7xm6Bn71fFDjdwHkAkcFhvJ/cPcA2zGBdEP6TDAriovRjE27G/idDR0LrBeE8xLsWv9Uk5uRsnpEj5oGRSETQWc8hmkMtRrt/MIpxsXSXU90n7Mq3JWgJbooIaRlesuxHNdS6ZWZ0VLBF5LlAJwEne7S25P3hzoMar2ImK3klupeAIAnRVp6xJyTzt3SvZQOYDgYCtdH1+FhyBcrk7YMUgmnxhNCtXVJq8bbyy9rMi/UBkhWgkCUws1/nCoYdwba+AySay2veZZBF525p8rgz6Z/5H+Lxu80Y7ghoIaWMq9a4CZNcy93UTYiuyrt2X1fFmjdboyKfpdjJqNMcGzYaOu7mMPdicywP5xudt0Zn48zW5XnyamC+WF6yhNrwBJ0YC4/Qlxug54meL9jeYQipVOPy+xvVOu8PjNHN7HFDoY2LCRcj1gOEBtlbcXsoqxYFrDzWOqbc4eNw/Bz7Ihsqlk6oXCDp+HqaA07Ilgvy34VA0YEES0evjv67Bzv9JBAuv0GWZyjtClj5bo/Sma5Zy5sGfQTc5n/jeawgQb+6mvYtkX6zqx4s4MzqpI5YN+H1AqPFytmGsk9a9MXOgMA8rvaKiNVUP1Pj0qv3PqMR5c9b7dAOw/n7RdC1TdjKdXESVSNHOyF6Ucp8ktLdZ4oefF8TpoBFjRucmqqhp6qYjUC6Hfd7MLcbNHdi9Go6+QDjMZpmttVgQRSaULmXlorNFaa9mbgFlaXy+QUjohgAoRnxwLIincx5/HPFAajjPHLF3SjsUibUHQX1Ku6sm3qmGpohUEOP+iugPyP9YX2hOeRsyu2ebqLygqCP8L79wT/TDBN1o+2CoLP6VJ75FhxHbyH3mU0t5CjCUQSFlS/pc406h+9ET6OW3XuqumNIdybOOq0C5MI=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: ssZ08BNBoaWrvVcd8UiWFwZTdsPXZJqLt7OUvnTBDnTbuMf0gj9XJYKbXBLqfxQnkH87eR83+8pwNl6DAuGIHWOb2OGJVfDiyyekycBwCvcqPKC04A5hHvIenXxe/SvP+bz68fqr+DU8g93m62tV8CZDprEFzVZXLx9n8keDdIcwEnZgRpaH8S4aHOt9wuwC6kGcPfVjsD5McrDYMuSXQjYdyt75/qNh6rdJA/rmpvgXWIVmqcZpqb4YY9FNbNgJrWO+l2oPbP2d/WmliLsENZV/ZGXfLd5EmyAWFddq0PgvyXxbJ4tcDSRHiHfdUwZQIJvMewPGgU8dvzCpUGuuIQ8oSQDk2trcXaJBxcoewN8nJQH1hegTty3JbtbvMoq6j4cLrIjv9I9L0k78t84+D2JzyPU+6+LoLWHzWo2sQ4Y=
X-OriginatorOrg: mit.edu
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 17:09:24.9300 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0762730e-08bf-47fb-e338-08d698e87f4e
X-MS-Exchange-CrossTenant-Id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=64afd9ba-0ecf-4acf-bc36-935f6235ba8b; Ip=[18.9.28.11]; Helo=[outgoing.mit.edu]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR01MB5601
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/Sii9C4zhFQT1Y9JW06pjXUwxL6A>
Subject: Re: [Jmap] Benjamin Kaduk's Discuss on draft-ietf-jmap-core-14: (with DISCUSS and COMMENT)
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: JSON Message Access Protocol <jmap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jmap>, <mailto:jmap-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap/>
List-Post: <mailto:jmap@ietf.org>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jmap>, <mailto:jmap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Feb 2019 17:09:31 -0000

On Thu, Feb 21, 2019 at 09:11:40AM +0000, Alexey Melnikov wrote:
> Hi Benjamin,
> Thank you for your extensive comments.
> 
> In this email I will concentrate on [most of] your DISCUSS points:
> 
> > On 21 Feb 2019, at 05:27, Benjamin Kaduk <kaduk@mit.edu> wrote:
> > 
> > ----------------------------------------------------------------------
> > DISCUSS:
> > ----------------------------------------------------------------------
> > 
> > There's a lot here, and I was not reading in the best of environments,
> > so it's quite possible that I am just confused or missed something while
> > reading.  On the whole, this document is well-written and gives me a
> > good picture of how things work.  That said, there are still some places
> > where it looks like we may need to have some discussions...
> > 
> > This document (twice) has a MUST requirement for HTTP over TLS, which
> > seems to exclude any future usage of HTTP/3 over QUIC.  (It's also
> > probably not needed to repeat the normative requirement in two places; I
> > noted both in the COMMENT section.)
> 
> I think requiring a specific version of HTTP and underlying transport is right. Future versions of HTTP and different transports like QUIC are different mappings and I think would need a separate document, even if a short one.
> 
> Having said that, if you can show some specific wording that would address your concern, the WG should consider.

My original thought was something about "MUST use TLS transport or
transport that provides equivalent cryptographic protections", but that's
subject to interpretation.  Is there a reason why we can't just require the
https:// scheme?  While I haven't been following as closely as I would
like, my understanding was that QUIC's HTTP/3 would continue to use that
scheme.

> > Section 1.6.2 asserts that "all data belong to a single account".  And
> > yet, we seem to have PushSubscription objects in Sections 7.2.1 and
> > 7.2.2 that disclaim any relationship to an account, which seems
> > internally inconsistent.  It's also unclear to me from the text in the
> > latter sections what mechanism is used to determine whether a given
> > request is authorized to see a given PushSubscription object.  Is it
> > supposed to be based on the authentication credentials to the API
> > service directly, or a user abstraction, or something else?
> 
> Editors should reply to this.
> 
> > 
> > Section 5.3
> > 
> >   Some records may hold references to other records (foreign keys).
> >   That reference may be set (via create or update) in the same request
> >   as the referenced record is created.  To do this, the client refers
> >   to the new record using its creation id prefixed with a "#".  The
> >   order of the method calls in the request by the client MUST be such
> >   that the record being referenced is created in the same or an earlier
> >   call.  The server thus never has to look ahead.  Instead, while
> > 
> > I think this means you need to specify what order the server does the
> > create, update, and destroy lists in -- that is, that all creates are
> > done before all updates, etc..
> 
> I think you misunderstood: the order is important and all operations are performed in the order specified (so there is no internal reordering to be done by the server). If the client references something that wasn't yet created, it is a client error and will be reported accordingly.

Okay, so the client gets to pick which order the 'create', 'update', and
'delete' arguments appear, and the server must do everything in order, both
the order within the contents of the 'create' array and amongst
create/update/delete?  That is certainly deterministic enough for me,
though I didn't see much in the text to give the impression that the
order in which arguments appeared was relevant, especially since we claim
to be using I-JSON and RFC 7943 says "the order of object members in an
I-JSON message does not change the meaning of an I-JSON message".

> > Section 5.5
> > 
> > The Unicode Collation Algorithm (<http://www.unicode.org/reports/tr10/>
> > is not listed in the IANA collation registry for internet application
> > protocols; since the session object limits the collationAlgorithms to
> > those in the registry, at present, it is not permitted to use that
> > collation algorithm.  It would seem that this document should stimulate
> > the registration of that collation algorithm in some fashion (whether by
> > explicitly doing so in its IANA Considerations or otherwise).
> 
> I think this is fair. 
> > 
> > Section 7.1
> > 
> >   o  *changed*: "Id[TypeState]" A map of _account id_ to an object
> >      encoding the state of data types that have changed for that
> >      account since the last StateChange object was pushed, for each of
> > 
> > I don't see how these semantics provide the properties stated in Section
> > 7, "[i]t doesn't matter if some push events are dropped before they
> > reach the client; it will still get all changes next time it syncs."  In
> > particular, if the client misses a state change for the CalendarEvent
> > type, and then no other changes that affect CalendarEvents occur, the
> > client will remain unaware of the changes to CalendarEvents, even if
> > other push notifications for other types come in.  Am I misunderstanding
> > one or more of the behavior or stated guarantees?
> 
> I think you do. Clients will periodically poll. Once they do, they will be able to recover all missing notifications due to use of sequence numbers.

Er, you think that I do understand correctly?
We should probably mention the expectation of polling (as well as
subscribing to pushes), then.

-Benjamin