Re: [Jmap] message vs. annotation

Ted Lemon <mellon@fugue.com> Wed, 05 April 2017 12:21 UTC

Return-Path: <mellon@fugue.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 C28C21273B1 for <jmap@ietfa.amsl.com>; Wed, 5 Apr 2017 05:21:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fugue-com.20150623.gappssmtp.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 KScS_xKhxZxB for <jmap@ietfa.amsl.com>; Wed, 5 Apr 2017 05:21:36 -0700 (PDT)
Received: from mail-pg0-x234.google.com (mail-pg0-x234.google.com [IPv6:2607:f8b0:400e:c05::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 111E4127863 for <jmap@ietf.org>; Wed, 5 Apr 2017 05:21:31 -0700 (PDT)
Received: by mail-pg0-x234.google.com with SMTP id 81so7284480pgh.2 for <jmap@ietf.org>; Wed, 05 Apr 2017 05:21:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fugue-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=2jADYLL5Xhwdw9k1iv71FsR9uNCTAHctLutC/HDowE8=; b=WaAeXzMDJPEs0zevZr7y3P0f0OsYxZ+tMOJIhCa6O43vtvKNj/G2x6YcOIn5gG4jtv TwywrljSgw8X5j3YrdCuNPmHJP19kp/FvXA8cIsQv2+n4PXd5xU8yPl1COHlGaydEgII /BKYX3HbFZS7BhYogNmIfcq0Cs847ZURHHkPwxR2u4iyOhVl32eJO1g3IJchG5KH55Yq u7zX5H8TvA9dMsfR9S/jkQ5ut4Zv9j1UKylAYwi7engzi7683l4KM792qkS0xMtmyXUI wNrvxNDYO6zVkeu7KiQrvdZ5IrnnrxxFUZEFxYF1MWU6GW3+k1g9GoStjevaZd7P4IB4 POQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=2jADYLL5Xhwdw9k1iv71FsR9uNCTAHctLutC/HDowE8=; b=sZMFX2LJCGcBTuBYT8ZdyOxHNVtvxT0fvs3qcOW//nEeAZzz6njfSJusLROGIri9Y7 RZYhPC5yV0M34m0D2ggq4mqmEQ/kmcbjGGJnH7q5k9oxvh+oNLzAWbUeB5zFNuTLh805 0qlM/eKwPLcV81Fdve7OFxYTNwi7al0evTBavB6Ad3fM8jIOzWyHr95kaEj5PLbP+d14 jBnGuWS5o5TawvCFxDnoLmpwaSMiYAmjscK0LuFzsG7x88RpE273INR7CX2OKBLK0n5Q 7oqeyYSO6G55igWj6wXdrIbebXnCV9t6KoU8GP1WsQe8rZZMcMDwnCKE8+tFT8U+IpBV ndhA==
X-Gm-Message-State: AFeK/H2tG8GjvMAdKaTcLhWByBNa6V/HowEcRxer/pubo/DB7RISNBI6aahjDkfBYedyOQ==
X-Received: by 10.99.113.18 with SMTP id m18mr30090026pgc.235.1491394890593; Wed, 05 Apr 2017 05:21:30 -0700 (PDT)
Received: from [192.168.6.83] (ip-64-134-223-134.public.wayport.net. [64.134.223.134]) by smtp.gmail.com with ESMTPSA id s17sm37540701pgo.27.2017.04.05.05.21.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Apr 2017 05:21:29 -0700 (PDT)
From: Ted Lemon <mellon@fugue.com>
Message-Id: <84395E74-9B7F-43A7-8EE0-62EFC5F9807D@fugue.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_8DDF6708-88D2-428A-BD42-7115D7B765A5"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Date: Wed, 05 Apr 2017 05:21:27 -0700
In-Reply-To: <1491371013.1386002.934634464.79C9C1F7@webmail.messagingengine.com>
Cc: jmap@ietf.org
To: Neil Jenkins <neilj@fastmail.com>
References: <148716911729.17277.15371202023742081890.idtracker@ietfa.amsl.com> <b7ec34d3-3aaf-82af-3663-5b0966c83ff0@dcrocker.net> <1491371013.1386002.934634464.79C9C1F7@webmail.messagingengine.com>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/5NMU4k4UFHgqk5gnZlfi1Xu3Hgw>
Subject: Re: [Jmap] message vs. annotation
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, 05 Apr 2017 12:21:40 -0000

On Apr 4, 2017, at 10:43 PM, Neil Jenkins <neilj@fastmail.com> wrote:
> This is the key here. While mailboxes, keywords and annotations could be viewed as conceptually the same thing and so combined into one perfectly abstract construct, I strongly believe that to do so would be a mistake. It would make it harder for client authors to understand and use, harder to implement efficiently on the server, and harder to map backwards compatibility to IMAP.

I think that the reason to have keywords as a special type of thing is so that you can define standard keywords.   Otherwise they don't seem any different than labels/mailboxes.   I think both types of object have essentially the same desired set of semantics: "give me all the things that match this label, quickly."  "tell me what things with this label have changed/appeared/disappeared."

The reason I pushed back on annotations in the meeting is that I think that annotations are actually likely to be more structured objects than simply "things I need to get done by Friday."   "Things I need to get done by friday" is not a static object: it's a verb with modifiers.   If you treat it as if it's just an annotation, I think that you have an overly limited solution to that problem.   The reason I reacted to that specific example at the microphone the way I did is that this sort of ad hoc label that mail programs currently offer is actually a great example of a missed opportunity: something that could really be a kick-ass feature instead winds up being just another way for me to do bookkeeping, and just another thing for me to remember.

If a thing is a "thing I should get done by Friday," there should be some code running that's helping me to arrange to actually get it done by Friday, not just a notice for me to read on Saturday and feel guilty about.

And an annotation at least as described during the conversation in the meeting last week would not be sufficient for this.   Sure, you could hang more stuff off it to make it work, or have something that cleverly parses these annotations and does something smart with them, but it's all way too sloppy and ad hoc to be useful.

So while I agree that everything isn't the same object, and there may be some value to having mailbox tags be different than annotation tags, I think that an annotation really ought to be a first-class object that can be linked to a message.   The link probably has to be two-way: give me all the messages with this annotation, and give me all the annotations on this message.

Of course, the response at the mic was that a message could have multiple annotations, each one with its own name, and not all downloaded to the client all the time.   I don't disagree with this.   And if indeed each annotation has a name, maybe that's enough structure.   But it doesn't feel right to me.   If there are two objects marked "get done by Friday," I think the question "list objects marked get done by Friday" is a really obvious one.