w3c-ccg / did-spec

Please see README.md for latest version being developed by W3C DID WG.
https://w3c.github.io/did-core/
Other
124 stars 45 forks source link

[PURPOSE OF THE SPECIFICATION] Is this draft specification trying to address too many topics when there should be more than 1 spec #121

Closed mwherman2000 closed 5 years ago

mwherman2000 commented 5 years ago

In https://w3c-ccg.github.io/did-spec/#purpose-of-this-specification, it states...

The first purpose of this specification is to define the generic DID scheme and a generic set of operations on DIDs that can be implemented for any distributed ledger or network capable of supporting DIDs. The second purpose of this specification is to define the conformance requirements for a DID method specification—a separate specification that defines a specific DID scheme and specific set of DID record operations for a specific distributed ledger or network.

There are multiple separable purposes/goals/tasks here (IMHO)...

  1. Specification for a (basic) DID as a string-based identifier: did:xyz:1234567890 - i.e. the "did:" identifier scheme spec
  2. Specification of an "access protocol" for working with DID Documents (similar to the HTTP or SMTP specification). This specification can and must reference #1. But they need to be very clearly separate from each other. I go as far as advocating for a second scheme to highlight that this is for a related but completely different purpose: i.e. the "didp:" or "drap:" schema/protocol (decentralized resource access protocol). This spec/protocol is about how to register, resolve, update, or revoke a DID Entity/DID Document (the latter being the JSON-LD serialization of the former) ...and not about how to register, resolve, update, or revoke the identifier.

That's it for now. Perhaps these two separable purposes/goals/tasks can be covered in a single document but there are in fact 2 different protocols. Whether this can be address by a single specification document is most likely a W3C governance/policy question I think.

Reference: Hyperledger Indy/Sovrin Comprehensive Architecture Reference Model (INDY ARM) - latest version - bullets (12) thru (16) in both the diagram, Narration, and principles.

mwherman2000 commented 5 years ago

A key advantage of have two separate (logical and/or physical) specifications is that each spec (the identifier spec and the access protocol spec) can evolved on different time frames/parallel paths.

mwherman2000 commented 5 years ago

For example, the format of an email message (e.g. RFC5322) is separate/separated from the SMTP protocol (e.g. RFC5321) that operates on email messages.

In the DID context, email messages are analogous to DID Documents and SMTP is analogous to the didp:/drap: protocol proposed above. Email address format specifications are analogous to DID string identifier format specifications.

Many of Internet protocols follow this pattern of separation between the scheme for the identifier and the scheme for the access protocol.

mwherman2000 commented 5 years ago

a generic set of operations on DIDs that can be implemented for any distributed ledger or network capable of supporting DIDs.

This is a confuding use of the term "DID". "DID" is an alias or nickname for the id (DID) attribute of a DID Entity or a DID Document ..."DID" should be changed to "DID Entity" or possibly, "DID Document".

Reference: Hyperledger Indy/Sovrin Comprehensive Architecture Reference Model (INDY ARM) - latest version - bullets (12) thru (16) in both the diagram, Narration, and principles.

jandrieu commented 5 years ago

This is incorrect. DIDs are URLs which resolve to DID documents. It isn't an alias for anything. It is an acronym of Decentralized Identifier.

The language is accurate. Anyone can create a DID method by specifying how certain operations are done for DIDs using that method. Starting with just the DID--independent of any "DID Entity"--an interested party can figure out how to perform those operations based on the method, including how resolve the DID to get the DID document.

It is the separation of the DID spec from the DID method specs that is the separation you are looking for. The DID spec says what DIDs look like and what's required of a method. DID Method specs describe how you perform those operations.

mwherman2000 commented 5 years ago

Cross-reference: https://github.com/w3c-ccg/did-spec/issues/157

jandrieu commented 5 years ago

Closing as we have moved this over to the DIDWG did-spec repo.