Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Updates re controller property #116
Updates re controller property #116
Changes from 14 commits
a9f97a5
eadc13c
44a9c9d
76ce24f
dcfc7ac
e92d99e
7f54c71
909f01d
1f32576
7b8b533
b085d30
c02cf58
229d7a1
79227a6
8db5053
bd6dfd1
f8ec6f2
48fa8d4
fb4aa43
3e40b39
9c1e39b
2d6248f
303da6b
c4338da
124697a
982605e
515631c
ec440ee
17f99f2
13696a2
535f07e
7d450be
98f1a59
3e69af1
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
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.
It not just the relationships. The entire document is authoritative or not.
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.
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.
This suggestion would leave a broken sentence.
Can you try a new suggestion that addresses the flow of the remaining sentence?
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.
Not sure what happened to my original proposal, but here is the revised one from PR#126
An entity that is [=authorized=] to perform any action on the associated resource such as updating the associated [=controller document=] or updating the associated [=verification method=].
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.
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.
@David-Chadwick Marking this resolved, but please re-review to see if the updated language is good for you.
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.
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.
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.
To my eyes, this does not increase clarity, and probably increases unclarity for new readers, about subjects vs. controllers, and how subjects and controllers are connected to DIDs, DID documents, controllers, controller documents, subjects, etc.
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.
We need to stem the bleeding somehow.
@David-Chadwick Has been wrestling with this issue from the very beginning and he's not the only one.
In centralized systems people believe they can trust identifiers because there is some authority you can appeal to. But in a decentralized system, developers need to understand they don't have an authority to bail them out. What we do have have is cryptography and time. From that, we can build a usable intersubjectivity.
The other alternative would be to get rid of Controller documents altogether an return them to their decentralized form where these notions are primary and understandable. There's no reason the VCDM can't reference the W3C published standard.
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.
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.
In this case, the operative issue is the 'subject' proving control. Not the controller.
The controller, by definition, is someone who can prove control.
The problem is that DIDs can be used as subjects without the controller being involved at all.
So, the expectation is that issues will ask the subject to prove control. They may not. For good reasons or bad.
But only if the subject does prove control do we have any reason to expect the controller == subject.
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.
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.
Do we want to explicitly refer to Joe Biden under the current circumstances? Just saying... 😉
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.
Yeah, I'm open to a different story. Maybe a "spouse of Kelly Smith" could work.
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 suggest we remove this example because it does not clarify anything.
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.
Agreed, this amount of exposition belongs in a Security Considerations section, not in a terminology section. The terminology definitions are, ideally, 1-3 sentences at most.
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'll move it to security considerations
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.
Moved and restated to refer to a teacher in an ambiguous manner.
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.
This is problematic. URLs are specified as always denoting the same entity. DIDs are URLs.
did:example:abc
should be described as either "President Joe Biden" or "the current POTUS".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.
This is a problem with RDF, not with the example.
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 encourage you to log your issue with RDF soon, such that it might be taken up, or at least noted, by the currently active RDF-star WG.
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.
RDF knows about this issue. It is called HttpRange14.
As long as RDF retains a global context for all identifiers such that any use of that identifier necessarily refers to a subject other than the identifier itself, then it is impossible, within RDF to have a statement about the identifier using that identifier.
In the real world, we clarify by context which usage is appropriate. In one context we understand that we are making statements about the subject referred to by an identifier, in others, we understand we are talking about the identifier itself. RDF's treatment of identifiers makes this problematic.
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.
This doesn't seem quite right to me. An identifier is just a string / symbol. These relationships are between the subject (as identified by the base identifier) and the verification method. What is being said by verification relationship, R, is that the associated verification method, VM, can be used to verify a proof for a particular purpose on behalf of the subject when it is identified by the base identifier, X.
Also note the change from "the relationship" to "a relationship" since there can be more than one relationship for the same verification method. I'd prefer to just keep "a [=subject=]" because the wording was simple enough for me, but if this more wordy expression gets to consensus I'm ok with it (or something like it):
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 disagree with this characterization, but I want to acknowledge it's a difference of worldview that has some irreducible impedence mismatch. Which is to say I understand where Dave is coming from, but I disagree that that perspective is helping us.
We cannot know for certain who the subject referred to by the identifier is. Determining the subject referred to by an identifier is an output after the verification and validation of claims made in reference to that identiifier. As such, it is a mistake to START with the presumption that the verification method applies to the subject. It might. It might not.
What we do know is that particular verification methods are declared as suitable for verifying proofs from the controller of the identifier. Whoever that controller happens to be, these verification methods can be applied to have cryptographic confidence that the proof was created by the controller.
The subject may not be involved at all.
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.
What matters is which subject it is. And the ID is what allows there to be no confusion about which one. The fact that the ID is "controllable" is what allows there to be no confusion about whether certain proofs are verifiable by verification methods actually authorized by the controller to be used behalf of this subject. These are the only elements that matter about the subject at this layer. Talking about "who" or "what" the subject is here (e.g., "who is the subject?", "what real world thing is it?"), in my view, continues to be wholly irrelevant and is what I think creates this confusion.
Just because we say "this subject has these authorized verification methods" doesn't mean we also then have to debate whether the subject is a human being who likes rainy days. It also doesn't mean that if we can't decide whether that's true or not that we have to say that it's really the ID that has the verification methods, not the subject. It just doesn't follow. The ID just lets me know which subject -- and then I can use that information to figure out which verification methods are authorized for what (or which services I can use to interact with the subject).
I think we disagree what a "subject" is. Your comments imply to me that your mental model includes more in its definition than is necessary and more than I believe the spec says. Again, as an example, I see no reason whatsoever at this layer to ask: "but what real world thing is the subject?"
In my view of a "subject", it is the centerpiece of this technology. The whole point of a controller document is to enable a controller to logically establish "a thing" (a subject) that can act, interact, etc. with other things -- and to provide a mechanism for others to be able to verify information about those actions/interacts and that they were authorized by the controller. The ID is what allows there to be no confusion about which subject that is (out of all possible subjects) and the fact that it is "controllable" is what allows there to be no confusion about whether proofs were made by authorized verification methods.
When I speak of a "subject" that's it, it's just a logical construct used to distinguish it from "other things". All that matters is that we're "referring to the same 'thing'" when we use the same ID and that we can get some information to interact with it or verify some stuff supposedly done on its behalf.
All other debates about whether that "same thing" has horns, is a good idea or a bad one, wears blue pants, or likes to jump are not relevant here.
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 have a problem with the controller being able to change the canonical identifier. Strictly speaking, changing the canonical identifier means changing the document altogether; put it another way, it means the creation of a new controller document. I would prefer to remove the reference to the identifier, it is not necessary here imho.
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.
That language doesn't say you can change a canonical identifier.
It says you establish control of the identifier by creating proofs.
This is correct. If you can update the content of the canonical resource, you are a controller of the document's canonical identifier.
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.
Well, again from my RDF-tainted view, I am not sure what it means to "control the identifier". Control means an ability to change; but changing the identifier means, strictly speaking, to replace the document because a document and its identifier are intimately bound. (An RDF Resource is specified by its URL. Changing a URL means to introduce a different resource.)
But I acknowledge that this is very much an RDF view of things, so I won't lie down the road over this.
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.
@iherman
Yes. This update is describing that it means to control the identifier.
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.
Strictly speaking, I believe that the controller controls the document and not necessarily the identifier. As an analogy, I may have the right to modify a google document, but I do not control its identifier (which is provided by the google doc system itself.)
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.
From the new abstract:
The point is to demonstrate proof of control of the identifier.
Changing the controller document is simply the most fundamental way to do that. You can also use verification methods. Control of the document lets us deduce control of the identifier. That's the magic. Simply changing a resource is as old as the web. Proving control over an identifier is what DIDs (and now controlled/controllable identifiers) add to the game.
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.
-1 to document controller.
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.
-1 to this change, it creates backwards-breaking changes that makes this document incompatible with DID Core and will make it impossible for DID Core to build on top of this specification (forced class 4 changes in DID WG, which is not authorized to make class 4 changes).
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.
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.
This is not an assumption. It is a constructive formulation. The proof is, by definition, created by the document controller (through the verification method specified by the controller).
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.
-1 for the reasons stated here: https://github.com/w3c/controller-document/pull/116/files#r1839014775
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.
-1 for the reasons stated here: https://github.com/w3c/controller-document/pull/116/files#r1839014775
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.
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.
In this case, I don't think the question is "do we know" but rather "are they ACTUALLY allowed".
To wit: the verifier may not know before doing the analysis, especially in cases of object capabilities and bearer tokens.
So, it isn't "answers the question of 'Do we know...?'" but rather "answers the question of 'can we determine if they are allowed'", which to me is just a wordier way to say "answers the question of 'are they allowed...?'"
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.
The question of "are they ACTUALLY allowed" cannot be answered, unless we have some affirmative (or negative) statement to that effect. If we have no specific statement, then the Open World assumption means we can only say, "we don't know".