-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft 02: Describe Nil/Max UUID in variant table #16
Comments
Seems logical enough to me. I will slate it for IETF 115 discussion in addition to cross posting to the mailing group. |
Makes sense. I agree some clarification is necessary because Table 1 looks to conflict with Max UUID, but by the way, do we need to limit the variant field to one byte rather than the remaining 64 bits? Even after our great-great-grandchildren consume
Or this?
|
We could also say "Reserved for the next future variant." for |
This is not fully correct. Forget about how the table is in RFC 4122. In the good old Apollo Computer days, there was a Making the variant field variable length, doesn't make any sense. It was defined on the same location as the family field on purpose. I would almost rather say: the variant field IS the family field. What I think should be done? Well, I would recommend to redefine all variants to their 8-bit format, where
Look at what happened to |
So this...
...should become this...
...in my opinion. |
We can just forget about the family field because, as long as Msb0 is set to 1, no ID will collide with
|
I don't think this is useful. First, we don't need 18446744073709551616 variants, or in this case 64 variants (what actually isn't very different from 32, so I don't see a reason for having 64), I think we could better use this amount of possibilities for identifying objects, not variants. Second, maybe someone don't want have subversioning on the bytes directly after the |
Perhaps, at this stage, we don't need to say in the RFC what the
It doesn't really make sense to reserve one byte and order the next variant author to use |
I think your last row in the table is a very bad thing to do. Also, you contradict yourself by saying that my way is too costly, but we also don't need many variants. Note that version can only hold 16 values, where half of it is already taken. Also, uuid6/uuid6-ietf-draft#26 is out of scope. |
Can you please elaborate on this point?
Not contradictory. Because we don't need many variants, reserving one byte for
I'm afraid you are confusing versions and variants. Versions are specific to the On the other hand, if the future authors are considerate enough of the future of UUID spec, they will likely take the I now think it's a good idea to add one paragraph below Table 1 stating the above intention to guide future authors like:
We can only encourage (but not enforce) this rule because, as long as |
Repeating my comment from The January IETF interim meeting: This reads like we just want to clarify within the table that Nil/Max (omni) are present in the variant ranges. Could we not update the table to say: |
Seems to me a reasonable solution for now. It reserves the range where Omni-UUID is in for later definition, but also already tells to take into account having a variant for it in the future. One addition: It seems the RFC at the moment will only documentate variant 1 (and its subversions). Maybe it is also good to documentate variant 0 (and its subfamilies). Because variant 0 family 0 is
Source: https://opensource.apple.com/source/CF/CF-299.35/Base.subproj/uuid.c.auto.html So, for Nil-UUID:
Then, we can change the description text for variant zero to: |
@ben221199, maybe I can sneak Variant 0 and its sub-families into an appendix or I could link that source exactly as a reference. |
I think an appendix would be okay for now. In that case, at least the variant is included in the RFC, so no linking to sources that can disappear in the future, but not part of the main specification. I'm cool with that. |
- Describe Nil/Max UUID in variant table #16 - Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49 - Appendix B, consistent naming #55 - Remove duplicate ABNF from IANA considerations #56 - Monotonic Error Checking missing newline #57 - More Security Considerations Randomness #26 - SHA265 UUID Generation #50 - Expand multiplexed fields within v1 and v6 bit definitions # 43 - Clean up text in UUIDs that Do Not Identify the Host #61 - Revise UUID Generator States section #47 - Expand upon why unix epoch rollover is not a problem #44 - Delete Sample Code Appendix #62
At the moment, the Nil-UUID is part of variant 0 and by that definition reserved. Variant 0 uses
AF_UNSPEC
in that case.However, the range of the Omni-UUID isn't reserved yet. This issue suggests to reserve a variant of the Omni-UUID. I would suggest to only reserve the
0xFF
variant. Why? I will explain.In the early days of UUID, there was no such thing as variants. There was only "family". This family field consisted of only one single byte, so it ranged from 0 to 255. In modern days, this is the same byte as where the variant byte is in. With this information, the new variant table will be this:
0b0*******
0b10******
0b110*****
0b111*****
---
0b11111111
---
Only 255
---
Omni-UUID variant
Handling the variant/family like this, it has at least 2 advantages:
This doesn't mean that Variant 255 always should have all bits set to 1. It only reserves the range the Omni-UUID is in. I also think it is important to add this variant in this specification, because this specification defines the Omni-UUID itself.
The text was updated successfully, but these errors were encountered: