Session Date/Time: 27 May 2026 14:00
Laurence Lundblade: So we're at the top of the hour, but I think we should wait a couple more minutes for some more people to come on. So let's do that.
Laurence Lundblade: All right, well, it's 02 and nobody's come on in a few minutes, so let's call it critical mass and, and move on. Um, somebody can somebody take notes? Mar- Marco is not here, so he won't be. Christian, can you be note-taker?
Christian Amsüss: Yes, sure.
Laurence Lundblade: Okay, thanks. Um, so the first thing on, on the menu here is, uh, discussing any last-call issues with the EDN literals document. Um, the way I see the discussion on the list is that nothing that's being discussed there needs to be discussed here, they're just, uh, minor tweaks and we do have consensus so far on what's in the document. Does anyone have anything they want to raise that they think needs discussion here that, uh, we can't just tweak on the list?
And I see nothing. Christian?
Christian Amsüss: Uh, I, I have yet to, to do my, to do my review, but that will be very positive. So, so much I can already tell, so nothing to discuss.
Laurence Lundblade: Okay, good. Well, and clearly we still have some time left on the, uh, on the last call. So, things may come up later, but I just wanted to make sure that we spent the time here if we needed it. It appears that we don't. So I'm just going to do one last moment. Does anybody have anything for EDN literals to discuss that we need this time to discuss that can't just be tweaked on the list?
Okay. Um, so that was easy. We got that one out of the way. Uh, Laurence, it's on you now. Uh, we are moving to the discussion of, uh, serialization. So I will give you slide stuff here as soon as I get the right control for that. There we go.
And it's on, it's, it's your meeting now, Laurence. Go ahead.
Laurence Lundblade: Okay.
Laurence Lundblade: All right, um, can you, uh, uh, the slides showing and you can hear me okay?
Laurence Lundblade: You sound great and the slides look fine.
Laurence Lundblade: Okay.
Laurence Lundblade: Uh, all right, so first, uh, just a, just a, just an update on the draft. Um, um, uh, so, the examples, uh, appendix was created and, uh, there's 25 examples there. Um, you know, we tried to give, uh, try to make the examples kind of highly curated so, um, they provide a lot of test coverage. Um, so I didn't need us, you know, as many examples because they're, I think, hopefully they're well-constructed. Um, I spent a lot of time applying them to QCBOR and like, the overall strategy, and, you know, it's, that, uh, that's, has worked out, uh, fine. Um, I mean, it's, it's a lot of work to integrate them into test cases because it's definitely not just, uh, um, you know, does this, uh, pass, yes or no. I mean, there's, there's, uh, and, um, you know, it depends on the different encoding and decoding APIs. Um, you got to use the right encoding API and the wa- the right decoding API for each of the examples. So. Um, so I, I, I'm, I think, I think there's one little correction outstanding to it, but that is all done and I think it's, it's fine and I haven't really heard too much, um, uh, any complaints or anything about that. So. Um, so, uh, next, um, thing I, I recently closed was there was a, a PR to move the NaN appendix to somewhere else like a wiki. Um, I'd like to keep it, I, I really want to keep it in the document because the NaN discussions continue, um, and, um, I'd like it to be there when the document goes to IETF last call. Carsten?
Carsten Bormann: So, were you mind removing RFC, uh, do you want this to be in the RFC?
Laurence Lundblade: I think I want it to be in the RFC.
Carsten Bormann: Okay, because that, that completely changes the, the amount of effort that, that needs to be expended in looking at this appendix. Thank you.
Laurence Lundblade: Yes, everybody should review it as if it were going in the RFC. I think that is the right route, route, review strategy for it. Um, so there's five open PRs. Um, um, some of them are pretty straightforward. Um, uh, there's a PR to add a sample code for encoding half-precision. Um, the, the decoding half-precision is in 8949 but the, the, the encoding was not. This is lifted from the CDE draft. Um, I think that's straightforward. Uh, still waiting on, uh, Rohan's, uh, additional security considerations. Um, um, uh, there was a request to move Appendix B to the main body. Um, I still want to keep it where it is, um, and I've, uh, added a cross-reference from the section on deterministic serialization to the appendix. Um, I keep it, I keep it like it is because, um, that keeps the draft, the main body of the draft focused on serialization rather than going out on, into protocol design. Um, so I'll, I'll leave that, uh, kind of for another week or so and then I'll, uh, probably merge the, the cross-reference and, um, remove the issue. Um, uh, there's Carsten's quick review of the abstract and Section 1. I still, I've, there's been some comments on that back and forth. Um, um, I, I definitely need to process that and, um, I mean there's definitely some things in it that, uh, I think need to be fixed, um, that, you know, that, that I'll things in it that I will put in the, the serialization draft and there's, there's some things that probably I won't. Um, uh, so that's, that's one of the, the big things I have. It's not that big. One of the things I have to work on for the next. And then, um, uh, there's a PR for, uh, uh, reframing of the term general serialization, special serialization, and when, whe- to to use preferred plus. So that's for discussion later after I finish the draft status update. So, in a few minutes. Um, then, uh, uh, I'm planning a, a another draft in a week or so. Um, it'll include, uh, the half-precision encoding sample, um, and the reframe of general serialization that we're talking about today, and some other, uh, small fixes. I, I believe the, uh, draft is getting very close to complete. Okay, any, uh, let me stop for comments and questions there before we go, uh, go into the, uh, the next section. Okay. Uh, so, um, the, uh, I did some rewording to, around, uh, general serialization. It now basically is referred to as the superset of all serializations defined in RFC 8949. Um, and it, uh, also refers to, um, deterministic serialization and, um, preferred plus as subsets of it. I think this is, indeed, much more accurate than what was there before. Uh, the, um, wording also, also, there's also wording that says, you know, a library or a protocol must decode everything in, in general serialization to claim support for general serialization. So it's really, you know, saying, you say you've got a, a, general serialization decoder, you've got to do it all. Um, and then, the, um, yeah, so Christian says, uh, it's in the values or in the constraints. Uh, uh, yeah, go ahead, and Carsten, and, and, and Christian.
Carsten Bormann: Yeah, so, um, I think the, the obvious observation is that, that some of us distinguish between serialization constraints and data model constraints. And, um, the, the idea of course is that a generic decoder, as defined in 8949, can support all of CBOR. Now, if you focus on serialization, you may want to have a partial implementation with respect to the data model. So, for instance, if you are on, on a, uh, constrained device that doesn't even have floating-point support, uh, you still may want to do a general serialization decoder, but you may not want to im- include floating-point support. Right. And I think that's, that's an important point to, to keep in mind here. So, I think this really should be something about of the data model subset that, that this, uh, decoder supports, uh, which serializations does it accept.
Laurence Lundblade: Yeah, yeah, okay. I, I agree with that. Um, so if you support arrays, you must support decoding definite and indefinite lengths, for example.
Carsten Bormann: Yes.
Laurence Lundblade: Yeah, okay. I agree. That, Christian, does that, uh, address what you're saying there as well?
Christian Amsüss: My, my comment was, was just picking up on Carsten's superset or union, which is, um, not that point that we're talking about right now. That was just about, um, h- when we're talking about sets and unions and intersections, personally I don't care if it's in terms of rules that are intersected to become stricter, um, or in terms of, of values that are, um, but, uh, uh, sorry, of rules that are unioned to become stricter or of values that are intersected when things become stricter. Either works. The document just needs to be consistent.
Carsten Bormann: So, there, there are a lot of sets that are supersets of the serializations defined in 8949. And I think the idea is not to invent new serializations, uh, but to support the ones that are in 8949. And, that's where superset maybe misleading to somebody who thinks in math terms.
Laurence Lundblade: Tell me, tell me more about how it's misleading.
Carsten Bormann: Well, a superset means the, the thing that it is a superset of is also in there, but there can be random other stuff in there. And, um, I think that's not what we mean by general serialization. We mean all the, the serializations that are in 8949 are supported. And that's a union of those serializations or, or an intersection of, of, well, there are no serialization constraints, so the intersection is pretty empty. Yeah, okay. Um, yeah, but we, we can do this on the level of PR, so, uh, I think we don't need to, to clear this here.
Laurence Lundblade: Yeah, I'm just looking for the right word here. Um, um, hey Christian, you're, you're typing, and your mic is still on, I think.
Christian Amsüss: I, I'm sorry.
Laurence Lundblade: Yeah. Um, okay, I mean, I, I'll, I'll look and see if I can do better with a word for it, but, um, uh, it seems like the, um, the idea is, uh, is reasonable, right? Um, so then, uh, when you, then there's a section, you know, when to use general serialization. And, um, if a protocol uses general serialization, then you use it when you really mean it, in that the decoder must decode everything, or, you know, every serialization for the data types in use, and the encoder can send anything. Um, and that's, so that's when you use general serialization. I mean, before it was presented as, uh, more like use it when you need streaming or something like that, but I think this is really the main use case for it is, uh, when, in, in a protocol, if you were, if you were to specify a protocol and say this protocol, uh, for interoperability reasons, uh, uses general serialization, um, that means the decoder must decode all the serializations. Ah yes, Michael says the complete set, that's good, I, I like that. Um, so, the, the, the PR says, you know, describes that for, for protocol specifications. It also says, um, if you're implementing a, um, CBOR library, you might want to support general serialization because that's, um, you know, more broadly useful for, for implementing more protocols. Okay, um, then, the, um, the section on seri- special serialization was, um, reworked some. Uh, there was a list of things that you could do outside of preferred plus um, in the general serialization section, and now it's in the special serialization section. Um, so it lists these four things: um, streaming, fixed-width integers, non-trivial NaNs, and determinism involving any of the above. Um, I think that's actually pretty much the complete list, and I'm curious to see if anybody can think of anything else that you can do outside of, that you can't do with preferred plus serialization. So, you know, I put that in the, in the special serialization section, and now, uh, preferred plus refers to, to the, the special serialization section, um, and, to, to this list, and says these are the things you can't do with preferred plus. So if you need these things, uh, you're going to need a special serialization, or you can go, uh, and use general serialization. Um, I'm also, you know, uh, living with the, the, um, um, the, the slightly inaccurate, uh, you know, or the imprecision of using the word serialization to refer to things that tweak the data model. So, um, and I think that is a thing we kind of have to live with. Um, I can't think of a better way to do it. Um, the majority of the things in preferred serialization and deterministic serialization are serialization-related. RFC 89 uses the term that way, 8949 uses the term that way. Um, and I think I feel like, feel like, we've I understand pretty thoroughly, you know, what's a serialization thing and what's not a serialization thing, and, um, you know, the majority of what we're talking about here is serialization stuff. So, I don't think, uh, um, I mean, at this point I, I think, uh, I'm not going to change that, and, unless, you know, we really find a, a consensus on some other way. So. Um, so, I'm, any, any comment on, uh, these characteristics of special serialization and like, are there things you can, uh, you can do outside of preferred plus that, that preferred plus doesn't cover? Carsten?
Carsten Bormann: Yeah, so, the, pretty common, uh, partial implementation is, uh, one where an encoder doesn't do preferred serialization on floating-point values. Um, so this is a little like fixed-width integers, yeah, yeah, yeah, right, for floating-point values. Yeah, yeah, okay, I, I agree that's a good one, yes. I think Joe had a really long list of, of items, uh, and, and we probably should check Joe's list against this list, and, uh, see how, uh, whether there's anything else.
Laurence Lundblade: Yeah, um, yeah, Вадим, I think it's more about the encoder in this, because you're kind of defining a protocol, and you're defining which serializations it uses. So, um, yeah, it's, it's less about the library, and like, if you have a library that just can't do floats, well, it's just a library that can't do floats. I don't think that's special serialization. It's more like... Um, and I, I mean, I, picked the term special serialization to, to have a category where, you know, or we could call it custom serialization or something like that, to have a category where you're outside of preferred plus and you're not all the way to full general.
Carsten Bormann: Yeah, I don't think we have custom serialization in, in CBOR. Um, so, you don't invent new serializations. You, you, right, invent new serialization constraints.
Laurence Lundblade: Yes, yes.
Carsten Bormann: That's a pretty important difference.
Laurence Lundblade: Yeah, yeah, yeah. Yeah, I don't think there's anything in the, so, custom serialization would not be a good name. Yes. Okay. Um, uh, and then, um, I updated the section on, um, when to use preferred plus. Um, the, uh, text is a lot shorter, and the recommendation to use preferred plus is stronger. Um, I suppose we could probably have a lot of discussion about that here, but I didn't bring the text in for that. Um, and, uh, it refers to one of the things, basically says, use preferred plus, um, unless you need deterministic or you need some of the special serializations. Um, that we're just, I just had on the list there.
Carsten Bormann: So, I, I was maybe on the mistaken assumption that deterministic implied preferred plus?
Laurence Lundblade: Oh, yeah, yeah, yeah. Yeah, sure. I mean, okay. I, I just heard you say you cannot use preferred plus with deterministic.
Laurence Lundblade: What I mean by that is, um, if you need determinism, preferred plus is insufficient.
Carsten Bormann: Ah, insufficient. Okay. But it, it does imply it, so, you cannot be deterministic without, uh, the, the two elements of preferred.
Laurence Lundblade: Yeah, maybe the wording needs to be adjusted, but that's the, the intent.
Carsten Bormann: Thank you.
Laurence Lundblade: Okay. Вадим says data model is more... Yeah, Вадим, I think there are some words in the document about, um, libraries. I'm not sure it's all that you're thinking of, but, um, the document definitely is distinguishing between protocol specifications, protocol implementations, and library implementations. Okay, um, and Вадим, I'll also, uh, look a little harder at, at, uh, that to see if there's anything I'm, I can improve in that way. Okay. Okay, well, that is all I have. Um, so I have, uh, uh, a few comments to integrate into the, um, that PR about general and special and preferred. Um, so I'll probably make those by the end of the week, and, um, um, then I'll, uh, work on, uh, Carsten's PR integrating that.
Carsten Bormann: Yeah, I don't know if, if you saw this from, from various messages I sent to the mailing list. I, I'm going to be on vacation the next week. Uh, so I will be back on, on Friday the 5th. Um, so if, if there's anything that, that I can be helpful for, uh, you can expect to get a response on the 5th.
Laurence Lundblade: Okay. Okay, that's it for me.
Laurence Lundblade: Okay. Any, that, so that takes care of our agenda. Are there any other issues that anyone would like to discuss? This is any other business time.
I'm seeing nothing, so I think we have a short meeting today.
Carsten Bormann: Thank you.
Laurence Lundblade: Okay, yes, thanks, everybody. Thanks for coming, and we'll talk to you on the list.
Laurence Lundblade: Thanks. Bye.
Laurence Lundblade: Thank you, all. Bye.
Christian Amsüss: Bye-bye.