Skip to main content

Concise Binary Object Representation (CBOR)
draft-bormann-cbor-09

Note: This ballot was opened for revision 06 and is now closed.

Barry Leiba Former IESG member
Yes
Yes (for -06) Unknown

                            
Pete Resnick Former IESG member
(was Discuss) Yes
Yes (2013-08-26 for -06) Unknown
2.2: See my followup note to Stephen's DISCUSS, but paragraphs 2 and 3 need to be rewritten.

2.3:

   As with all other major types, the 5-bit value 24 signifies a single-
   byte extension: it is followed by an additional byte to represent the
   simple value (to minimize confusion, only the values 32 to 255 are
   used).

I see no reason to limit the simple value to 32..255 if the additional information is 24. You don't limit that in any other types. I see no reason I should not be able to represent 'True' as either 0b111_10101 or as 0b111_11000 0b00010101. There is no such restriction on integer types, you're making something invalid that doesn't have to be (potentially making implementations less interoperable, because some will reject things while others will accept them), and restricting it seems to go against the comment in section 1.1, sub 1, second bullet. Please explain. (Not that if you change this, you also need to update section 3.2 and 3.9.)

It's also not clear to me why 'False' is not 0 and 'True' is not 1; it seems like it would be easier to implement on many platforms.

2.4:

   Applications may use specific tags defined in the following list and/
   or defined by standard action or in the registry.

I think you should strike "by standard action or" and rewrite this to:

   Applications may use specific tags defined in the Tags Registry
   (section 7.2), which initially includes the tags in the following
   list.

2.4.1: Why is the numeric time value not NTP format, with fixed-point fractional seconds? Doing so would make more sense given section 1.1, sub 1.

3.4: I don't understand why "Inadmissible type on the value following a tag" gets treated differently than other semantic errors. Other semantic errors basically make the behavior decoder-defined. But this one say that a certain kind of decoder "is expected to check the type of the enclosed data item." The same could be said for a decoder that decodes a UTF-8 string into a native string representation. Either put an onus on semantic validity or don't, for all of them.

4: "This section gives non-normative advice". Is there any other kind?
Richard Barnes Former IESG member
Yes
Yes (2013-08-28 for -06) Unknown
I agree with Pete's concern that this should probably not be PS.  It seems like Informational would be sufficient.

It would be helpful in Table 1 and Table 2 if you could include the hex values for the whole initial octet, for the values displayed (0xFF for stop code, 0xF4 for False, etc.)

The tag system described in Section 2.3 / 2.4 seems like a whole lot of unnecessary complexity, especially for things like "URI" and "base64url".
Adrian Farrel Former IESG member
(was Discuss) No Objection
No Objection (2013-09-01 for -08) Unknown
Thank you for working speedily to address my Discuss and Comments.

I have one small point remaining as captured from the email thread....

> > I don't think you particularly made the case for the need for CBOR
> > compared with, for example, ASN.1 BER.  I actually think it detracts
> > from your document to make the claim of being better than ASN.1 BER, and
> > I would prefer your document to just get on with defining CBOR and
> > showing how it works.
> 
> We were asked repeatedly for the comparison during the early discussion.

Yes, I can well believe that the comparison was requested. My point is that I
don't think you have made much of a comparison. The only point made is that the
serialized output for BER is "not particularly compact for many items" and that
"the code needed to decode numeric items can be complex on a constrained
device." I haven't done the cross-check, but I did wonder whether some of the
"not particularly compact" cases were for items that are not present in CBOR,
and whether you were comparing like with like for numeric items.

But this is not a big issue for me, and if you make no change for it I will not
cry.
Jari Arkko Former IESG member
No Objection
No Objection (2013-08-29 for -06) Unknown
Thank you for writing a useful and much needed document. I think it has solid backing from those who build these "things".

I would probably personally have wanted to see slightly simpler format, but YMMV. I'm very supportive of publishing this as an RFC, though as other ADs have said, perhaps it would be enough to make it Informational or at least state that it is "a way" to package data.
Joel Jaeggli Former IESG member
(was Abstain) No Objection
No Objection (2013-08-29 for -06) Unknown
Having heard the dicussion on the status, and whated it play out on the IETF list, I'm moving to no objection. specifically not objecting the status of PS.
Martin Stiemerling Former IESG member
No Objection
No Objection (2013-08-29 for -06) Unknown
I don't see that this has to go for standards track. However, Pete has raised this in his ballot already.
Sean Turner Former IESG member
No Objection
No Objection (for -06) Unknown

                            
Spencer Dawkins Former IESG member
No Objection
No Objection (2013-08-26 for -06) Unknown
I can't emphasize enough that binary encoding/decoding has been outside my areas of expertise since I was using ASN.1 in 1991, so please weigh these comments appropriately.

In the Abstract

   The Concise Binary Object Representation (CBOR) is a data format
   whose design goals include the possibility of extremely small code
   size, fairly small message size, and extensibility without the need
   for version negotiation.  These design goals make it different from
   earlier binary serializations such as ASN.1 and MessagePack, or other
   binary serializations that may be created in the future.

I find a statement about why CBOR differs from other binary serializations that don't exist yet to be odd :-) 

In 3.5.  Handling Unknown Simple Values and Tags

   A decoder that comes across a tag (Section 2.4) that it does not
   recognize, such as a tag that was added to the IANA registry after
   the decoder was deployed or a tag that the decoder chose not to
   implement, might issue a warning, might stop processing altogether,
   might handle the error and present the unknown tag value together
   with the contained data item to the application (as is expected of
   generic decoders), might ignore the tag and simply present the
   contained data item only to the application, or take some other type
   of action.

Just checking - is this level of flexibility normal for decoders? I wouldn't be surprised if the answer is "yes", but I'm reading this paragraph as saying "if you send a CBOR decoder a tag that it doesn't recognize, you can't be surprised at anything that happens next" - is that an accurate paraphrase?

In 5.1.  Extension Points

   o  the "additional information" space.  An implementation receiving
      an unknown additional information has no way to continue parsing,
      so allocating codepoints to this space is a major step.  There are
      also very few codepoints left.

Having lived through a couple of "allocating the last bit" exercises with other protocols, I'm wondering if there is any alternative to approving a proposed standard that's intended to be useful for decades, with an almost-exhausted "additional information" space when it goes out the door. If there's not ... at least, I asked.
Stephen Farrell Former IESG member
(was Discuss) No Objection
No Objection (2013-09-02 for -08) Unknown
Thanks for the definite length answer that cleared up my 
discuss point :-)

-----

Comments below here are the original ones for -06.

- I'm not sure I agree that the IETF LC result was that clear.
ISTM that there were more voices arguing coherently that CBOR isn't
ready for PS yet, or that a WG should consider this topic further.

- I no longer buy the argument that you're meeting the stated
design goals - a fully featured library for all this will have a
lot of code. Absent some openwrt-like build process that'll not be
so useful, and I don't think that selection of CBOR specific
features is likely to be understandable to most application
designers.

- abstract: the design goals don't make the result different,
rather the designer does that and we have no idea if CBOR will or
will not be similar to some future encoding format.

- I don't think the lwig class 1 is well defined and nor do I think
this ought reference it.

- I can see major confusion as to when to use types 2 or 3.  I
think better guidance would be good here in the form of a (set of)
"do that" and "don't do that" statements. I realise that might be
guesswork right now, but if you don't guess now, and CBOR doesn't
fail, I bet bad practices will grow up that cause problems.

- this still reminds me of BEEP, sorry;-)
Stewart Bryant Former IESG member
No Objection
No Objection (2013-08-27 for -06) Unknown
I have no objection to the publication of this information, but support the discusses raised.

I agree with Pete's concern about why this is PS and not Experimental. It may even reasonably be Informational, but PS expresses a level of endorsement that does not seem justified.

I have concerns as to how well this has been reviewed, and wonder how many people, independent of the authors, have done a line by line verification of the correctness of the text.
Ted Lemon Former IESG member
No Objection
No Objection (2013-08-29 for -06) Unknown
I would like to hear more about how consensus was determined on this document, but I don't object to it in principle.