Re: [Jmap] Draft messages - mutability

"Chris Newman" <chris.newman@oracle.com> Tue, 25 April 2017 17:33 UTC

Return-Path: <chris.newman@oracle.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 4FF6C131708 for <jmap@ietfa.amsl.com>; Tue, 25 Apr 2017 10:33:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.202
X-Spam-Level:
X-Spam-Status: No, score=-4.202 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 oSd1I7eDCnFu for <jmap@ietfa.amsl.com>; Tue, 25 Apr 2017 10:33:32 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.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 2CAA21316E6 for <jmap@ietf.org>; Tue, 25 Apr 2017 10:33:32 -0700 (PDT)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v3PHXSru018133 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Apr 2017 17:33:29 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v3PHXS07012346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Apr 2017 17:33:28 GMT
Received: from abhmp0010.oracle.com (abhmp0010.oracle.com [141.146.116.16]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v3PHXRbF029433; Tue, 25 Apr 2017 17:33:28 GMT
Received: from [10.145.239.182] (/10.145.239.182) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 25 Apr 2017 10:33:27 -0700
From: Chris Newman <chris.newman@oracle.com>
To: Neil Jenkins <neilj@fastmail.com>
Cc: jmap@ietf.org
Date: Tue, 25 Apr 2017 10:33:25 -0700
Message-ID: <45E4DC37-A0FA-4573-83B1-3701E0FE2A69@oracle.com>
In-Reply-To: <1493087082.2882732.955078288.61343C16@webmail.messagingengine.com>
References: <1492998899.3316920.953769616.254C9CBD@webmail.messagingengine.com> <EDDD6045-ECAD-4EAB-AC11-842A9CB2E1CA@oracle.com> <1493084134.2830550.955039432.5403CAFB@webmail.messagingengine.com> <BFB51221-4FD4-4546-B628-595CF76B7F66@oracle.com> <1493087082.2882732.955078288.61343C16@webmail.messagingengine.com>
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"
X-Mailer: MailMate (1.9.6r5347)
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/VBDfTgJ_cdZa1wXmKH1-IiNjKpc>
Subject: Re: [Jmap] Draft messages - mutability
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 17:33:33 -0000

On 24 Apr 2017, at 19:24, Neil Jenkins wrote:
> On Tue, 25 Apr 2017, at 12:18 PM, Chris Newman wrote:
>> Why is it important to keep the same ID when modifying a draft?
>>  The approach draft-brandt-imap-replace uses is to include the new
>>  ID in the> response to the modification operation.
>
> That's great if you're only using one client to edit the draft. But
> consider the following scenario:
> 1. I start a draft on my laptop. I'm not finished, it's still open on
>    the screen and I just put the laptop to sleep.
> 2. I continue editing on my phone. Maybe I finish and send it or
>    maybe I don't.
> 3. I go back to my laptop, which immediately resyncs with the server 
> to
>    find out what's changed.
> Now with immutable messages, all my laptop MUA can see is that the 
> draft
> has been deleted from the server, but this might just mean there's a
> newer version of the draft. I can see the newer draft but can't know 
> for
> sure it's an update to the one I have open or not. So I can either
> resave the draft that's open (which could cause a duplicate old draft 
> to
> "reappear" in the Drafts mailbox), or I can just delete it and hope 
> for
> the best (and the user can reopen the new draft if they still hadn't
> finished sending).
>
> With mutable messages, I would see there's an update to the current
> message I have open. If I know the user's last changes were saved to 
> the
> server I would just fetch the update and immediately show this 
> instead.
> If the user has made other changes then I know we have a split and I 
> can
> prompt the user what they want to do. It's a much better user
> experience.

I'd prefer not to make the common-case resync more complicated just to 
handle the rare case of multiple clients editing a draft. But if you 
think it's important to handle that case, another option is to introduce 
a draft unique identifier that's preserved across replace operations; 
then the client can know that a new message is a new version of a 
previous draft and the problem is resolved without making common-case 
resync more complicated.

		- Chris