Re: The "CBOR Everywhere" Project

On 2022-12-15 10:05, Christopher Allen wrote:
> On Wed, Dec 14, 2022 at 8:20 PM Anders Rundgren < <>> wrote:
>     For me it is obvious that developers of new designs should seriously consider CBOR as an alternative to JSON and XML:
> <>
> Here is my own list of answers for "Why CBOR?":

Thanks Christopher,
I have only looked at this topic from a JSON/XML horizon.

The conversion ("upgrade") is simple with one exception; I'm not entirely convinced that adopting the CBOR tag system is sufficient for everybody, which is why I have toyed with a new CBOR construct:

Some CBOR folks maintain that URLs are not only big but bad as well.  However, high-level systems like Open Banking are frequently updated as well as defining many object types, both which seem to speak for locally managed namespaces.



> Why CBOR?
> The Concise Binary Object Representation, or CBOR, was chosen as the foundational data structure for Gordian specifications such as Envelope and URs for a variety of reasons. These include:
> * IETF Standardization. CBOR is a mature open international IETF standard.
> * IANA Registration. CBOR is further standardized by the registration of common data types through IANA.
> * Fully Extensible. Beyond that, CBOR is entirely extensible with any data types desired, such as our own listing of UR tags.
> * Self-describing Descriptions. Data is self-describing, so there are no requirements for pre-defined schemas nor more complex descriptions such as those found in ASN.1.
> * Streaming Friendly. CBOR works well with streaming without requirements for extra memory; its tagging system allows for data to be skipped if it is irrelevent or unknown.
> * Constraint Friendly. CBOR is built to be frugal with CPU and memory, so it works well in constrained environments such as on cryptographic silicon chips.
> * Unambiguous Encoding. Our use of Deterministic CBOR, combined with our own specification rules, such as the sorting of Envelopes by hash, results in a singular, unambiguous encoding.
> * Multiple Implementations. Implementation are available in a variety of languages.
> Compact Implementations. Compactness of encoding and decoding is one of CBOR's core goals; implementations are built on headers or snippets of code, and do not require any external tools.
> See also:
> * a comparison to protobuffers: <>
> * a comparison to Flatbuffers
> <>)
> * a comparison to other binary formats
> <>
> -- Christopher Allen

Received on Thursday, 15 December 2022 09:41:58 UTC