Re: [Jmap] JMAP for Migration and Data Portability

Joris Baum <joris@audriga.com> Tue, 21 March 2023 14:43 UTC

Return-Path: <joris@audriga.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 A2C1AC14CE5F for <jmap@ietfa.amsl.com>; Tue, 21 Mar 2023 07:43:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z-IiJ-R0J-uR for <jmap@ietfa.amsl.com>; Tue, 21 Mar 2023 07:43:50 -0700 (PDT)
Received: from mail.audriga.com (mail.audriga.com [176.221.42.35]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0414DC14CF0C for <jmap@ietf.org>; Tue, 21 Mar 2023 07:43:49 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.audriga.com (Postfix) with ESMTP id BD1DAA28C for <jmap@ietf.org>; Tue, 21 Mar 2023 15:43:47 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at mail.audriga.com
Received: from mail.audriga.com ([127.0.0.1]) by localhost (mail.audriga.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NQR8YYWqb4ZF for <jmap@ietf.org>; Tue, 21 Mar 2023 15:43:45 +0100 (CET)
Received: from [192.168.2.106] (dslb-094-223-169-210.094.223.pools.vodafone-ip.de [94.223.169.210]) (Authenticated sender: joris@audriga.com) by mail.audriga.com (Postfix) with ESMTPSA id 37A68A1F7 for <jmap@ietf.org>; Tue, 21 Mar 2023 15:43:45 +0100 (CET)
Content-Type: multipart/alternative; boundary="------------agP1odeL48WEZQ8XmCOr3XQC"
Message-ID: <3b9e5db5-8bb7-e52e-6c34-084f8008d434@audriga.com>
Date: Tue, 21 Mar 2023 15:43:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0
Content-Language: en-US
From: Joris Baum <joris@audriga.com>
To: jmap@ietf.org
References: <79005001-f72d-26b2-53b7-7832d1758af0@audriga.com> <d3e58e51-0055-4fa3-930e-ae3f079257dc@dogfoodapp.fastmail.com> <1741b4e1-9226-dccf-6f28-602127bc7e65@audriga.com>
In-Reply-To: <1741b4e1-9226-dccf-6f28-602127bc7e65@audriga.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/t3y10eufWhAQVCV6_5hM_l5esns>
Subject: Re: [Jmap] JMAP for Migration and Data Portability
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.39
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, 21 Mar 2023 14:43:54 -0000

Oops. There I clicked the wrong button. Everything I wrote after "TODO" 
was thought as an internal note for myself.

Let me try to explain:

/query and /set are quite powerful methods each with a few features that 
not every vendor would like to implement. The list below is a first try 
at how to signal support for parts of their features via the errors / 
capability flags defined in JMAP Core.


/set

* "maxObjectsInSet" - no support for /set

* stateMismatch - no support for ifInState (dirty, because it signals an 
issue on the client side)

* SetError - no support for create, update, destory (via description. 
Not machine readable)

/query

* anchorNotFound - no support for anchor (dirty, because it signals an 
issue on the client side)

* unsupportedSort - no support for sort

* unsupportedFilter - no support for filter


This could work, but I am not sure if JMAP Core defines enough ways to 
signal lack of support for certain features. Let me think a bit more.


Regards,


Joris


On 21.03.23 15:38, Joris Baum wrote:
>
> Hi Neil,
>
>
>
> On 14.03.23 05:37, Neil Jenkins wrote:
>>
>> Looking at this, I think you could probably make this an 
>> informational document with how to implement Minimum JMAP, such that 
>> it's actually still compliant with RFC8620, rather than being 
>> incompatible — just quite inefficient.
>
> yes. Thanks for your input!
>
> That is exactly what we want to achieve with the document. Our main 
> use case of this document is to give vendors that already have an 
> existing application clear guidance on how to implement a minimal JMAP 
> implementation for data portability. Vendors might be interested in 
> that, because they need to comply with new EU regulation such as the 
> Digital Markets Act. Article 6 of the DMA states that some vendors are 
> required to provide "/continuous and real-time access to"/ user data.
>
> Once vendors have decided to implement such a minimal version of JMAP 
> they could then choose to support more features that are defined in 
> JMAP Core standard.
>
>> For example, if you set your |maxCallsInRequest| capability to |1| 
>> (and implement the correct error response if the client tries to send 
>> more), you have trivially turned off batching, but are still 
>> technically compliant with the original RFC. I think you can do 
>> something like this for just about all of the features (e.g. 
>> |/changes| always just returns a |cannotCalculateChanges| error; it's 
>> compliant with the spec, and now you don't have to implement it).
>>
>> I think this would be simpler and cleaner than essentially forking 
>> JMAP to create something almost-but-not-quite the same, which is 
>> likely to cause confusion and incompatibility issues.
>
> That sounds like a good idea. The important thing here is that the 
> document will show that it is relatively straight forward to implement 
> such a minimal version of JMAP. I will need to look in further detail 
> how this could be achieved. My gut feeling is that we might need more 
> than what is already defined in JMAP Core to reduce implementation 
> effort.
>
> TODO
>
> /set
>
> * "maxObjectsInSet" - no support for /set
>
> * stateMismatch - no support for ifInState (dirty, because it signals 
> an issue on the client side)
>
> * SetError - no support for create, update, destory (via description. 
> Not machine readable)
>
> /query
>
> * anchorNotFound - no support for anchor (dirty, because it signals an 
> issue on the client side)
>
> * unsupportedSort - no support for sort
>
> * unsupportedFilter - no support for filter
>
>
>>
>> Cheers,
>> Neil.
>>
>> _______________________________________________
>> Jmap mailing list
>> Jmap@ietf.org
>> https://www.ietf.org/mailman/listinfo/jmap
> -- 
> Joris Baum
> Tel: +49 721 170293 16
> Fax: +49 721 170293 179
>
> http://www.audriga.com  |http://www.twitter.com/audriga
>
> --------------------------------------------------------------------------
> audriga GmbH | Alter Schlachthof 57 | 76137 Karlsruhe
> Sitz der Gesellschaft: Karlsruhe - Amtsgericht Mannheim - HRB 713034
> Geschäftsführer: Dr. Frank Dengler, Dr.-Ing. Hans-Jörg Happel
> --------------------------------------------------------------------------

-- 
Joris Baum
Tel: +49 721 170293 16
Fax: +49 721 170293 179

http://www.audriga.com  |http://www.twitter.com/audriga

--------------------------------------------------------------------------
audriga GmbH | Alter Schlachthof 57 | 76137 Karlsruhe
Sitz der Gesellschaft: Karlsruhe - Amtsgericht Mannheim - HRB 713034
Geschäftsführer: Dr. Frank Dengler, Dr.-Ing. Hans-Jörg Happel
--------------------------------------------------------------------------