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

Neil Jenkins <neilj@fastmail.com> Wed, 26 April 2017 23:12 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 6EF061294BF for <jmap@ietfa.amsl.com>; Wed, 26 Apr 2017 16:12:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.719
X-Spam-Level:
X-Spam-Status: No, score=-2.719 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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=utZCWXkh; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=Fl4+WXOr
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 oi7t3J3bd_MH for <jmap@ietfa.amsl.com>; Wed, 26 Apr 2017 16:12:14 -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 D5E13120727 for <jmap@ietf.org>; Wed, 26 Apr 2017 16:12:13 -0700 (PDT)
Received: from betaweb1.internal (betaweb1.nyi.internal [10.202.2.10]) by mailout.nyi.internal (Postfix) with ESMTP id 4907020D52 for <jmap@ietf.org>; Wed, 26 Apr 2017 19:12:13 -0400 (EDT)
Received: from betaweb1 ([::ffff:10.202.2.10]) by betaweb1.internal (MEProxy); Wed, 26 Apr 2017 19:12:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= 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=RtQxZIa11usqSAa+5ZtW88g2Le+AS KZRZBcuRxNuK9c=; b=utZCWXkh7UGodMvzCktpD4xx89RWaBJO0ZE++UQ1S8RiA gQJ1uZbhLP8nG4NrDMF6YvvZD5w6p4AUMU3yRaqP3IjXLSdr3nBHH2ZdE+N0ax2R CUrzF48ouDQgug/HdiwhKY6j8U+K/DmVsQXl+9XQauoJyLq/xGUKYi/M8vSsWPMl OsDDtF3StXtbWknuzTD/sG01JzVCb/HsWoyLq0U+usGPzx+oJ5K4WtzJR/wfj4zJ +IjWSEeDQcpdFXTARnjYz5g0f3yYLE4SHEUONCYIhZeWABFnTtdqfDARRF95lNa0 NRqTMoCbYzxDVbpDPX+VStG0NBhHa4wk9EaFoO4kg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=RtQxZI a11usqSAa+5ZtW88g2Le+ASKZRZBcuRxNuK9c=; b=Fl4+WXOrbuUmMaamiDlAw6 WRS1XgcOyxGeKJhaYZhcNKYIDRmXlyiyx/y6jYyyrQQU6tM79XzjmasKBo+iaNoq kklJYwh34hqTRVj85mlpAJpf/dBFAckwWYuABeHgeMrAQu9eGwAtGm76wGpI+ZN0 mAECmF2owLbJWVVB02IcACyXjtzrG/e3RwGzEIE7z8h351LpSiYordPfnZe5HxDQ f0DvDC/mI6DpoMml1SCLwLR0ZrLjL70EcJfY0TR9cGgaY06qr3xdg5RB7ZtWNwk+ oHMXyLXFKO25ruuZLu0hGaV34QVQZWBX/CEmFBET750douHFcRlwXgBFjw6kAzcg ==
X-ME-Sender: <xms:TSkBWcoI_H8GhAvCIJ_B3fT5lVjPS23ZSbfUtV2Nn5Yy78l8GgHRAw>
Received: by mailuser.nyi.internal (Postfix, from userid 99) id 0B855E27D8; Wed, 26 Apr 2017 19:12:13 -0400 (EDT)
Message-Id: <1493248332.1295949.957537688.05443911@webmail.messagingengine.com>
From: Neil Jenkins <neilj@fastmail.com>
To: jmap@ietf.org
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_149324833212959495"
X-Mailer: MessagingEngine.com Webmail Interface - ajax-843b6574
In-Reply-To: <B2FD4698-E783-4D15-BA4E-B637A070E6A9@oracle.com>
Date: Wed, 26 Apr 2017 23:12:12 +0000
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>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/oDLa-VeMUtHN9xKaaACPGFTAJJo>
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: Wed, 26 Apr 2017 23:12:15 -0000

On Wed, 26 Apr 2017, at 05:54 PM, Chris Newman wrote:
> I'll describe a model that achieves my goal […]
> 1. Get rid of the server-side outbox. We only have a drafts folder
>    and a> sent folder.
> 
> 2. Add a submission command with envelope (same structure as SMTP
> envelope but JSON syntax and quoting). We pass this command a
> reference> to a draft message in the drafts folder, and if the submission
> succeeds,> the message is moved to the sent folder with the envelope as an
> annotation. The envelope can include the already-standard
> future release> extension.
> 
> 3. Add an unsend command which takes a reference to a message in the
> sent folder. If the unsend succeeds, the message can be moved back to> the drafts folder as part of this action. How the server correlates a> message in the sent folder with a message in the mail queue is an
> implementation detail; the spec need not specify that detail in
> order to> provide the functionality with this model.
> 
> 4. Add a way to search/select messages in the Sent folder that may be> possible to unsend.

>From a protocol perspective, this model is basically identical to the
outbox model proposed. The only difference is that rather than put the
messages that can still be recalled in a separate "outbox" mailbox, you
put them in the sent mailbox and require some kind of search. The only
extra component your server will need is something that moves the
message from outbox to sent when it can no longer be recalled; I
seriously don't think this is a huge implementation burden. As Brandon
has pointed out, modern mailstores need this kind of "scheduled events"
plumbing for a number of user-facing features, and it has already been
implemented at scale in a number of systems.
>From a user interface perspective, I maintain it is clearer for the user
for these to be two separate mailboxes, and it also has the advantage
that mailboxes have a message count so MUAs can more easily see if there
are any messages waiting to be sent still. (I would expect most MUAs to
hide the outbox when empty.)
Neil.