w3c / did-resolution

RELEASED DRAFT: Decentralized Identifier Resolution (DID Resolution) 0.2 Specification
https://w3c.github.io/did-resolution/
Other
17 stars 9 forks source link

DID Resolver did-url Use Cases: Draft DID did-url ABNF grammar fails for most of the basic use case patterns... #33

Closed mwherman2000 closed 5 years ago

mwherman2000 commented 5 years ago

The "after Barcelona" (AB) draft DID ABNF grammar (https://github.com/WebOfTrustInfo/rwot8-barcelona/blob/master/draft-documents/understanding-dids-in-greater-depth.md#appendix-a-anbf-for-dids-and-did-urls) fails for some of the basic DID Resolution use case patterns...

ABNF Validation Tool: http://arran.fi.muni.cz/bnfparser2/

Example: NOTE: Use did-url as the Symbol to validate against.

image

A. DID Document Resolution and Dereferencing Use Cases

  1. PASS Resolution to return an entire DID Doc | did:xyz:1234

image

2a. FAIL Dereferencing to return a JSON component (fragment) of a DID Doc | did:xyz:1234#key1

image

2b. FAIL Dereferencing a service-id to return the JSON description (fragment) of the service endpoint. | did:xyz:1234;bops

image

  1. FAIL Return a DID Doc that only contains a selected subset of the DID Doc's components (fragments/attributes) | did:xyz:1234?$select=""

image

  1. FAIL Return a DID Doc that only contains DID fragment with a selected subset of the DID fragment's components (fragments/attributes) | did:xyz:1234#key1?$select=""

image

B. DID Document Service Endpoint Invocation Use Cases

2c. FAIL Dereferencing a service-id and invocation of the corresponding service endpoint (with no parameters) | did:xyz:1234;bops?

image

2d. FAIL Dereferencing a service-id and invocation of the corresponding service endpoint (with parameters) | did:xyz:1234;bops/foo/bar?a=1#flip

image

C. DID Document Operations Use Cases

4b. FAIL Does this DID Doc contain a service endpoint corresponding to a particular service-id resolvable by this DID Resolver | did:xyz:1234;bops?exists

image

D. DID Document Collection Operations Use Cases

  1. FAIL Does this DID Doc exist/is resolvable by this DID Resolver | did:xyz:1234?exists

image

4a. FAIL Does this DID Doc fragment exist/is resolvable by this DID Resolver | did:xyz:1234#key1?exists

image

  1. FAIL Return all of the DID Docs available to the DID Resolver | did:?

image

  1. FAIL Return all of the DID Docs available to the DID Resolver for a particular DID method | did:xyz:?

image

  1. FAIL Return a batch of DID Docs available to the DID Resolver for a particular DID method | did:xyz:?$top=10&$skip=100

image

  1. FAIL Return a filtered batch of DID Docs available to the DID Resolver for a particular DID method | did:xyz:?$filter=""&$top=10&$skip=100

image

  1. FAIL Return a filtered batch of DID Docs that only contain a selected subset of the DID Doc's components (fragments/attributes) for a particular DID method available from a particular DID Resolver | did:xyz:?&$top=10&$skip=100&$select=""

image

E. DID Resolver Service Operations Use Cases

  1. FAIL Is the particular DID Resolver Service alive and responsive | did:?ping

image

  1. FAIL Return list of DID methods resolvable by this DID Resolver | did:?getMethods

image

  1. FAIL Return a list of capabilities supported by a particular DID method resolvable by this DID Resolver | did:xyz:?supportedCapabilities

image

F. DID Resolver Service Response Format Use Cases

15a. FAIL Resolution to return an entire DID Doc in JSON format | did:xyz:1234?$format="json"

15b. FAIL Resolution to return an entire DID Doc in ATOM format | did:xyz:1234?$format="atom"

15c. FAIL Resolution to return an entire DID Doc in XML format | did:xyz:1234?$format="xml"

image

mwherman2000 commented 5 years ago

The failures were caused by undocumented changes being made to Appendix A (addition of the "$" and "!" operators) without consulting the larger DID community.

PR https://github.com/WebOfTrustInfo/rwot8-barcelona/pull/164 resets the grammar to BB (before Barcelona). A copy of the grammar can be found here: https://github.com/mwherman2000/indy-arm/blob/master/abnf/did-abnf-2019-03-07.abnf

talltree commented 5 years ago

@mwherman2000 , I think you misunderstand. What was developed in Barcelona is a proposed set of revisions to the ABNF for the DID spec based on the work of the DID Spec team that self-organized there. That's the whole point of the Rebooting the Web of Trust conference—for teams to come together to work on work items to advance the community.

The proposed revisions to the ABNF have no standing until they are presented to the CCG. That hasn't even happened yet—the CCG didn't even meet last week—nor is the RWOT DID team finished with the document we started to explain it. So maybe hold your fire until the troops can reach the beach?

mwherman2000 commented 5 years ago

RE: Barcelona

@talltree The earth continued to rotate on this axis and the DID Resolution community met on its regular schedule. Most of the meeting was spent reviewing and discussing the 20+ DID Resolver use cases in an open forum: https://github.com/w3c-ccg/did-resolution/issues/32

An open discussion - all carefully documented and recorded - with open, public follow-up.

p.s. Do you have a complete set of use cases for your grammar? I recommend building a comprehensive set of use cases and samples first before working any further on your grammar ..,a best practice for any software project. IMO, working in the grammar first/in isolation is akin to "pushing rope".

peacekeeper commented 5 years ago

@mwherman2000 I agree the "after Barcelona" ABNF should be considered just a proposal at this time, not more. Personally, I also have questions about it, e.g. whether there really needs to be an extra did-content-ref = "!" content-id construct in the ABNF, and I haven't heard the arguments yet. Considering that several key members of the CCG worked on this at a meeting, that ABNF is definitely a proposal that deserves serious attention by the rest of the CCG (but probably in the "main" CCG mailing list and calls, more than here on the "DID Resolution" work item).

At the same time I also want to point out that your own proposals and use cases around the DID syntax (to consider the syntax an "algebra" or "protocol specification") at this time don't necessarily reflect community consensus either - for example, so far I haven't heard anyone other than you promote the idea that DID syntax should support something like did:?getMethods.

Therefore, both topics need more discussion to reach consensus.

(As an additional, orthogonal comment, looking at your screenshots it seems you tried to validate against the did rule, not against the did-url rule. If you use the latter, then for example your use case 2a should PASS rather than FAIL.)

mwherman2000 commented 5 years ago

@peacekeeper In an early, early test, I did try validating the ABNF against the did rule but if you look at the screen shot for this issue (https://github.com/w3c-ccg/did-resolution/issues/33#issue-418459032) where virtually every use case failed, I was, in fact, using did-url. I appreciate the care you're taking to look at the uses cases (https://github.com/w3c-ccg/did-resolution/issues/32).

Considering that several key members of the CCG worked on this at a meeting, that ABNF is definitely a proposal that deserves serious attention by the rest of the CCG (but probably in the "main" CCG mailing list and calls, more than here on the "DID Resolution" work item).

I haven't seen any record of meeting where Drummond's DID ABNF was proposed or discussed and if so, a list of who was present. There's been no visible effort to build trust around Drummond's DID ABNF. It appears to have "just happened".

Therefore, both topics need more discussion to reach consensus.

I agree but, IMO, not as PRs to the did-spec as @dmitrizagidulin suggested. Competing PRs are too difficult to manage. I recommend that Drummond propose his syntax as a did-spec issue like anyone else ...supported by a comprehensive list of use cases.

I recommend we start with the use case discussions first. Let's not "push the rope".

talltree commented 5 years ago

I haven't seen any record of meeting where Drummond's DID ABNF was proposed or discussed and if so, a list of who was present. There's been no visible effort to build trust around Drummon's DID ABNF. It appears to have "just happened".

First of all, it's not "Drummond's DID ABNF". It was an outcome of the DID Spec group that formed at Rebooting the Web of Trust #8 in Barcelona, which is a community event, and which is about as visible as we can make it, i.e., full documented and reported to the community here and here.

Secondly, we haven't had a chance to discuss this on a CCG call yet because there hasn't been one since RWOT.

Michael, I would like to understand why in this forum you consistently shoot first and ask questions later. We have longstanding members of the community who are making their best efforts to collaborate in different community events, yet your comments seem to imply that we are trying to work behind closed doors or that we have some secret agenda. Why is that?

mwherman2000 commented 5 years ago

We have longstanding members of the community who are making their best efforts to collaborate in different community events, yet your comments seem to imply that we are trying to work behind closed doors or that we have some secret agenda. Why is that?

  1. These documents were created in an obscure location - i.e. neither the did-spec nor did-resolution repositories - where this discussion should be taking place.
  2. These documents and their locations weren't publicized until today. IMO, there could/should have been an update email sent to the CCG mailing list soon AB.
  3. There was no attempt to include remote participation (although this was discussed on the CCG calls BB) ...so we've ended up with a fork in thinking, ideas, and use cases.

I recommend we (re)start with the use case discussions first. Let's not try to "push the rope".

talltree commented 5 years ago

@mwherman2000 You clearly have a completely different view of the role of the Rebooting the Web of Trust conference in advancing the work of this community that many of the rest of us do. And how can you charge that "there was no attempt to include remote participation" when in fact you participated remotely one of the three days? (For many reasons it did not turn out to be feasible the other two days—RWOT is a dynamic event with many interruptions.)

Secondly, you say "let's start with the use case discussions". Are you somehow suggesting that the CCG has not had two years of use case discussions? Have you read the DID Use Cases document?

The only new use case—which is not really new, but a slight variation on the long understood use cases of DIDs for cryptographically-verifiable persistent references to resources—is described in the topic paper called DID Content References than Ken Ebert and I submitted to Rebooting the Web of Trust #8.

And the only proposed change to DID ABNF syntax (other than some refactoring to better align it with RFC 3986 syntax) is:

  1. The addition of syntax to support DID content references.
  2. The suggestion of a different delimiter character (from the very small set available under RFC 3986 ABNF rules) for DID service references.

So we are not "pushing any rope"—and we do not need to "restart with the use cases discussions". Please focus on exactly what we are proposing and share why you do or do not support the proposal.

mwherman2000 commented 5 years ago

@talltree We both need to be more precise in our communications to avoid the ongoing counter-punching, saber-rattling, and confudsion that has resulted.

  1. The scope of the above thread (as well as https://github.com/w3c-ccg/did-resolution/issues/32) was always intended to be: the discussion of DID Resolver did-url use cases. I've tweaked the titles of both of these issues to emphasize this.

Secondly, you say "let's start with the use case discussions". Are you somehow suggesting that the CCG has not had two years of use case discussions? Have you read the DID Use Cases document?

  1. Yes, I have read that document and contributed several suggestions during when it was created last month.

@tallfree, have you studied the 20+ did-url use cases in https://github.com/w3c-ccg/did-resolution/issues/32 ?

  1. The Use Cases for Decentralized Identifiers document you referenced is about a completely separate set of higher-level use cases. For example, the document doesn't contain a reference to "did:" anywhere. It's a great background document but doesn't contain any did-url use cases - in the sense described in https://github.com/w3c-ccg/did-resolution/issues/32 as well as at the top of the current thread.

Are you somehow suggesting that the CCG has not had two years of use case discussions?

  1. I'm sure there has been many, many "use case" conversations and discussions over more than 2 years - as there have been many, many DID conversations and discussions. But none of those use cases discussions resulted in the creation of the use case document you referenced above. The use case document that did result from the many years of conversations was critically rejected by the W3C committee overseeing the change of status from the DID Community Group to a DID Working group. Do you remember? ...the one with the scantily clad girl (so I was told) and the version without?

I'll address the topics in the second half of your comment once I've had a chance to review them. With respect to the DID Object Data References paper, there are 3 issues waiting here for a response: https://github.com/WebOfTrustInfo/rwot8-barcelona/issues

Suggested community plan of attack

a. The Use Cases for Decentralized Identifiers document is a good input to helping identify additional did-url use cases in addition to what is currently documented in DID Resolver did-url Use Cases (https://github.com/w3c-ccg/did-resolution/issues/32- tables A though I ...add additional tables for additional categories of did-url use cases as required. b. Tuesday, start reviewing and discussing the current DID Resolver did-url Use Cases (initially tables A through I). c. Build an executable did-url grammar for the common patterns found in the did-url use cases by adapting the BB version (saved here: https://github.com/mwherman2000/indy-arm/blob/master/abnf/did-abnf-2019-03-06.abnf) d. Validate the executable did-url grammar against the did-url examples from the tables using http://arran.fi.muni.cz/bnfparser2/ e. Interate: b. though d.

Thoughts?

peacekeeper commented 5 years ago

@peacekeeper In an early, early test, I did try validating the ABNF against the did rule but if you look at the screen shot for this issue (#33 (comment)) where virtually every use case failed, I was, in fact, using did-url. I appreciate the care you're taking to look at the uses cases (#32).

@mwherman2000 in your very first screenshot yes the did-url rule is shown in the textbox, but all your other screenshots indicate that you tried validating against the did rule, e.g. your use case 2a should PASS rather than FAIL:

53981626-26369f80-40d0-11e9-8f9d-d7c0f14a84d5

(I would consider this a small mistake on your part and not really central to the topic at hand.)

mwherman2000 commented 5 years ago

Agreed @peacekeeper. It became irrelevant when I realized I was using the AB (After Barcelona) version of the did-url grammar and I realized all of these grammar validation tests were a waste of time. They need to be rerun with a new grammar. Thank you for continuing to track this at a detailed level.

mwherman2000 commented 5 years ago

Sidebar: Checkout Giving Grammars Written with ABNF Notation the Respect They Deserve.

mwherman2000 commented 5 years ago

Moving discussion back to here https://github.com/w3c-ccg/did-resolution/issues/32. Closing this issue.