[JMAP] Re: JMAP Conditional Updates

Ben Bucksch <ben.bucksch@beonex.com> Wed, 09 September 2026 17:32 UTC

Return-Path: <ben.bucksch@beonex.com>
X-Original-To: jmap@mail2.ietf.org
Delivered-To: jmap@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 816C5137CE3B4 for <jmap@mail2.ietf.org>; Wed, 9 Sep 2026 10:32:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1788975151; bh=YsMrmXjf06Mt/eopKDDstMQjrNoGGHmsrlyxRpo9iVs=; h=From:To:In-Reply-To:References:Subject:Date; b=PfY0haOT9dQdplNV00Av/KDE7qLwxubjqVq396EqX1XUccU9eMA2EiLY4fypecc/u LNB5tjW/ZAoFIGZJdnCwDBZwWLEUpH2FvT20MI6JxEX2FJmUXrwnO9MNtWvJdmKt6T l5iR6GIRIEe00LymP9o7E4FjNIG47kE5enn3Ykhg=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9LoF9h87Nv8H for <jmap@mail2.ietf.org>; Wed, 9 Sep 2026 10:32:30 -0700 (PDT)
Received: from mail.server.beonex.com (mail.server.beonex.com [144.76.227.234]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id CD051137CE3AD for <jmap@ietf.org>; Wed, 9 Sep 2026 10:32:30 -0700 (PDT)
User-Agent: Mustang/0.9.38 Parula/0.9.38
From: Ben Bucksch <ben.bucksch@beonex.com>
To: JMAP IETF <jmap@ietf.org>
In-Reply-To: <20C063B2-2D28-4F39-B37D-0E0363F02EEC@stalw.art>
References: <be0e3f6d-008b-4266-8e99-9dff2e121315@app.fastmail.com> <20C063B2-2D28-4F39-B37D-0E0363F02EEC@stalw.art>
Message-ID: <68d83f94-eefe-a637-6ff9-ce9a571917c8@beonex.com>
Date: Wed, 09 Sep 2026 17:32:25 +0000
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="--_NmP-05fecd539dac69b1-Part_1"
Message-ID-Hash: 4V3HH6OK7EWVW7EPG7POZVIIG2YKCKHC
X-Message-ID-Hash: 4V3HH6OK7EWVW7EPG7POZVIIG2YKCKHC
X-MailFrom: ben.bucksch@beonex.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-jmap.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [JMAP] Re: JMAP Conditional Updates
List-Id: JSON Meta Access Protocol <jmap.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/lQVfUUJpjdo4A5sZSOL2IATUyPY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Owner: <mailto:jmap-owner@ietf.org>
List-Post: <mailto:jmap@ietf.org>
List-Subscribe: <mailto:jmap-join@ietf.org>
List-Unsubscribe: <mailto:jmap-leave@ietf.org>

Mauro De Gennaro wrote on 09/09/2026, 19:15:

> As I mentioned in Vienna, I like both drafts, they are useful additions to
> JMAP. However, I'd prefer we create a single draft for Object Versioning that
> combines these two, along with other functionality such as collaborative
> editing.


As for the documents, I think the split as it is is good. There is not a lot of
overlap between fetching old versions of files, and making conditional changes.


> Bron raised the concern that doing so would force implementers to support all
> or nothing, which is a fair point. My question is whether it would be possible
> to define a single JMAP Object Versioning extension in which all functionality
> is optional, with servers advertising in the capabilities object which
> features they support.


As client, this is the worst of all worlds. Fine-grained server support matrix
leads to tons of "if/else" code in the client codebase. Because client needs to
implement the fallback where it's not supported, which leads to triple the work,
terrible codebase, and insane to impossible testing.

That's in the top 3 things that I hate the most about IMAP: All those
extensions, and you cannot rely on anything, and you need fallbacks for
everything. FWIW, that's also why most IMAP clients don't support most
extensions. Extensions essentially make interoperability moot. "Embrace, extend,
extinguish", remember? So, I'd rather have a JMAP v2 in 3 years which makes all
of the useful extensions mandatory. I see extensions as intermediate steps to
JMAP v2.

Ben

--
Beonex GmbH
Taunusstein bei Wiesbaden, Germany
CEO / Geschäftsführer: Ben Bucksch
Handelsregister: Amtsgericht Wiesbaden, HRB 30065
parula.app [https://parula.app]