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

Neil Jhaveri <njhaveri@apple.com> Mon, 10 April 2017 00:09 UTC

Return-Path: <njhaveri@apple.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 B79A312751F for <jmap@ietfa.amsl.com>; Sun, 9 Apr 2017 17:09:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.3
X-Spam-Level:
X-Spam-Status: No, score=-4.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
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 X_M4XuSy_q4W for <jmap@ietfa.amsl.com>; Sun, 9 Apr 2017 17:09:03 -0700 (PDT)
Received: from mail-in6.apple.com (mail-out6.apple.com [17.151.62.28]) (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 4A516127866 for <jmap@ietf.org>; Sun, 9 Apr 2017 17:09:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1491782940; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=EyW2sl08/upzqS/CvvsvWZAyBkS5Hrl31nFkBv83l+I=; b=rymFx9J3CfJbzjPpwCQTmZN+4TVB7wbziPLB4qhOH1y3ocdGcj3ZIGJTbHnjwD0H AJ4uglEcm2B+7zWtRSo6D2wD+y0swkyX1hn34kJFYlrLKcrwkKYdVliWqp0IvgsZ hUwiGujiR3e+jWEKdsNJPiRvK95qGHMwsPCO+voVlCDWjXNh/bSBMIlrxBboNzDC BKKQfG+Jz//AZu/6hVuU8w4B8MxgCoxhN76gN+QQzi4cYNb0ymnr8ryIrDp9NqUl X3qNG3JzFSpBWP0A4hajxooY6qJJMMLa+GFasZ2aJhvTJ/FJOjOSxQzxY+x00T+O 7L1wv5302me03TJBGB8/zA==;
Received: from relay8.apple.com (relay8.apple.com [17.128.113.102]) by mail-in6.apple.com (Apple Secure Mail Relay) with SMTP id FB.D9.29635.C1DCAE85; Sun, 9 Apr 2017 17:09:00 -0700 (PDT)
X-AuditID: 11973e15-3419d9a0000073c3-7e-58eacd1c727b
Received: from mailex13.apple.com (nwk-mbx16p-w02.pex.exch.apple.com [17.146.17.21]) (using TLS with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client did not present a certificate) by relay8.apple.com (Apple SCV relay) with SMTP id 53.AA.07296.C1DCAE85; Sun, 9 Apr 2017 17:09:00 -0700 (PDT)
Received: from nwk-mbx16p-w01.pex.exch.apple.com (17.146.17.20) by nwk-mbx16p-w02.pex.exch.apple.com (17.146.17.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.32; Sun, 9 Apr 2017 17:08:59 -0700
Received: from nwk-mbx16p-w01.pex.exch.apple.com ([17.146.17.20]) by nwk-mbx16p-w01.pex.exch.apple.com ([17.146.17.20]) with mapi id 15.01.0669.032; Sun, 9 Apr 2017 17:08:59 -0700
From: Neil Jhaveri <njhaveri@apple.com>
To: Benoit Tellier <btellier@linagora.com>
CC: Alexey Melnikov <alexey.melnikov@isode.com>, Chris Newman <chris.newman@oracle.com>, "jmap@ietf.org" <jmap@ietf.org>
Thread-Topic: [Jmap] Adding the Message::isForwarded property
Thread-Index: AQHSrFqZUamWuQglA0y5SBdM0Bf22qG0Vv2AgAAJKoCAARNPgIAAQM4AgAAI8QCACHy7AA==
Date: Mon, 10 Apr 2017 00:08:59 +0000
Message-ID: <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>
In-Reply-To: <27c62cc8-68e0-49b5-4900-34c26d7b4c6a@linagora.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [17.153.40.233]
Content-Type: multipart/alternative; boundary="_000_C88A669A21434FC281EF3C9A2CD5963Bapplecom_"
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrIIsWRmVeSWpSXmKPExsUi2FCYpitz9lWEwe+ZRhYzVhdZzFi3it3i ePMrJove+zPYHFg8liz5yeRxqtnQ49//7YweH5/eYglgieKySUnNySxLLdK3S+DKOLSEpeDM BcaKRQ9nsjcwtp9m7GLk5JAQMJE4vf4/O4gtJLCPUaLpthhMfNeav0A1XEDx9UwSmzZ9ZYZw 2pkk9r9vZYFwtjNK/L7whK2LkYODTUBdYvO5NJBuEQEtiS+/+1lBbGaBKomrE4+xgdjCAjYS L+9/YYGosZXY9rWVEcIOk+ifcIsZxGYRUJW4s2Uq2EW8QPWXDz1khdh1gFlixb6ZYEWcAg4S B1/vBlvAKCAm8f3UGiaIZeISt57MZ4J4QUBiyZ7zzBC2qMTLx/9YIWwdibPXn0C9ryjxa8NM JpD7mQUSJLa9VoDYKyhxcuYTsB8lBHaxS3RMfMwygVFyFpIVsxBaZiFpgQhrSqzfpQ9RrSgx pfshO4StIdE6Zy6U7Shx6Nd2RmQ1Cxg5VjEK5SZm5uhm5pnpJRYU5KTqJefnbmIEpYHpdqI7 GM+ssjrEKMDBqMTDG1D9KkKINbGsuDL3EKM0B4uSOK/6kucRQgLpiSWp2ampBalF8UWlOanF hxiZODilGhjNa3m69FenmbanCNixHyxQeqFd6SyjUHZxPvOugBT2x+bNUireB8PkJht+u7U5 nzFjSfAxy+57ywQ3R3xtO/+go8ZQy36pYZvcCdP0JLabV9KqTc6erOhiyK1lNj359MWEjR+0 bwW0Vd1vmWd5JGXOrnWNEYnM8YeZS1fFrD70/+EvbmUjRyWW4oxEQy3mouJEAHIgmHPkAgAA
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrDKsWRmVeSWpSXmKPExsUiOElQVFfm7KsIg3cv5CxmrC6ymLFuFbvF 8eZXTBa992ewObB4LFnyk8njVLOhx7//2xk9Pj69xRLAEsVlk5Kak1mWWqRvl8CVcWgJS8GZ C4wVix7OZG9gbD/N2MXIySEhYCKxa81fIJuLQ0hgPZPEpk1fmSGcdiaJ/e9bWSCc7YwSvy88 Yeti5OBgE1CX2HwuDaRbREBL4svvflYQm1mgSuLqxGNsILawgI3Ey/tfWCBqbCW2fW1lhLDD JPon3GIGsVkEVCXubJnKDmLzAtVfPvSQFWLXAWaJFftmghVxCjhIHHy9G2wBo4CYxPdTa5gg lolL3HoynwniBQGJJXvOM0PYohIvH/9jhbB1JM5efwL1pqLErw0zmUDuZxZIkNj2WgFir6DE yZlPWCYwis1CMnUWQtUsJFUQYU2J9bv0IaoVJaZ0P2SHsDUkWufMhbIdJQ792s6IrGYBI8cq RoGi1JzESgu9xIKCnFS95PzcTYygyG0oTNvB2LTc6hCjAAejEg9vQPWrCCHWxLLiytxDjBIc zEoivG4ngUK8KYmVValF+fFFpTmpxYcYJzICw3Ais5Rocj4wreSVxBuamBiYGBubGRubm5jT UlhJnPf64ucRQgLpiSWp2ampBalFMEcxcXBKNTDuCsvas/m9rLUcp/+1awa5TE+iTp+c8+T8 1jZJtzcN9W5VYgf8We90Om5kc/p6d6pVS0Dm68wY6yUhnMo3/pumXZi2doaK3f7eZby1body Xt2OX/Kx+Py2ujdZl9kyF7/1krRZrlGYfq6oRqlK9dvNn9ov9Q5OFYk1/bB1a+/TJXGhZbtK 765XYinOSDTUYi4qTgQAp0kB6U8DAAA=
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/sRzoYTQthA0JOEOwKQt_Ym4XsjE>
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 00:09:06 -0000

On Apr 4, 2017, at 7:32 AM, Benoit Tellier <btellier@linagora.com<mailto:btellier@linagora.com>> wrote:


Hi Alexey,

Thanks for your answer.

Le 04/04/2017 à 21:00, Alexey Melnikov a écrit :

Hi Benoit,

On 04/04/2017 11:08, Benoit Tellier wrote:

Hi,

Thanks for your answers. How do you plan to access such registered keyword, if it is not made somehow a message property?

It has to be a message properly. For example "keywords" which contains an array of other IMAP keywords as strings. I have other applications that need to access to other keywords, some of which are listed on <https://www.iana.org/assignments/imap-keywords/imap-keywords.xhtml><https://www.iana.org/assignments/imap-keywords/imap-keywords.xhtml>
I agree that a **keyword** property is cool.

However, I would go a bit further. Rather than creating a message property having a special meaning for the Forwarded feature, I would make it a top-level message property. That is why I proposed to add a **isForwarded** message property.

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.

I also see the dilemma of having to play catch-up with every new registered keyword becoming a supplemental property.

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.

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.

As a JMAP user I would like this to be very easily accessible from the Message object, and also it to be searchable.

Agreed.


In the case of $Forwarded I think it needs to be consistent with the reply feature, for automatically marked as forwarded, and for threads.

I wouldn't mind having some extra logic for forwarded messages, if the group can agree on that.

Best Regards,
Alexey


Cheers,

Benoit Tellier

Le 04/04/2017 à 00:43, Alexey Melnikov a écrit :
On 03/04/2017 18:10, Chris Newman wrote:

IMAP $Forwarded is a registered keyword and thus a fully supported part of IMAP:

https://www.iana.org/assignments/imap-keywords/imap-keywords.xhtml#imap-keywords-1

There's no need for JMAP to define all these registered keywords; it only needs to reference the registry.
Agreed. And at the Chicago face-to-face meeting I've raised the issue of lack of generic access to IMAP keywords in JMAP. I believe there was room agreement to fix it in a generic way.


        = Chris

On 3 Apr 2017, at 2:13, Benoit Tellier wrote:

Hello,

At Linagora, we tend to consider **forward** information as important
for the email we care about.

Today, it is not part of the RFC-3501 spec, and many IMAP
implementations handle it with the de-facto standard $Forwarded flag.

This implicit standard is a bad thing, and we truly would like the JMAP
mail protocol to do this right. To be right, it should be explicit.

We then propose this pull request:

It reproduces the behavior of **answered** feature:

 - Adds a **isForwarded** message property
 - Adds a mechanism for automatically marking messages as forwarded upon
sending emails
 - Clarifies interactions between isForwarded and threads
 - Makes isForwarded searchable

Does this proposal make sense to you?

Best regards,

Benoit Tellier
-----------------------------
Software engineer at Linagora
PMC on Apache JAMES


Le 01/04/2017 à 06:23, Dave Crocker a écrit :
G'day,

The working group meeting discussion about a static message, dynamic
annotation, etc., resonated with a variety of similar discussions I've
been around over the years (dating back to the mid-1970.)

A simpler version equates the constructs of message and document, as
two views of the same thing.  (Ie, Document with attributes; Message
with a body.)

The essence is to consider the nature and relationship of the objects,
possibly permitting different semantics for the same set of objects,
according to different applications or roles.

That is, there can be a variety of constituent objects that are
associated and can be viewed according to different semantics (or
views)...  So a message, a document, a calendar entry, a series of
comments, etc.  Each object has associated processing rules (eg,
static vs. editable vs. executable; constrained choice of values;
organization into folders or other schemas...)

An environment like this can  be powerful and very appealing. The
challenge tends to be staying practical:  With no effort at all it
devolves into an abstract computer science exercise.  Some of that is
an efficiency issue(*) but I think it's mostly about the human
manageability for design and operations.

Based on both the years of commercial use and the public commentary
about the performance, I've no doubt the fastmail system does not
suffer these downsides.  But it's a potential that this re-casting
through the IETF could easily suffer.

I'm posting this note partly because I think it would exciting to
produce specs that permit a degree of flexibility that such an
approach permits, but also wanted to cite the dangers.

At the moment, I'm guessing there needs to be a small number of basic
object types and a small number of 'relationship' types that define
the association between objects.  These could then be combined into
higher-order, formal organizations/semantics the define an application
semantic (mail, calendar, whatever.)


d/

(*) A system I did in 1977 has a little bit of this and the extremely
pure design produced impressively horrible performance.


_______________________________________________
Jmap mailing list
Jmap@ietf.org<mailto:Jmap@ietf.org>
https://www.ietf.org/mailman/listinfo/jmap

_______________________________________________
Jmap mailing list
Jmap@ietf.org<mailto:Jmap@ietf.org>
https://www.ietf.org/mailman/listinfo/jmap




_______________________________________________
Jmap mailing list
Jmap@ietf.org<mailto:Jmap@ietf.org>
https://www.ietf.org/mailman/listinfo/jmap