Re: [Jmap] simpler future release & unsend without outbox (was Re: Best vs Good enough - adoption of JMAP)

Neil Jenkins <neilj@fastmail.com> Mon, 08 May 2017 06:00 UTC

Return-Path: <neilj@fastmail.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 061D8124281 for <jmap@ietfa.amsl.com>; Sun, 7 May 2017 23:00:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.019
X-Spam-Level:
X-Spam-Status: No, score=-0.019 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fastmail.com header.b=AwU9rOJY; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=RKg8OISM
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 jl8r27pAgnkt for <jmap@ietfa.amsl.com>; Sun, 7 May 2017 23:00:20 -0700 (PDT)
Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B22EB126CBF for <jmap@ietf.org>; Sun, 7 May 2017 23:00:20 -0700 (PDT)
Received: from betaweb1.internal (betaweb1.nyi.internal [10.202.2.10]) by mailout.nyi.internal (Postfix) with ESMTP id 2452720864; Mon, 8 May 2017 02:00:20 -0400 (EDT)
Received: from betaweb1 ([::ffff:10.202.2.10]) by betaweb1.internal (MEProxy); Mon, 08 May 2017 02:00:20 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=9RO3fgFzSzy5vM9KmaLZJB21Q2PXz FrmEKE1PzYbUBY=; b=AwU9rOJYDXPPuyzfrTaJIjGb/r3AdFYHA0dppRVqSVj3E 2uFjvvb5gSLnsTMknYD+yD+Ko6hoawIRZKJzwe75z5DON6nCDOarRCKefgUlXzSe dn8W4bY9TjAAbsJAWcjRnUIb1gjGS+kYq7sc4QO2dORcc3mF2CKbeW+T0IO7Kyg4 /9HcrMI2UNw8riCYXEbbpTPrC8k7zMMkCasTJbN8WvDeDcdAsLQrZaKcVyKDYkjH j9ojQg1PAP3RVchZlQwN3tD997WbcPVUKCBGmikGOBL6mNfFmQlqLaqOjIOqQ7Y1 vElsUbvAMLbI83Xb7LZP0QIGV3KiNQSEPMzhxExIw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=9RO3fg FzSzy5vM9KmaLZJB21Q2PXzFrmEKE1PzYbUBY=; b=RKg8OISMw5yRKT3R1GbPLK 8SAfuE8N7aC0Y/9cCrTgMSod5JYE53Ms8NkC1W/03+F4sw/1XNA2iWxthhnQExJk kWXu98v1vjhXgZLqXC5jKpFg1TxZgnhuVUrLyJuWqqln61qaOGLC/TzLeZg4ZxWK kt0nu4kMK8mQYhOwN+KdRHlA0SDn31+uvow/HY2stF07VBOJGBi8p4T56QsKte/E WoOaoc48pvoRmkahEEGtvbTHevV3B3VGd6R/zO8UBkkmozbAMgz/1pomHxsuaw3T WFa3E4SssaMZCbXY/5Dx+euIOXkH1mT/psccth5En/3Z/KXyNLD8UDt87GCEX2Xg ==
X-ME-Sender: <xms:dAkQWaThJr_0BwZjP7GhHeIycLwavUjP3XAz8ew4MpxettDe41fVYg>
Received: by mailuser.nyi.internal (Postfix, from userid 99) id C784FE2689; Mon, 8 May 2017 02:00:19 -0400 (EDT)
Message-Id: <1494223219.1429910.969023384.0FB0A74C@webmail.messagingengine.com>
From: Neil Jenkins <neilj@fastmail.com>
To: Chris Newman <chris.newman@oracle.com>
Cc: jmap@ietf.org
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_149422321914299103"
X-Mailer: MessagingEngine.com Webmail Interface - ajax-e7edfd09
Date: Mon, 08 May 2017 16:00:19 +1000
In-Reply-To: <E2EEF9D1-95AF-498A-BB5C-C695A8156629@oracle.com>
References: <em8b177018-4769-44ea-b033-90bd8155d11b@bodybag> <46F700A6-C2B1-488B-A8B4-6ACD45B03C31@oracle.com> <CFC38D13-0CB2-4ABF-9403-DF0F773314B7@fugue.com> <D35A79C2-3918-4BB7-B97D-D56CA7548DCD@oracle.com> <1493099769.3023399.955193288.6D0312CC@webmail.messagingengine.com> <33553450-82F4-4CB4-8679-C9F52D8A8839@oracle.com> <1493163974.4122214.956244160.6735E49C@webmail.messagingengine.com> <EDCC6149-9222-468E-A17B-DDBA88A52D95@oracle.com> <1493185260.709114.956477904.75CB343B@webmail.messagingengine.com> <B2FD4698-E783-4D15-BA4E-B637A070E6A9@oracle.com> <1493248332.1295949.957537688.05443911@webmail.messagingengine.com> <BCF4ACFF-892C-464E-AAFD-1BB1822C5EF8@oracle.com> <1493358386.1136069.958999408.285D03F1@webmail.messagingengine.com> <D5EC9370-049B-4DA8-B995-09C0ADDD0E2A@oracle.com> <1493798243.3361851.964066360.38B8043E@webmail.messagingengine.com> <E2EEF9D1-95AF-498A-BB5C-C695A8156629@oracle.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/_karvBGTBDaHx0m5gpOcOlVnYa4>
Subject: Re: [Jmap] simpler future release & unsend without outbox (was Re: Best vs Good enough - adoption of JMAP)
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, 08 May 2017 06:00:22 -0000

On Thu, 4 May 2017, at 07:16 AM, Chris Newman wrote:
> I prefer a protocol model where it is possible for the client
> to easily> identify "future release date is in the future" messages and to
> apply an> "unsend" action to those messages. I further believe the model
> shouldn't> limit the "unsend" action so it can only be used with that set of
> messages.

I agree.

> And I'd prefer a model where there is no explicit state change
> in the mail store when a "future release" message is released as that> keeps the mail queue and mail store components independent.

I think this is the one real disagreement left, but I certainly take
your point that you would prefer not to have to do this, so we should
try to find a solution where this is optional.
> I'm ok if the base JMAP spec requires implementation of future release> and unsend for future release messages.

I'm not actually sure we should mandate servers implement future release
in order to claim base JMAP support, but we should have the interface
specified for servers that do support it.
> I'd prefer to leave details about message tracking (including whether
> a message can unsent) and unsend for other messages to a JMAP
> extension.
Agreed.

> Virtual/smart mailboxes are a common mail UI feature. As a mail user,> I'd like my virtual mailboxes to look the same in different
> mail clients> to the extent possible.

I agree these are very useful, and it would be great if they were
exposed at the protocol layer so they could be synchronised between
clients. I'm not sure whether it's a good idea to try to put them in
the base JMAP Mail spec though; depends how much we think they will
slow down implementation, and whether they're strictly necessary. If
the counts are optional then they should be pretty easy to
implement, but every extra "optional" is of course more effort to
maintain down the line.
>> One proposal that might satisfy everyone: a "futurerelease"
>> mailbox role is added (this is the IMAP SPECIAL-USE representation in>> JMAP).  Servers can **optionally** have a mailbox with this
>> role; if it>> does, clients SHOULD place future-release messages in here, but like>> "sent" **can** put the message in any mailbox(es). Servers that
>> have this>> mailbox MUST move messages from this mailbox to the sent mailbox at
>> future release time (which may just be based upon the future-release>> date, or may be actually based on releasing it to the mail queue).
> 
> This is something I could implement easily as long as there's no
> requirement that the mail store verify the message was actually
> released> from the mail queue at the future release time. But I'm not
> sure it's a> good design as it raises some issues... Messages in the futurerelease> mailbox have been submitted/sent, so should that mailbox also have the> \Sent special use?

No, I'd say it would just have a "futurerelease" role. I think this is
reasonable; clients which understand this role have all the information
they need from this, and clients that don't may be confused by two
mailboxes with the "sent" role.
>  I think a futurerelease virtual mailbox (based on the sent
>  mailbox) is a> cleaner way to do this (and optionally a sentandreleased
> virtual mailbox> for clients desiring that).

The issue with this is synchronising changes with the server. The
results of a message list (a sorted query on the set of messages)
normally only change in response to some kind of state change on the
server. If futurerelease were a *virtual* mailbox, the results would
change depending on *when* you fetch the query, even if there is no
change in server state. So this would require a new mechanism to notify
the client of when the query results might have changed (presuming you
want a client to be able to be always up to date without polling
everything, which I think is a reasonable requirement).
Neil.