-
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
IANA Registry and Registration #162
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made a quick scan through your proposed changes and made comments on the things I found important in my eyes. Not every comment is a request to change, but at least subject to some debate.
Indeed it would be very interesting to learn about the origin of the Namespace IDs. I wonder, is it possible that 6ba7b813 does not exist because a bunch of UUIDs were generated, and the CPU just had a tiny delay between the third and the fourth UUID? So, maybe they were never numbered by hand? 6ba7b810-9dad-11d1-80b4-00c04fd430c8 = 1998-02-04 22:13:53'1511824 GMT I don't think it is a good idea to have this counting upwards numbering scheme. Why don't we simplify it and just allow all UUIDs as Namespace IDs? Contra:
Pro:
What do you think? |
1998-02-04 22:13:53'1511824 GMT is the date of this document: https://datatracker.ietf.org/doc/html/draft-leach-uuids-guids-01 |
@danielmarschall, some good points. But I audited many UUID implementations and I did not see many namespace IDs other than what the original had. There was a discussion post here by me on adding some others for IOT/Database etc, but it didn't get much feedback either. I don't think it needs to be overthought and a simple auto-increment can do the job. As noted above, I did find one library using Edit: I also wanted to avoid what happened with Hashspace ID. Specifically the IESG comments about them being somewhat unrecognizable since they are random. |
@kyzer-davis |
@danielmarschall, yeah the logic was that these NS IDs should be well documented since everybody'd in a namespace generating v3/v5 should have an idea of the correct input for the namespace so that they can all generate the same output. If its just a vendor/implementation specific thing, do it, but don't register it with IANA.
Maybe change the NS ID section to this so its all in one spot.
|
@kyzer-davis Thanks for clarification. I probably missed that detail. Ok, so do I correctly understand that there are the "standardized" namespace IDs (which are numbered and registered at IANA) and the "custom/vendor-specific" namespace IDs? This makes sense and I think that's good. But then it would be very important that vendors MUST NOT use the numbering scheme from IANA, otherwise we end up having multiple "6ba7b815" namespaces. If vendors use UUID1/4/6/7 for their custom namespaces, there is no collission. |
@danielmarschall, yeah, it is worth mentioning that an implementation should avoid using that space and pick something else like UUIDv4 (or UUIDv8) for a custom, implementation specific namespace ID else they should register it using the auto-increment logic (and some spec defining its usage and whatnot). |
@kyzer-davis Thanks for that change! But why do you limit it to UUIDv4 and UUIDv8 ? UUIDv1 (as long as node ID 00c04fd430c8 is not used), UUIDv6 and especially UUIDv7 are very important. |
@danielmarschall, I put
I would argue that v8 is probably the best use case for some custom application NS ID value since "custom vendor-specific implementation use case" is exactly why v8 exists in the first place. So calling it out there made sense to me. |
@kyzer-davis So, either use UUIDv8 directly (e.g. to include some custom numbers in it) and risk that there is a collission. Or use UUIDv3/UUIDv5 with a unique namespace ID. But if you use a auto-inc-namespace like Proposal for a different wording (it does not forbid UUIDv8 , because people can do what they want)
Edit: For both proposals, we need to be careful that we are talking about the Namespace IDs, not the final identifier. So these proposals would be clearer: Proposal A (my personal preference): These custom Namespace IDs MUST NOT use the logic above and instead use any other UUID version as Namespace ID. If UUIDv1 is chosen, then the node id MUST NOT be "00c04fd430c8". Proposal B (this makes advertisment for UUIDv7): These custom Namespace IDs MUST NOT use the logic above and instead are RECOMMENDED to use UUIDv4 or UUIDv7 values as Namespace identifiers. |
@danielmarschall, the main point you are calling out is "custom, implementation specific namespace IDs". If you want maximum interoperability on a global scale I would of course suggest registering that NS ID globally so everybody is on the same page with their v3/v5 algos. A v8 NS ID fits that bill. A random UUIDv4 could work too. Sure, allocate a UUIDv7 for it. I can recommend all three. However, omitting the UUID version used for vendor-specific stuff seems weird to me when this is directly relevant to vendor-specific stuff. I also saw your edit: Correct this is for the Namespace ID not the final name-based UUID. |
@kyzer-davis Indeed, I would be glad if you could edit the text. I understand what you are saying. I just want to clarify: I am not talking about my personal use-case. All I try to do is to help people reading the RFC to understand that it is crucial that Namespace IDs must be unique in any case. A unique Namespace ID prevents that UUIDv3/5 of different vendors collide. (In the case the UUIDs "meet" each other in some collection/domain/database/etc.) The other topic you mention is interoperability. Yes, it is true that interoperability (i.e. two applications desire to output the same UUID for a given thing) is not guaranteed if people do not register the namespace ID and/or don't write a specification. |
@danielmarschall got it, check the commit I just posted: |
Looks good! Thank you. |
I also posted a Question over to #161 if anybody wants to comment on that over there. |
Daniel Marschall ***@***.***> wrote:
Does this mean when I am using custom namespaces for UUIDv3 and UUIDv5,
I am forced to register the namespace to IANA, otherwise the UUID would
be "illegal" ?
That is not the intention.
Rather, if you are making a v8 namespace that you intend to use for
interoperation with others, then you should consider registering a pointer to
your stable document.
|
At the request of the chairs, I have posted draft-12 without the IANA changes in this PR. |
I think you mean draft-13 prep, not draft-14 prep? |
Yeah, I have no idea how that got to 14. History for those curious, it had to have append when I did the 490 cd rfc4122bis/
491 git branch -f iana-registratoin origin/iana-registration
492 git checkout iana-registration
493 git diff
494 git add .
495 git commit "draft-13 prep"
496 git commit -m "draft-13 prep"
497 git config --global user.name "Kyzer Davis"
498 git config --global user.email [email protected]
499 git commit --amend --reset-author
500 git push origin iana-registration |
No description provided.