-
Notifications
You must be signed in to change notification settings - Fork 98
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
DID Core editorial review (2) #403
Comments
I realize that the first comment on §5, though does not change the core specification and, in this respect, is not a substantial change, is way more than "just" an editorial issue. I let @msporny, @peacekeeper, or @talltree decide whether this should be spun into a separate issue and/or a PR. At this point, I am not sure whether I can find the time to contribute such a PR (ie, to create a spec-text for the vocabulary) but we can discuss that later. And it is of course contingent on whether the WG agrees with its creation. |
I decided to move the comment on §5 into a separate issue (#404). I have not removed that comment from the current issue, but I have checked the relevant checkbox, as well some other that all belong to the same problem area of vocabulary definition. My apologies for the confusion, I should have put that one into a separate issue in the first place. |
The section should be an easy to read list so that a method implementer can look down it and say "yes I do this", "no I don't do this", and then self-assert (and ideally point to the sections in their spec) for the purposes of say, passing the 'test suite' or being listed somewhere as a conformant implementation of a DID method spec. Similarly the list is there for the people who are checking additions to the DID Method Registry. Personally I think the normative language is fine - it's how you can say if something is a conformant DID method spec or not. Agreed it wouldn't hurt for the DID Method Registry to point to this. |
Agreed... #281 (comment) says some of the terms are defined, but I don't see where. Will look into this in a separate PR from the editorial stuff. |
Yes, in any case. Something should be there reinforce this. |
PR in the Registries for comment about context hashing: w3c/did-extensions#146. Agreed we could have language about the JSON-LD consumer checking the hash, but only after it's a registration requirement. |
@peacekeeper Are multiple mime types valid? Will PR if so. |
We already have registered methods that violate this requirement; and methods should be free to make their own choices about this. For #403
Re: key types and formats - I believe this is covered by #423 (and in general is definitely more than an editorial issue at the moment).
As the spec is currently written, the domain would not be the DID doc, but the DID subject, which (as written today) can be anything. So my understanding is there is no constraint with regard to type on the domain of the
I've spun this out into #447 as a reminder to run through everything later when things are more stable. |
I just meant, the things that are duplicated in or covered by another issue already, or that I commented I don't think will be addressed.. ticking them off doesn't seem right if they're not addressed, but some way of marking things as no longer outstanding so I don't have to keep reading the list over and over.. maybe I should make my own copy of the list :) |
We already have registered methods that violate this requirement; and methods should be free to make their own choices about this. For #403
Closing based on request by @iherman since many changes have been made based on this issue and another re-read will be required at this point to see if the original unresolved issues remain. |
We already have registered methods that violate this requirement; and methods should be free to make their own choices about this. For #403
We already have registered methods that violate this requirement; and methods should be free to make their own choices about this. For w3c/did-core#403
Here is the second (and last) part of my editorial review.
5. Core properties
If, as a reader, I have to find the normative definition of the properties, I would look at the table of content to find that. But there is a bunch of inconsistencies:
id
,type
(alsoalsoKnownAs
but there is a separate PR to take care of that).id
andtype
but are not separately definedI think what is missing is a clear, formal specification of the full DID Core vocabulary, with all the properties and classes (types), their shape constraints, domain and range definitions, etc. That specification should be at one place in the document with links to the section where these terms are defined in English prose. That vocabulary would also be defined, for the LD world, as a formal, RDFS/OWL ontology in its own namespace. The Web Annotation Vocabulary might be a good example for what I am referring to, although that vocabulary is many time larger and more complex than DID Core.
(Note that the definition should not be made using
rdf:domain
andrdf:range
to define constraints. Those statements are licenses to infer and not a constraint. If we want to define constraints we either must use English prose, or formalism like SHACL. Or both, actually.)This is related to the previous comment, but is a comment in itself. For a clean ontological definition of the verification methods and verification relationships, I wonder whether it is not worth defining, formally, something like a
VerificationMethod
type, which would be a supertype for the types likeEd25519VerificationKey2018
, and which would also act as a clean range constraint for methods likeauthentication
as well as part of the domain constraints for properties likecontroller
orid
. All this should be part of the aforementioned vocabulary specification. (Clearly, this is not really an editorial comment only. Sorry about that…)5.3.1 Key types and formats
Ed25519VerificationKey2018
must be formally defined as a type, as part of the vocabulary defined by this specification. These terms must be added to the aforementioned DID Core vocabulary definition. Furthermore, and as a consequence, terms likepublicKeyPem
,publicKeyBase58
are also terms formally defined by this specification and should be presented as such.5.4 Verification Relationships
I must admit the practical differences among the different verification relationships confuse me. The definition of each of those terms is essentially identical (I have the impression that the sections are copy pasted first and then the terms have been adapted in the text and the examples) and I found no examples, definition, etc, on what the real-life usage difference is among these different terms (the only reference I saw much later in the document is where authentication and authorization entries are used by services). Why is it necessary to have a different
assertion
method than anauthentication
, for example? Why isn't enough for a DID document to "simply" convey a set of verification methods?I am sure there are good reasons to have those, but these are not made clear in the text. One or more very short use cases put into a Note would go a long way to make text clearer (like the aforementioned reference to service endpoints).
5.5 Service endpoints
(I know that this section may radically change but the comment might still be relevant)
instances
,spamCost
,currency
) and types that are not defined by this specification. A cursory reader should be aware of that!verificationMethod
property. The intention is clear but this shows that theverificationMethod
property is not properly defined: what is the allowed domain of this property? Everything I read so far in the text suggests that it is a DID Document (although, again in a vocabulary, no such type has been defined) but the example shows that it is not the case, because it can also be used on an object of type "service". On the other hand, I presume it could not be used on any other object type. These details MUST be defined formally somehow, somewhere.6.1 Core representation - JSON
@context
must be ignored)?6.2 Core representation - JSON - LD
subject
property, that must be aliased to@id
, too.7. Methods
did:vaultie
,did:emtrust
,did:selfkey
. Even if the statement is a SHOULD and not a MUST, it looks funny if by the time we go to Rec we will have registered methods that do not follow this…8.1 DID Resolution
It is not clear from the text what a "be a DID document conforming to the abstract data model" means as opposed to "DID document in one of the conformant representations.". Indeed, an abstract data model is abstract and it is not clear how a resolver could return it without representing it in a conformant representation. Which ends up saying that I am not sure what the difference is between
resolve
andresolveStream
. An explanatory note on this would be useful.The accept input metadata property: the way the text reads the value can be a single mime type. Is it worth considering a comma separated link of mime types like in the case of the HTTP Accept header?
Note if the answer is 'yes' and changes are made, they should also be made on the corresponding DID URL dereferencing input metadata in §8.2.1. In fact, for the case of DID URL Dereferencing this option may be even more useful than for DID dereferencing as this value could be translated, by a method, directly into an HTTP Accept header in case the resource to be fetched is, in fact, an HTTP resource.
8.3 Metadata structure
9.8 The role of human-friendly identifier
9.9. Immutability
subject
property, all references toid
must be changed in this section.10. Privacy Considerations
11. Examples
A. Closed issues:
B.2 application/did+ld+json
B.3 and B.4
C1. Normative references
C2. Infomative references
https://www.w3.org/TR/did-use-cases/
as a referencehttps://tools.ietf.org/html/draft-sporny-hashlink-04
The text was updated successfully, but these errors were encountered: