— Minutes

Date: 2020-03-26

See also the Agenda and the IRC Log


Present: Orie Steele, Justin Richer, Brent Zundel, Joe Andrieu, Phil Archer, Dave Longley, Chris Winczewski, Markus Sabadello, Amy Guy, Michael Jones, Drummond Reed, Daniel Buchner



Chair: Brent Zundel

Scribe(s): Phil Archer, Dave Longley, Brent Zundel


Brent Zundel: invite rrsagent

Brent Zundel: Purpose is discussion around DID parameters
… I’ll run a queue and step in of needs be
… there is no set agenda
… but let’s try to come to a resolution

Orie Steele: It seems as… based on the GH comments that there are 2 proposals
… query strings only; MPs plus query strings
… So can we get a feel for the balance?

Daniel Buchner: I think there’s a 3rd…

Orie Steele: suggestion: poll for query string only OR query string + matrix params

Daniel Buchner: Ok, let’s just not spend 15 minutes under the wrong impression, because that would be a waste of time

Daniel Buchner: the most major rift presently is some folks wanting parameters that can be used in DID Resolution at all, vs folks who want to eliminate all ability to do so, regardless of what parameters you may implement

Daniel Buchner: once you put that issue to bed, then we can get on to the business of which param scheme(s) you want to support

Markus Sabadello: Some background. We had this matrix parameter syntax in the resolution spec before the group got started
… this became a discussion, we talked about it at the F2F
… We created a google doc about service selection
… following that, there was more discussion in GH https://github.com/w3c/did-core/issues/159
… A question: do we want DID parameters? Params inside a DID URL that control aspects of DID resolution
… versioning etc.
… MPs and Queries both address that

Orie Steele: +1 to having parameters.

Markus Sabadello: So my first question - do we want DID parameters at all?

Manu Sporny: +1 to Markus
… I’m going to propose…
… if we don’t agree to that, then we don’t have to agree on anything else

Daniel Buchner: +1

Daniel Buchner: In fact, a lack will result in formal objection

Manu Sporny: DRAFT PROPOSAL: DID Parameters, regardless of syntax, MUST be defined in DID Core for proper operation of the DID ecosystem.

Drummond Reed: +1

Orie Steele: +1 to phil’s point

Justin Richer: +1 to defining resolution

Phil Archer: gets on high horse about requiring resolution as normative

Daniel Buchner: What do you feel ‘defining resolution’ means?

Daniel Buchner: given it could be very different per method

Daniel Buchner: in terms of the underlying technical workings

Joe Andrieu: Manu - that proposal seems to imply that there will be params. Are there any cross-method params that we should standardise on?

Phil Archer: We should have DID resolution be normative in the spec and take it on in the WG if we’re going to be discussing DID parameters and service endpoints and all that. I could be supportive if we add resolution to the group’s scope.

Markus Sabadello: I agree with Phil that this is closely related to DID resolution. The assumption of this discussion is that we will use them for resolution
… within the WG, resolution and dereferencing hasn’t been discussed
… Lots of sort out [scribe paraphrase]
… Can we make progress on the DID parameters, knowing that there has been a lot of work on resolution but it’s not in the WG
… We haven’t defined how resolution works in the WG

Manu Sporny: I feel as if we’re rapidly expanding the scope of the WG
… As DB, I worry about the scope expanding. We might start to object because we’re running out of time

Orie Steele: +1 we don’t need all of resolution, but its a method implementer specific thing…. we just need to agree to a format.

Manu Sporny: It’s starting to feel like a big distraction
… We don’t have to expand scope to say that params are useful
… If WG members want to suggest a charter expansion, then OK, but I don’t think it will get agreement

Daniel Buchner: I want to focus on should there be DID params?
… IF we don’t get that then we have to think of some other way. I’m working on this 5 days a week

Orie Steele: +1 to dbuc

Drummond Reed: I am going to have to come out as the polar opposite of Manu. I agree with Phil that the reason of parameters are important is that DIDs need to be resolved
… Params without resolution doesn’t seem to make sense

Daniel Buchner: Depends on how far down the resolution rabbit hole we need to go

Daniel Buchner: if all you did was say “These params are DID params, they need to be used by the resolution code to do something, and pulled from any resulting output”

Daniel Buchner: go beyond that, and it will be a pandora’s box

Phil Archer: I know it’s going to be painful. may not be in the scope of today’s discussion, but we need this in scope

Phil Archer: I’m not advocating we don’t talk about resolution, but we need to take it out of the core, and then bring it in.
… there’s a lot of enthusiasm
… Just to reassure Manu, I’m not advocating we don’t talk about DID parameters or resolution. We should just take them out of the call and get the call done and get consensus rapidly then. Parameters become part of the resolution and take it over there. We should take parameters out of the work with core and get core done and then do a rechartering and do resolution.

Drummond Reed: +1 to finishing DID Core ASAP.

Drummond Reed: And then tackling the resolution spec second.

Manu Sporny: That was helpful, Phil, Let’s put it at the end. What I object to, is to put resolution in the middle of all the DID-core stuff
… officially pulling the work in into the group before we’re done with the core, is a mistake

Orie Steele: +1 to manu… we need to agree if we will have parameters… and then what formats… and then what to do with them (or leave that up to implementations, as is the case today)

Drummond Reed: +1 to version being a prime example of a generic DID parameter needed across multiple methods

Manu Sporny: It’s arguable… difficult to say that we don’t need DID params
… if the foundation is that we need to do resolution I don’t think we’ll male progress

Brent Zundel: +1

Drummond Reed: Again, can someone post the “proposal”?

Justin Richer: This conversation keeps coming up. Not just because people want to work on resolution, but because the things that people want to do require resolution
… So I would caution against rushing ahead with DID URLs and Docs - or we’re going to end up with assumptions that can’t work

Orie Steele: DRAFT PROPOSAL: DID Parameters, regardless of syntax, MUST be defined in DID Core for proper operation of the DID ecosystem.

Joe Andrieu: I want to caution us about referring to the existing proposal as dogma
… The work done in CCG and then adopted is a draft that we’re working through
… The task I took on at the F2F was to look at MPs from the lens of use cases
… I though we had identified a Use Case that required MPs
… but there was an implied assumption that turned out that the hierarchical use case needed MPs, but … select from multiple service endpoints

Orie Steele: … we are jumping ahead… we should agree that we will have parameters or not… regardless of format.

Joe Andrieu: We may say we have a use case that requires service endpoints

Manu Sporny: It sounds like you have an idea where… there’s no information, but I don’t know what that is.
… I’d like something concrete to discuss
… Are you suggesting that we don’t need params at all

Markus Sabadello: The use case document worked on after the F2F: https://docs.google.com/document/d/1ttRWB2lwYSw7bZMRY6wTY9lzGaHcSvOKFYfNZaBBS_4/

Joe Andrieu: The use case… we don’t have consensus on a use case that requires MPs. If we did, then, OK, we can look at where the params go
… There are UCs where they make things easier, but we haven’t documented such a UC yet and got consensus on it

Orie Steele: +1 to markus’s clarification… we should agree to did params in general first….

Markus Sabadello: Are you saying, JoeAndrieu, that we don’t have an agreed UC for DID parameters in general? I thought at the F2F that there was unanimous support for it

Joe Andrieu: We had agreement that the data hierarchical UC seemed like it needed MPs, but only if you want to select from multiple service endpoints
… I don’t know the use case that justifies that complexity

Manu Sporny: I’m putting these down to get a temperature of the room…

Proposed resolution: DID Parameters do not need to be defined in DID Core for version 1.0. (Manu Sporny)

Manu Sporny: proposal one - DID params do not need to be defined in DID core 1.0 (for whatever reason)

Orie Steele: -1 formal objection from Transmute will follow.

Daniel Buchner: -1

Manu Sporny: -1

Phil Archer: +1

Markus Sabadello: -1

Joe Andrieu: +1

Michael Jones: +1

Drummond Reed: -1 formal objection from Evernym will follow

Dave Longley: +0 we could reserve them without defining them

Daniel Buchner: Formal objection from Microsoft will follow as well

Brent Zundel: When you say DID params, do you mean query and/or MPs?

Manu Sporny: Yes
… Let me try again…

Proposed resolution: DID Parameters, regardless of syntax, MUST be defined in DID Core for proper operation of the DID ecosystem. (Manu Sporny)

Orie Steele: DID Parameters will be defined in did core (regardless of format)

Manu Sporny: +1

Daniel Buchner: +1

Drummond Reed: +1

Orie Steele: +1

Phil Archer: -1

Michael Jones: -1

Joe Andrieu: -1

Markus Sabadello: +1

Dave Longley: +1 at least reserving them

Michael Jones: I wanted to respond to Markus’ comment about what happened at the F2F. I agree that there was interest in the use case, but I disagree that there was consensus that they required parameters
… Those things shouldn’t be conflated

Markus Sabadello: true, Mike. There were diff opinions on how to achieve it.

Drummond Reed: I’ve reviewed the doc… it doesn’t even talk about versioning. Version params are already in the spec. Evernym will object if that comes out of the core
… Saying that we don’t need DID params because they’re only about service selection, ignores versioning
… I thought it was in the doc, I’m adding it now

Daniel Buchner: And let’s please not hinge everything on GENERIC parameters

Daniel Buchner: vs allowing method-specific params of some sort

Manu Sporny: I was confused by what some people said
… There’s a big diff between matrix params and DID params
… I remember asking … I didn’t hear any objections to including params at the F2F. We’re not talking about syntax

Dave Longley: “the mere existence of the ability to specify” requires reserving syntax, IMO.

Manu Sporny: I have another proposal in the +ve

Joe Andrieu: I want to respond to Drummond’s comment
… I believe … we wanted to unpack one use case that seemed to need MPs. That wasn’t meant to capture all the UCs that might need them
… On the version param specifically… I said let’s talk about the UC. We found that simply having the version param did not meet the use case

Brent Zundel: We’re not talking about MPs

Joe Andrieu: I meant DID params

Manu Sporny: let me put a use case forward
… The UC is - I want to be able to write a DID to a DB entry, some sort of serialisation that conveys the version I used for that DID and I din’t want to separate it from the DID itself
… We don’t want it just in metadata as it can easily get lost/not-transmitted

Drummond Reed: I didn’t realise that that doc was just about the service param
… The oldest UC… is to be able to reference a specific public key at a point in time used for a specific signature and we need to be able to reference that in perpetuity
… if you can’t access a specific version, that’s a problem

Markus Sabadello: I think Manu pointed out an important topic, when we resolve DIDs there are resolver options
… Just like we have headers in HTTP
… We’ve always assumed the same for DID resolution
… There can be DID param
… We shouldn’t spend too long talking about individual DID parameters, limiting to a single service endpoint etc.

Joe Andrieu: A comment triggered by Drummond… what I didn’t hear was the value of that test
… To be able to get a proof that, for example, a credential was issued at a particular time
… You don’t know if it was revoked or compromised

Orie Steele: from the current spec, version-id:id Identifies a specific version of a DID document to be resolved (the version ID could be sequential, or a UUID, or method-specific). Note that this parameter might not be supported by all DID methods.

Joe Andrieu: I can always reference a previous version
… To me, the structure of teasing out a particular version… we’re now saying that there could be different versions of that DID doc

Orie Steele: also from the current spec, hl: A resource hash of the DID document to add integrity protection, as specified in [HASHLINK].

Phil Archer: I heard compelling things around pulling the version number into the DID
… to me that is different from parameters used for resolution
… which brings us back to needing to talk about resolution
… I have no problem with version numbers in DIDs, but have trouble with discussing parameters in absence of talking about resolution

Orie Steele: versions in dids are expressed as parameters… in some format (query strings or matrix params).

Drummond Reed: To be specific, the version number (or any type of version identifier) cannot be “in the DID”, but only in a DID URL. The DID itself must not change over time, i.e. across different versions.

Daniel Buchner: I was trying to stay away from UCs..
… In terms of one use case where there is an inextricable linkage to initial state.
… There’s no assured way of saying that this will resolve…

Phil Archer: [Sorry, losing some of this]

Orie Steele: please don’t bring up any more use cases… we have enough justification, that people want to have did parameters IMO.

Daniel Buchner: Sounds like theres some stuff here that could be done but assumes knowledge/methods
… If I don’t have a way to do that, then we have to bring into the spec how to pass those details

Orie Steele: No

Drummond Reed: 0

Michael Jones: 0

Brent Zundel: is this conversation blocked by our lack of normative work on resolution?

Manu Sporny: This conversation isn’t blocked by resolution.

Orie Steele: This conversation isn’t blocked by resolution.

Manu Sporny: -1, not blocked

Joe Andrieu: 0

Daniel Buchner: This conversation isn’t blocked by resolution.

Orie Steele: -1, not blocked

Markus Sabadello: -1

Phil Archer: I think it is blocked in most cases

Dave Longley: -1

Drummond Reed: One of the things we talked about was the resolution contract which I think is a minimum

Joe Andrieu: I think this drives resolution

Joe Andrieu: -1

Brent Zundel: Consensus seems to be that it is not blocked

Manu Sporny: So another temperature check
… So the proposal is that DID parameters are removed from DID-core

Joe Andrieu: +1

Proposed resolution: Remove DID Parameters from DID Core 1.0. (Manu Sporny)

Daniel Buchner: -1, formal objection

Orie Steele: -1, Transmute will formally object to the removal of did params from 1.0.

Drummond Reed: -1 with formal objection

Phil Archer: +1

Manu Sporny: -1 Digital Bazaar would formally object

Dave Longley: -1

Drummond Reed: I liked it when we started using DID params to be syntax-neutral

Daniel Buchner: To dumb this down: Passing key/value thingys in a DID URI/URL

Joe Andrieu: There’s something happening here around the fact that we don’t have a protocol spec, and so people are advocating that in the absence of that, we’re saying that the URL will be transmitted
… In the UCs, where I get confused about why it needs to be in the URL, as there is a diff when it’s created, communicated and resolved

Manu Sporny: No, that presumes that we care about proptocol wrt. DID Parameters… which we don’t. It’s about addressing, not protocol.

Daniel Buchner: It’s not about having a protocol, it’s about the fact that I would have to define the same thing over all other types of exchange mediums, which is absolutely untenable

Brent Zundel: this is why I asked if this discussion was blocked by resolution

Orie Steele: Time check

Daniel Buchner: IOT devices that never have published DIDs

Joe Andrieu: We’re getting params stuck in the URL so that we can communicate it, but it’s an open-ended for “oh I need this in the protocol so let’s stick it in the URL”

Michael Jones: before people voted on that poll, I was hoping to ask… It wasn’t clear to me whether we were thinking about removing the specific parameters, or the entire mechanism

Justin Richer: I did not misunderstand

Orie Steele: selfissued https://github.com/decentralized-identity/sidetree/blob/master/docs/protocol.md#unpublished-did-resolution

Justin Richer: I also did not vote

Manu Sporny: The entire mechanism

Brent Zundel: i understood

Manu Sporny: I think you might have been the only one to be unsure with that Mike
… Given that, what would your vote be?

Michael Jones: I’m frustrated because I agree with some of Joe and Drummond’s points

Dave Longley: I also agree with some of Joe’s points and some of Drummond’s points :)

Michael Jones: We’re not doing architecture, we’re working on a narrow point, so I find this whole thing frustrating

Brent Zundel: Any proposals for what we should be focusing/moving forward

Manu Sporny: I think everyone’s getting frustrated
… I think we saw several formal objections if we removed all parameters
… It doesn’t mean that anyone’s concerns aren’t valid but we need to start moving without expanding scope beyond what’s possible

Proposed resolution: DID Parameters, regardless of syntax, MUST be defined in DID Core for proper operation of the DID ecosystem. (Manu Sporny)

Daniel Buchner: +1

Brent Zundel: four separate companies indicated they would formally object to removing all DID parameter mechanisms from the spec

Orie Steele: +1

Manu Sporny: +1

Drummond Reed: +1

Joe Andrieu: -1 maybe

Markus Sabadello: +1

Brent Zundel: +1

Phil Archer: 0

Dmitri Zagidulin: +1

Dave Longley: +1

Manu Sporny: I think that’s clear - we should put DID params in scope and talk about syntax with 7 minutes left

Markus Sabadello: I wanted to respond to Joe’s point

Daniel Buchner: Let’s be real: if, to achieve a normalized outcome, I need to go define a means of passing an inextricably linked resolution-required param as a custom mechanism for every exchange medium (HTTP, Bluetooth, NFC, etc.), it’s a nonstarter.

Markus Sabadello: I just wanted to mention that we’ve had a few proposals for DID params that have been rejected because they can be handled with resolver functions

Orie Steele: DRAFT PROPOSAL: DID Parameters will support query string only, NO SUPPORT FOR MATRIX params.

Orie Steele: DRAFT PROPOSAL: DID Parameters will support query string only AND matrix params.

Daniel Buchner: Is it impossible to do that? No, it’s possible just like colonizing Pluto is possible

Drummond Reed: I wanted to make sure it was clear that when Joe brought up the issue… I agree that there’s a pattern about putting stuff in the params in the absence of a protocol
… DID are about a new capability for identity. being able to have an immutable entity identifier - to have that as an anchor point and then be able to use that anchor point to get to sometehing relevant to that
… … and then get into DID doc versions etc… it’s an architectural thing to say that there’s a whole case being able to construct DID URLs that are protocol-independent

Orie Steele: manu: please queue and go with that

Dave Longley: specifying how to reference something is different from saying specifically how to go retrieve it

Joe Andrieu: PRs are accepted for the UCs, but we don’t have any that demand what you’re talking about

Manu Sporny: +1 to objecting to security/privacy implications.

Brent Zundel: +1

Dave Longley: +1

Joe Andrieu: There are privacy implications here and I may end up raising an FO in future around the harms

Orie Steele: we are already required to do that by the charter

Manu Sporny: rapid fire proposals

Proposed resolution: DID Parameters MUST be encoded using matrix syntax. (Manu Sporny)

Manu Sporny: -1

Dave Longley: -1

Orie Steele: -1

Daniel Buchner: 0

Phil Archer: -1

Brent Zundel: -1

Drummond Reed: 0

Markus Sabadello: +1

Dmitri Zagidulin: -1

Michael Jones: -1

Joe Andrieu: -1

Proposed resolution: DID Parameters MUST be encoded using query parameter syntax. Matrix syntax MUST be reserved in the ABNF in DID Core, but not used in DID Core v1.0. (Manu Sporny)

Orie Steele: +1

Markus Sabadello: -1

Manu Sporny: +1

Dave Longley: +1

Daniel Buchner: +1

Drummond Reed: 0

Dmitri Zagidulin: +1

Phil Archer: Too much in one proposal to come to a view

Michael Jones: +1

Joe Andrieu: -1

Brent Zundel: +1

Michael Jones: This is a strange question as it conflates 2 things
… I think we should just not reserve the ; syntax as it’s not part of normal resolution

Manu Sporny: Let’s discuss that on the next call, selfissued ! :)

Markus Sabadello: The URI spec does have the semi-colon for sub-delimiting the primary components of the URI. Nothing wrong with it and it’s not non-standard

Manu Sporny: yes, and Markus is technically correct :)

Orie Steele: +1 to markus point..

Brent Zundel: And we’re at the end of our time
… WE have accomplished enough to go forward to the next meeting