Re: [Jmap] Feedback on the quota draft

"Bron Gondwana" <brong@fastmailteam.com> Fri, 17 January 2020 07:53 UTC

Return-Path: <brong@fastmailteam.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 46DAD1207FC for <jmap@ietfa.amsl.com>; Thu, 16 Jan 2020 23:53:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fastmailteam.com header.b=lRC/5nTU; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=exknKUwn
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 zV_T3Vb_6wxW for <jmap@ietfa.amsl.com>; Thu, 16 Jan 2020 23:52:55 -0800 (PST)
Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 079C7120273 for <jmap@ietf.org>; Thu, 16 Jan 2020 23:52:55 -0800 (PST)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id AA4CF48D; Fri, 17 Jan 2020 02:52:53 -0500 (EST)
Received: from imap28 ([10.202.2.78]) by compute6.internal (MEProxy); Fri, 17 Jan 2020 02:52:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= fastmailteam.com; h=mime-version:message-id:in-reply-to :references:date:from:to:cc:subject:content-type; s=fm1; bh=i1cd RxP+rV1A/PHRkLsCw8OHz+mCrc1FdbpOV0FrDuA=; b=lRC/5nTUhPjt9JDNd9us 28Zeohaj0Ni/V/1ePe9Bl5y3jJq+bRc+ge/CrI9T6ZdYXXAtTr/nj1F5PHBvDf/P v6QQibyNnlUYcalHLcs83YA/2T+LINPPKy7nheB235aklhaBnJhkde6EI+l8GNTs 12V5C8Gi4DHq5kIpJsJxpkXq+nE2Z69/wKIaO1I4qO/r9kavY+CdVYS+9avL+Eer gkb/XkHhd3ZowKms5goMf1oUc1IZX7XSu3bNX1CSSnbd330RvzSdiJTBabasyXRb U8bxqtsG/zOc6o6wRDVfvcyfa54VM/rRd9nY6JDUQj24qQA9DNi4QokHRcbE4Ljm vg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=i1cdRx P+rV1A/PHRkLsCw8OHz+mCrc1FdbpOV0FrDuA=; b=exknKUwnDO4qufjT8T/Fed CXWnu0xEAdMUvKjcRgclLr6lbwrQMgWgeT5k/ccwOQrgIcmNCu1Yd7JQYrsIQveE InBRR5RpBNo9zYONP5oPoXCABS2i9sEkmTHbhz/D+I3uVf0RIF4Nc3MuD3mXPYpL Q7ST4SGcEHF45HLUOy7LCg3WqjzsjnjIjZcyV7qSjRpeL4trZ31EENZS9WYRSn+Q 5o9vxXT5nZqd4miGRDlsQ+qHtIApl8x1Yhf7/xk38JcWzS396NLZhjgruEnwVsMz uwznZncOHTXiC5LOJTukmWEQ3NVTwdyg7tD8O4w3AvzsW/57JeLhBwzlrwp4a5rQ ==
X-ME-Sender: <xms:1WchXhjx8yNUuyZxGvsLltWST2qjOQvXakWuMMsCkAu6Hdm2jSsXiQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrtdeigddutdelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesrgdtreerreerjeenucfhrhhomhepfdeurhho nhcuifhonhgufigrnhgrfdcuoegsrhhonhhgsehfrghsthhmrghilhhtvggrmhdrtghomh eqnecuffhomhgrihhnpehivghtfhdrohhrghenucfrrghrrghmpehmrghilhhfrhhomhep sghrohhnghesfhgrshhtmhgrihhlthgvrghmrdgtohhmnecuvehluhhsthgvrhfuihiivg eptd
X-ME-Proxy: <xmx:1WchXgjfVDZVpzdbfiiZZsnIFZqz9_391HGaI6iv09XD5h6KxrgBSA> <xmx:1WchXuDDCTSJPcVnVx2T3UWiZ9a0iCyBKGDHs716djJAkQcekizovQ> <xmx:1WchXo9tENwOMqyk7R4RjqRFLw9k6H9hHzzC3BzcJQHThebnMW5B7g> <xmx:1WchXtPsxabI_qSJ9nudmCMPZ4_-KiCECVxv5gYGtIP-8pNmN50N9Q>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id E080724009E; Fri, 17 Jan 2020 02:52:52 -0500 (EST)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.1.7-754-g09d1619-fmstable-20200113v1
Mime-Version: 1.0
Message-Id: <4cf1ef6d-6e5e-4d7e-8022-adafb2949932@dogfood.fastmail.com>
In-Reply-To: <Mime4j.a7.9752bb665397bc27.16fb26a44bc@linagora.com>
References: <Mime4j.a1.2d751a4594d1abfc.16e8da90cc7@linagora.com> <Mime4j.a7.9752bb665397bc27.16fb26a44bc@linagora.com>
Date: Fri, 17 Jan 2020 18:52:33 +1100
From: Bron Gondwana <brong@fastmailteam.com>
To: jmap@ietf.org
Cc: René CORDIER <rcordier@linagora.com>
Content-Type: multipart/alternative; boundary="2d784004904f48098d0e01acfc637634"
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/4S2qwLeyr9ELwZK-chYsOvXKNqU>
Subject: Re: [Jmap] Feedback on the quota draft
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.29
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: Fri, 17 Jan 2020 07:53:00 -0000

Hi Rene,

IETF107 in Vancouver is 21-17 March.

Cheers,

Bron.

On Fri, Jan 17, 2020, at 18:31, René CORDIER wrote:
> Hi Bron,

> I've been lacking time unfortunately lately to rework on this, but it's still in the back of my mind. I should be able to give it more thoughts on it and rework it soon. When is your meeting in Vancouver?

> Apologies regarding the delay !

> Cheers,

> Rene.

> Le 17 janvier 2020 11:54, de brong@fastmailteam.com
>> Following up on this thread - there's been a bunch of feedback on the last draft. Can you please produce a new draft incorporating the feedback so we can discuss it again. I'd like to have this document in a condition to have a productive discussion in Vancouver.
>> 
>> Thanks,
>> 
>> Bron.
>> 
>> 
>> On Thu, Nov 21, 2019, at 22:11, René CORDIER wrote:
>>> Hi Bron, hi the Jmap community,

>>> First of all, I apologize for not being present at the meeting, and for forgetting to send a notice about it. I will try to do better in the future !

>>> Then, thanks a lot for all your feedbacks. Some make total sense to me, some others we might need to think a bit more and discuss. I will come back towards you after we take the proper time to analyze all of this.

>>> Cheers,

>>> Rene.

>>> Le 20 novembre 2019 18:20, de brong@fastmailteam.com
>>>> Hi,
>>>> 
>>>> This is a combination of feedback collected from the meeting yesterday as well as my own suggestions! These suggestions only come with my own personal weight, and are not a "you must", they are an "I suggest" - please feel free to offer counter proposals or even outright rejections of my suggestions, there is no "chair weight" attached.
>>>> 
>>>> With that said, here's the suggestions :)
>>>> 
>>>> *Scope*
>>>> 
>>>> I'm not sure if there's any point to it, but so long as it can be *null* (which might be the same thing as "account") then I don't see a problem in having it available for those who want it.
>>>> 
>>>> I would just call the key "scope" rather than "usedScope". I don't see the point of putting different scopes on it, that seems unworkable. Instead, if you have quotas in multiple scopes I would expect a quota entry per scope with the amount that was used and the limit - e.g. "you're using 400Mb of 1Gb account quota, and your domain is using 34Gb of 100Gb allocated to the domain" - there's no point having "you're using 400Mb of your domain's 100Gb", because your domain could be using 99.9Gb and you'd have no way to see - so the "limit" needs to be the total minus what everyone else is using to be meaningful for calculating what you can do.
>>>> 
>>>> *Datatypes*
>>>> 
>>>> At the moment there's no way to tie datatypes to quotas. I would like to add an array of datatypes to each object (example below). As an example, you may have a different quota for Calendars than for Mail - or they may be shared. This is somewhat different from scope (server, domain, user, ...).
>>>> 
>>>> *Quota/query*
>>>> 
>>>> At the moment the only way to get the list of quotas is "Quota/get#ids: null". I think in the interests of consistency we should allow a /query as well (probably don't need a /queryChanges, just have a canCalculateChanges; false, but we could allow that too if a server finds it easy with their general model).
>>>> 
>>>> *Quota/changes*
>>>> 
>>>> Like with Mailbox/changes - I could see value in having a updatedProperties which can be either null or a list of properties, such that you could issue:
>>>> 
>>>> [["Quota/changes", { "sinceState": ... }, "1"],
>>>>  ["Quota/get", { 
>>>>  "#ids": { "resultOf": "1", "name": "Quota/changes", "path": "/updated" }, 
>>>>  "#properties" : { "resultOf": "1", "Quota/changes", "path": "/updatedProperties" },
>>>> "2"]]
>>>> 
>>>> Which might only need to fetch the "used" most of the time.
>>>> 
>>>> *Push*
>>>> 
>>>> There should be a nod towards Push and mention that Quota state changes are pushed like other state changes.
>>>> 
>>>> *Description*
>>>> 
>>>> Do we need to provide for both a short "name" and a longer "description" field on each quota?
>>>> 
>>>> *Soft limits*
>>>> 
>>>> Does anybody care about soft vs hard limits? Soft limit being "you won't be blocked, but you'll be told off any maybe charged more", hard limits being "your changes will be rejected". Should we have an optional second limit field in the spec?
>>>> 
>>>> Something of this sort was raised on mailing list by John van der Kamp - in fact he talked of 3 levels. Perhaps they could be something like:
>>>> 
>>>> warnLimit
>>>> softLimit
>>>> limit
>>>> 
>>>> Where obviously warnLimit and softLimit are optional (and must each be lower than the next level up). This is more complexity, but it's optional complexity at both ends: servers don't need to set them, and clients don't need to display them.
>>>> 
>>>> *Resource Types*
>>>> 
>>>> The IMAP quota draft defines three types of resources for quotas, and also a registry where more can be described. The initial types are "STORAGE" (units 1024 octets), "MESSAGE" (number of individual emails) and "MAILBOX" (number of mailboxes). It maybe viable to use the same registry.
>>>> 
>>>> Of course, then you get issues like what should you call it for Calendar or Addressbook? Should the limits be given DAVish names like "COLLECTION" and "RESOURCE" such that MESSAGE becomes "RESOURCE" and "MAILBOX" becomes "COLLECTION"? in JMAP quotas?
>>>> 
>>>> Also: should we do storage in bytes, or do 1024 octets for our storage numbers in JMAP as well so they map identically to the definition in the registry?
>>>> 
>>>> *EXAMPLE:*
>>>> 
>>>> As promised, a Quota object for my example:
>>>> 
>>>> {
>>>>      "id": "2a06df0d-9865-4e74-a92f-74dcc814270e",
     "type": "storage",
     "used": 105645,
     "scope": "account",
     "limit": 200000,
     "description": "Personal account usage",
     "name": "brong@brong.net",
     "datatypes" : [ "Mail", "Calendar", "Contact", "Todo" ],
>>>> }
>>>> 
>>>> And this would be displayed in a a box called "Quota Use":
>>>> brong@brong.net 52%
>>>> 
>>>> Something like that :)
>>>> 
>>>> Cheers,
>>>> 
>>>> Bron.**
>>>> --
>>>>  Bron Gondwana, CEO, Fastmail Pty Ltd
>>>>  brong@fastmailteam.com
>>>> 
>>>> 
>>> _______________________________________________
>>> Jmap mailing list
>>> Jmap@ietf.org
>>> https://www.ietf.org/mailman/listinfo/jmap
>>> 
>> 
>> --
>>  Bron Gondwana, CEO, Fastmail Pty Ltd
>>  brong@fastmailteam.com
>> 
>> 
> _______________________________________________
> Jmap mailing list
> Jmap@ietf.org
> https://www.ietf.org/mailman/listinfo/jmap
> 

--
 Bron Gondwana, CEO, Fastmail Pty Ltd
 brong@fastmailteam.com