Re: [Jmap] Best vs Good enough - adoption of JMAP

Neil Jenkins <neilj@fastmail.com> Tue, 25 April 2017 23:46 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 86F30126FDC for <jmap@ietfa.amsl.com>; Tue, 25 Apr 2017 16:46:18 -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=D42Jm/QI; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=Zp/dL5DE
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 xlND77giES3K for <jmap@ietfa.amsl.com>; Tue, 25 Apr 2017 16:46:16 -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 A2BC61294BC for <jmap@ietf.org>; Tue, 25 Apr 2017 16:46:15 -0700 (PDT)
Received: from betaweb1.internal (betaweb1.nyi.internal [10.202.2.10]) by mailout.nyi.internal (Postfix) with ESMTP id CB858218E7 for <jmap@ietf.org>; Tue, 25 Apr 2017 19:46:14 -0400 (EDT)
Received: from betaweb1 ([::ffff:10.202.2.10]) by betaweb1.internal (MEProxy); Tue, 25 Apr 2017 19:46:14 -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=I1axL1qmig9PL1PHMMjwZqraWOozX qPB/AoCIAA7YN4=; b=D42Jm/QIL1gtLqCQrkL0SykJdTc4VahnVCtznjLgEoctV FtJJcNqqYyAC7xZUdvxCUpn1g7yNod3h/y8dF+98IkCHWe4BDeRov58+hgliTbUP neNebBcmR8InIOkV9S6J2W4QMuMETAAjH1FhhRkk+leR9Msm7iTiwrtcKoMgDKfP xZYz4EIvf6j2h2C0ShJIhLZ51hvJqqU8/jzW65vjd6nGaGwlF3RvJYA/TA8mq4DI 7XAZKFbShqk41R8N2OJayAQNv5mAWQTmdd+Z3HZFnAf9bXl9kf14IH96oIcBjeeu ysNYAbqwTCmaMy53TzLhZfkaqZeB78QEUJ5oQcSvQ==
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=I1axL1 qmig9PL1PHMMjwZqraWOozXqPB/AoCIAA7YN4=; b=Zp/dL5DEDzUaRejJ9sFSId IbtwrruQ70hELgJ/TBA6LmnSf/Es8trCBgLTWIEiVA1Yp+3hWSEtIfMfGdVvEnOY MXMTg4w+GJellG01H8oPrgbF00rBqtDtkPDi9sworBR7B0YJ5tXmo0wlW3NJ2c+P Qxuhp5mfE9xyFEEYQ7DFQYNI37KJh9gthsV9MVp3zoRD+XhI7f/UpMGIo7iFUvUJ ZNFWcUqg2IZER/xBtGkH8JZIii49EarBm7VWuE8qhHhxXF+u0pjhSAQtGstxzyQv a8IBeTKbaHshDPS2IIc1thkJ1XNn9wLMM4SUnb9dvdXfkXMaNa5olpyLiSS4LjdQ ==
X-ME-Sender: <xms:xt__WGGQOn_Cb2W-RmyAKppIIFC6AutKwmDCZCEwf4DEPduEi9Uj6Q>
Received: by mailuser.nyi.internal (Postfix, from userid 99) id 88F66E276C; Tue, 25 Apr 2017 19:46:14 -0400 (EDT)
Message-Id: <1493163974.4122214.956244160.6735E49C@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="_----------=_149316397441222143"
X-Mailer: MessagingEngine.com Webmail Interface - ajax-71880675
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>
In-Reply-To: <33553450-82F4-4CB4-8679-C9F52D8A8839@oracle.com>
Date: Wed, 26 Apr 2017 09:46:14 +1000
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/oGu4vdBLsv5tenkFM6OgarrXs1k>
Subject: Re: [Jmap] 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: Tue, 25 Apr 2017 23:46:18 -0000

I think there's been some misconception over the intended semantics of
the outbox proposal. The outbox was never intended to be the submission
queue, with mail queue semantics. It is intended as a standard mailbox,
with mailstore semantics, because it is where messages go **before**
they are passed on to submission. The server would validate the
message/envelope at the time of moving it to the outbox to ensure it can
be accepted for submission later of course. If you have existing
mailstore + SMTP infrastructure, implementation is not much more than
having some small demon that triggers to take the message from the
mailstore and submit it to the SMTP queue at the appropriate time.
>From a user experience point of view, this model gives us an
understandable conceptual place for messages that are *going* to be
sent but have not yet been picked up by the postman, to use a real
world analogy. Because it is a standard mailbox, we automatically have
an API for the client to fetch and show to the user all the currently
scheduled messages. I think this is important functionality as a user
if we have delayed send (and of course we also have the ability to then
cancel any of the future submissions, by just moving the messages back
out of the outbox).
With my client author hat on, I like this model because it makes it
easier to implement full offline support. If I am offline, the outbox
represents messages waiting to go out from the client. From an
implementation perspective it is much easier if my offline sync code
doesn't need a separate path for keeping track of messages to be sent
vs. normal messages moved to another folder.
The *only real difference* between a "sendMessage" command and using
"move to outbox" as the equivalent command, is that clients can get
the list of "delayed" messages waiting for submission. I think this is
valuable, and pretty much required for "scheduled send", although not
so important for "undo send". The fact that this is really the only
difference is why servers that can't or don't want to implement
delayed send or expose messages waiting to be sent can use the "empty
outbox" model.
Neil.