Re: [Jmap] Adding the Message::isForwarded property

"Chris Newman" <chris.newman@oracle.com> Mon, 10 April 2017 23:38 UTC

Return-Path: <chris.newman@oracle.com>
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 93847124C27 for <jmap@ietfa.amsl.com>; Mon, 10 Apr 2017 16:38:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.202
X-Spam-Level:
X-Spam-Status: No, score=-4.202 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 98TQpETNL0Nj for <jmap@ietfa.amsl.com>; Mon, 10 Apr 2017 16:38:09 -0700 (PDT)
Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1CA55128B93 for <jmap@ietf.org>; Mon, 10 Apr 2017 16:38:09 -0700 (PDT)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v3ANc66c027560 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Apr 2017 23:38:06 GMT
Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v3ANc5XN015761 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Apr 2017 23:38:06 GMT
Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id v3ANc4X7018776; Mon, 10 Apr 2017 23:38:05 GMT
Received: from [10.145.239.165] (/10.145.239.165) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Apr 2017 16:38:04 -0700
From: Chris Newman <chris.newman@oracle.com>
To: Neil Jhaveri <njhaveri@apple.com>
Cc: Benoit Tellier <btellier@linagora.com>, Alexey Melnikov <alexey.melnikov@isode.com>, "jmap@ietf.org" <jmap@ietf.org>
Date: Mon, 10 Apr 2017 16:38:02 -0700
Message-ID: <D0072AC9-71DC-4831-A3DA-FEA4A7B85BBA@oracle.com>
In-Reply-To: <C88A669A-2143-4FC2-81EF-3C9A2CD5963B@apple.com>
References: <148716911729.17277.15371202023742081890.idtracker@ietfa.amsl.com> <b7ec34d3-3aaf-82af-3663-5b0966c83ff0@dcrocker.net> <b5753f7f-92f9-50dd-42f0-ce0de7360e08@linagora.com> <A9EDBE7D-4E3D-45C2-BB97-F74AC9DB9486@oracle.com> <9eb1fd3c-8868-9d24-6c30-46d333b69fef@isode.com> <3c1711a2-46dd-db1c-506e-5e1ad89ce56d@linagora.com> <92769755-62c6-7257-ce3d-7d0b5699735d@isode.com> <27c62cc8-68e0-49b5-4900-34c26d7b4c6a@linagora.com> <C88A669A-2143-4FC2-81EF-3C9A2CD5963B@apple.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Mailer: MailMate (1.9.6r5347)
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/2tJvBsJzXpDkaw_A5PWlqz9cFqg>
Subject: Re: [Jmap] Adding the Message::isForwarded property
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.22
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: Mon, 10 Apr 2017 23:38:11 -0000

On 9 Apr 2017, at 17:08, Neil Jhaveri wrote:
> I seem to be on the minority side here, but I personally do see the 
> appeal in **isForwarded** being a first-class property. This is a core 
> part of many modern client UI's showing a list of messages. If I had 
> never used IMAP before, it would definitely seem weird and incongruent 
> to me that answered is a property, but forwarded is a keyword, and it 
> would probably cause some momentary confusion trying to figure out how 
> to know if a message was forwarded or not.

System flags and keywords have largely identical syntax and behavior in 
the IMAP data model and are all searchable.

So the fact that JMAP is introducing a special data model for system 
flags that's different from the syntax for keywords seems odd to me. Why 
can't JMAP treat all flags/keywords as peers in the data model; the way 
IMAP does?

The only significant difference between flags and keywords in the IMAP 
base spec is that servers are not required to support keywords. One of 
the design flaws in IMAP is it's too permissive of server variations 
that make it harder to write clients. When the majority of deployed IMAP 
servers support a feature (providing support for a minimum number of 
extensible keywords being an example), I'm supportive of making JMAP 
require that feature. So adding a clause that requires JMAP servers to 
support at least X extensible keywords (maybe X=32 or X=64) is a change 
I would support.

> If there does end up being more support for this, I could see an 
> argument for drawing a line in the sand on the most important 
> keywords, and maybe upgrading $Junk/$NotJunk and $Phishing into 
> first-class properties too. Other keywords like $SubmitPending and 
> $Submitted seem to have their use cases handled quite differently in 
> JMAP with the Outbox concept, so could be left alone in a raw keywords 
> property.

 From my viewpoint, differences between the IMAP data model and JMAP 
data model are added complexity to the email infrastructure unless 
there's a justification for making a change. So I'd prefer to leave the 
line between system flags and registered keywords where it is unless 
there's a compelling reason to change it. Otherwise we have to modify 
the keyword registry to distinguish ones that are treated differently in 
JMAP from IMAP.

> I think it’s a stylistic question, though, and not a functional one. 
> Consensus so far seems to be against this, and I think either way is 
> probably fine, but I do personally support the more OOP-like 
> first-class property, where it makes sense and is cleaner to the 
> newcomer.

The extensibility of a data model is one of the most important parts of 
a protocol's design. I consider JMAP severely deficient if its 
extensibility model for flags/keywords is inferior to the one in IMAP. I 
also consider JMAP deficient if it can't largely share the extension 
registries for IMAP keywords/metadata/annotations and the extension 
registry for the SMTP Submission protocol.

		- Chris