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

Ned Freed <ned.freed@mrochek.com> Wed, 26 April 2017 14:18 UTC

Return-Path: <ned.freed@mrochek.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 1D6AE12EAEC for <jmap@ietfa.amsl.com>; Wed, 26 Apr 2017 07:18:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.003
X-Spam-Level:
X-Spam-Status: No, score=-2.003 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=mrochek.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 vgPMCltTW1_g for <jmap@ietfa.amsl.com>; Wed, 26 Apr 2017 07:18:39 -0700 (PDT)
Received: from mauve.mrochek.com (mauve.mrochek.com [68.183.62.69]) (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 502E112EA42 for <jmap@ietf.org>; Wed, 26 Apr 2017 07:11:55 -0700 (PDT)
Received: from dkim-sign.mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01QDMH1TGY0W008S06@mauve.mrochek.com> for jmap@ietf.org; Wed, 26 Apr 2017 07:07:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mrochek.com; s=mauve; t=1493215662; bh=N0Pu6vxvyBghwZxdgwqDDNHPisUesGKDfdyUm13f54c=; h=Cc:Date:From:Subject:In-reply-to:References:To; b=YB1SZ/AzLa86tfARjPq/8uF68O6Ei/u2r6ztT6ErUcVAOrNbJWA0gDt/u76O9R+kg 7/VvFpjLHELsWztGt5F16myTuWkuWuA18GLS0L72qqhGTo7H1Q23qj5Mq5pe7Ip/1/ HDURH7okKfxBbx/L6uYdGKJqn+xnGnJ9wxHY/yuQ=
MIME-version: 1.0
Content-transfer-encoding: 7bit
Content-type: TEXT/PLAIN; CHARSET="us-ascii"; Format="flowed"
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01QDLR9E01A800008D@mauve.mrochek.com>; Wed, 26 Apr 2017 07:07:38 -0700 (PDT)
Cc: Neil Jenkins <neilj@fastmail.com>, jmap@ietf.org
Message-id: <01QDMH1QNOUK00008D@mauve.mrochek.com>
Date: Wed, 26 Apr 2017 06:45:51 -0700
From: Ned Freed <ned.freed@mrochek.com>
In-reply-to: "Your message dated Tue, 25 Apr 2017 21:49:54 -0700" <EDCC6149-9222-468E-A17B-DDBA88A52D95@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>
To: Chris Newman <chris.newman@oracle.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/JUHsVS9gLAmckMzZmGiIbyVe21w>
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: Wed, 26 Apr 2017 14:18:41 -0000

> On 25 Apr 2017, at 16:46, Neil Jenkins wrote:
> > 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.

> And as soon as you add that "small daemon" (also known as a mail queue
> processing daemon), you've now required the mailstore to also have mail
> queue semantics. This includes key semantics such as: the mail queue
> daemon has full read / delete access to those messages even when the
> user is offline. If the delivery doesn't happen when the user expects,
> the user is going to make a support call, so we now need all the
> monitoring, logging and robustness that comes with a mail queue. And
> addresses that were valid at the time the message entered this mail
> queue can become invalid later, so there has to be bounce-processing for
> when that happens, etc, etc.

Now take these semantics and multiply them by the number of users you have,
which can be in the many millions. And while sometimes you can treat
this as single, system-wide queue for monitoring purposes, sometimes
you'll need to lookup and probably monitor on a per-user basis.

I also assume there won't be a hardcoded name or location for this special
use mailbox. So its specialness arises from some sort of attribute. Can
that attribute be set? Reset? Can it be set on more than one mailbox?
If not why not?

It's not that I can' think of various possible ways to implement all this at
scale. I can. But none of them are easy.

> The only way to have a server-side outbox that is not a mail queue would
> be if messages sit in the outbox indefinitely unless the user is online
> and their client decides to issue a submit command for a message in that
> fictitious outbox.

At which point I don't see why you're bothering with it.

> > 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.

> This analogy only works with a desktop MUA where the "outbox" is on the
> desktop and thus owned by the "postal customer" (and incidentally, the
> outbox won't empty if the desktop is shut down). The hardware running
> JMAP is not owned but the "postal customer"; it's effectively owned by
> the postman. So an "outbox" on the JMAP server means the message has
> been given to the postman already; the postman is just waiting for the
> right time to release it to the next hop.

Actually, I think it's a great analogy. In the US at least, the post office
imposes specific requirements on mailboxes, including the fact that 
something put in one is now in the custody of the post office, and only
the mailbox owner can remove it.

But the part I like best about the analogy is that while the ability
to have a mailbox at every address in the country is incredibly convenient
for the customer, the cost to the postal service is absolutely staggering.
So much so that nobody other than the post office itself - who is obligated
by history and custom - provides this service at scale.

				Ned