Re: [Cbor] A CBOR tag for alternatives/unions, request for comments

Carsten Bormann <cabo@tzi.org> Wed, 23 February 2022 16:10 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5F8313A1111 for <cbor@ietfa.amsl.com>; Wed, 23 Feb 2022 08:10:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
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, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 rrr-DhiPkbLd for <cbor@ietfa.amsl.com>; Wed, 23 Feb 2022 08:10:32 -0800 (PST)
Received: from gabriel-smtp.zfn.uni-bremen.de (gabriel-smtp.zfn.uni-bremen.de [134.102.50.15]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7C8413A110D for <cbor@ietf.org>; Wed, 23 Feb 2022 08:10:32 -0800 (PST)
Received: from [192.168.217.118] (p5089ad4f.dip0.t-ipconnect.de [80.137.173.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gabriel-smtp.zfn.uni-bremen.de (Postfix) with ESMTPSA id 4K3gxK2pWVzDCfn; Wed, 23 Feb 2022 17:10:29 +0100 (CET)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\))
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <CAKoRMYEarGwqVZcUX0PskLyJUtRNHRUSJ0zGjNTrwGUwkXFrFQ@mail.gmail.com>
Date: Wed, 23 Feb 2022 17:10:29 +0100
Cc: Emile Cormier <emile.cormier.jr@gmail.com>, Duncan Coutts <duncan@well-typed.com>, cbor@ietf.org, Jared Corduan <jared.corduan@iohk.io>, Alexander Byaly <alexander.byaly@iohk.io>
X-Mao-Original-Outgoing-Id: 667325428.893908-594c07edf07096f05b142938505c0baf
Content-Transfer-Encoding: quoted-printable
Message-Id: <8A4B7EFC-6187-4FA3-888E-9D95D6C79400@tzi.org>
References: <9300a81abc33a45a9f3c7c1c62da88908280e54a.camel@well-typed.com> <1D3EF118-0223-43BC-81B2-369D4515DB21@tzi.org> <1ce2c092d3214d5fdce59435fc10b084c1ba48ca.camel@well-typed.com> <DFCBE61C-35B2-42A2-8D1A-A633CF939154@tzi.org> <2e10456c5791a422bf7218e7b84051f2b7121b66.camel@well-typed.com> <CAKoRMYGcwrhVWd-J3dX75WZfc+T_oyb6NCUNaeCXMW5_-VYdTw@mail.gmail.com> <52EDB93C-827A-465F-B644-51B3EF590D06@tzi.org> <C9D895BB-40E6-431F-958F-AC031DE4FB58@tzi.org> <CAKoRMYG9X0JF4ehkMc30_UNi0JtT2YMeG4RgxznS6O3Di6pkRA@mail.gmail.com> <CAKoRMYHwewaYxkX=CsfETBbdV7c9U97jfbd9xg=PyrMX5vJhnA@mail.gmail.com> <3B3B7EF0-152B-4015-8485-B204F7AEFFBC@tzi.org> <CAKoRMYFbEG=TkuZPPOiXv2DjEh23Ujd_Q44kQqiWPGc_0GMTuQ@mail.gmail.com> <CAKoRMYHnF6fGJp1dTrJnRHFTBOhreLRwzR_=cCckW1nBXOEz0A@mail.gmail.com> <E8A9E016-2248-4BB9-9864-C6C7D52A4AE5@tzi.org> <CAKoRMYE+gmWyCL9zYDa-O-c3KV_iuzgYuS+Q4fi=U7VHDNDtkQ@mail.gmail.com> <CAKoRMYFdAr1YY3mtmY0NU5X9Bk8_4WYh7bC0CtXpZc3toLSu8g@mail.gmail.com> <7FA54553-5421-4C45-B7DD-E9B2D379F46F@tzi.org> <CAKoRMYH3MTMi_tX5KHF-O-DTKzopiGqe3fi6XjkPaGCM4823OQ@mail.gmail.com> <7dfd62ccb6c089af90c90f26a8945f23232ecbc1.camel@well-typed.com> <CAKoRMYEOo1Gqfc4W4k3NOLKpFa97Q9YzLCm3r0PJ13V2HJPf3A@mail.gmail.com> <2BBF6463-FDB2-4A8A-B20D-7A1AD976A90D@tzi.org> <CAKoRMYFi8uo2GfHA9s1n+-rMO8Ja9=2qMMzjS9Z=F9r3LFozRQ@mail.gmail.com> <8EA89504-C176-4850-9BB8-C7E7206374FF@tzi.org> <CAKoRMYGmOa0hzEFsJh8kpz0bU5x56Yc9P=DBK-ghU83gXxPv7A@mail.gmail.com> <CAKoRMYGUvmxufQUVyvX2mciq5LCmV0Nz-uE2MJn54GDBB+9DRw@mail.gmail.com> <CAKoRMYF_19V6mu4S9GVqfiNzyQVvvOzX6eYwHp_DtZQoG0xTKg@mail.gmail.com> <4B47F4D7-ADE3-4A22-8A5B-97F4E5FCD933@tzi.org> <CAM70yxACa4ZgOojHLMRv+9Bpuv7dPFtupm+tnrnDZC_i_Dsr8g@mail.gmail.com> <EB822234-89C2-4CFA-8807-2BD2E97D1E60@tzi.org> <CAM70yxAG_rMc8ANWgFvyAao_G5cLNOEL0mrfD8tLmJVxtn_8SA@mail.gmail.com> <CAKoRMYEarGwqVZcUX0PskLyJUtRNHRUSJ0zGjNTrwGUwkXFrFQ@mail.gmail.com>
To: Michael Peyton Jones <michael.peyton-jones@iohk.io>
X-Mailer: Apple Mail (2.3608.120.23.2.7)
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/ZYvRD1uI-YmMx0rplV0dDve_LKQ>
Subject: Re: [Cbor] A CBOR tag for alternatives/unions, request for comments
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Feb 2022 16:10:38 -0000

On 2022-02-23, at 16:55, Michael Peyton Jones <michael.peyton-jones@iohk.io> wrote:
> 
> I do think we would prefer to keep the overlapping encoding. Many other kinds of CBOR encodings have redundancy, starting right from the basics with the encoding of numbers.

Yes.  In 2013, for a while I was hoping to fix this for the entirety of CBOR (like we did in CoAP), but was advised that was too radical.  There also was the occasional use case for non-preferred encoding.

But I don’t think we are out there actively creating more of these cases.

> We believe that not only is this approach consistent, but it's actually helpful: it allows users to decide whether they care more about flexibility or regularity.

Well, in the non-overlapping approach, they get both! :-)

> If you want, you *can* just encode everything with the long form and not worry about the compact form. This simplicity is sometimes helpful.

I think that spending two ifs in the encoder is OK here.
(The decoder will need to handle all cases anyway, so there is no advantage.)

> Of course, we can (and should) require that the canonical version be the most compact.

Which is the case when we do non-overlapping encodings.

Grüße, Carsten

(Leaving the rest of the message intact as that is still in some moderator queue.)

> 
> Best wishes,
> Michael
> 
> On Wed, 23 Feb 2022 at 15:06, Emile Cormier <emile.cormier.jr@gmail.com> wrote:
> On Wed, Feb 23, 2022 at 10:48 AM Carsten Bormann <cabo@tzi.org> wrote:
> I’m not currently proposing to standardize this, but the cbor diagnostic tools support a transform to tunnel CBOR data items through JSON [0]:
> 
> $ echo "122(h'1234')" | diag2cbor.rb | cbor2json.rb -j
> {
>   "@@!t122": {
>     "@@!b": "EjQ"
>   }
> }
> 
> This works by hijacking JSON object keys starting with @@!; I’m not sure the code handles all cases so we have achieved full transparency yet, but that is a SMOP [1].
> 
> Grüße, Carsten
> 
> [0]: https://github.com/cabo/cbor-diag/blob/master/lib/cbor-transform-j.rb
> [1]: SMOP = Small matter of programming
> 
> I was thinking something as simple as:
> 
> [<alt_index>, <value>] 
> 
> where <alt_index> is a JSON number and <value> is the datum transcoded to JSON. However, transcoding this back to CBOR would be lossy without any other context.
> 
> 
> -- 
> 
> Michael Peyton Jones
> Software Engineering Lead | London, UK
> 
> Website: www.iohk.io
> Skype: michael.s.pj
> Twitter: @mpeytonjones
> PGP Key ID: 29F64616
> 
>  
> 
>    
> 
> 
> This e-mail and any file transmitted with it are confidential and intended solely for the use of the recipient(s) to whom it is addressed. Dissemination, distribution, and/or copying of the transmission by anyone other than the intended recipient(s) is prohibited. If you have received this transmission in error please notify IOHK immediately and delete it from your system. E-mail transmissions cannot be guaranteed to be secure or error free. We do not accept liability for any loss, damage, or error arising from this transmission