Skip to content

Draft refactored dereferencing algorithm outline - #331

Merged
swcurran merged 6 commits into
w3c:mainfrom
wip-abramson:wip-abramson/dereferencing-alg-outline
May 25, 2026
Merged

Draft refactored dereferencing algorithm outline#331
swcurran merged 6 commits into
w3c:mainfrom
wip-abramson:wip-abramson/dereferencing-alg-outline

Conversation

@wip-abramson

@wip-abramson wip-abramson commented May 12, 2026

Copy link
Copy Markdown
Contributor

Okay, here is an initial attempt at the refactored algorithm outline based on the discussion in the WG call. Noting that we did not quite get through all of it.

My sense from the discussion is:

Steps 1 prepare to resolve and steps 2 execute resolution request have broad consensus.
Modulo the change from DID to DID URL as an input to a resolution request that I know at least @peacekeeper disagrees with. Whilst I do want to get to a WG decision on this matter and move on, I have tried to separate this issue from the high level refactor this PR proposes.

Step 3 Determine Retrieval Strategy also felt like we had good agreement on as a high level step. @peacekeeper noting that you have mentioned you do not like term "Retrieval Strategy". We could change the name and I am open to proposals here. Although dereferencing does involve retrieving a representation of a resource - I dont think its a bad name.

Step 3 involves handling the path and query components of a DID URL. We are going to need to dive into the details of step 3 later on - hopefully Thursday - to unpack what this actually means.

Step 4 Retrieve the resource. This is where #326 diverges with the current spec text most clearly. The current spec does not attempt to retrieve the resource at all, it just returns the URLs to the resource and leaves retrieval out of scope. As noted this implies that retrieval involved HTTP GET on a URL, which is not always the case. It does not create space for extensions to define custom retrieval strategies for their use case. We noted that all services should define how to retrieve the resource identified by the serviceEndpoint, rather than leaving it implicit.

We also discussed, and agree, that it is not the DID Resolution specs responsibility to define how to retrieve resources of different types. The client either knows how to retrieve a resource according to some strategy and can do so, or they do not. I tried to capture that in Step 4.

Step 5 Use the Resource. We ran out of time for this one, and I think it is the step that has the least consensus. At least I know the name is throwing some people off. This step is not really defining how someone should use a resource, but that the resource is available within the application. It also handles the fragment processing part of dereferencing if present.

I tried to capture that Step 5 may either return the resource or use it within the application context.

I haven't yet specified precisely the inputs and outputs of the different steps, although I think the text does make it pretty clear.
I also haven't wrote a new intro to the DID URL Dereferencing section or attempted to define inputs and (optional) outputs to the algorithm as a whole.

There are also some terms that @jandrieu used in #326 that I think would be useful to include that I have not yet included. E.g.

  • DID URL Client - currently I just use client.
  • Base DID URL - This is the DID URL without the fragment.

Happy to add these in, but wanted to get a sense check from the group. We can discuss on Wednesday.


Preview | Diff

@peacekeeper peacekeeper left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change from DID to DID URL as an input to a resolution request

I'm strongly -1 to this change. I think it would break A LOT of existing DID implementations and infrastructure and would not be backward compatible.

It's completely incomprehensible to me why people want to make this change??

We should keep the clear separation between "resolving a DID" and "dereferencing a DID URL" that we have always had.

@wip-abramson

Copy link
Copy Markdown
Contributor Author

Yes @peacekeeper I am aware you are strongly against this change.

This PR is not about the change from DID to DID URL as the input to DID Resolution. We are trying to get consensus on the high level outline for refactoring the dereferencing algorithm so things can start moving forwards again. Can you review and provide feedback on this outline please.

I do want to have time on a call to discuss and make a final decision on DID vs DID URL as DID Resolution input. I think there are good arguments for changing to DID URL, e.g. the client does not need to understand the query parameters that are method specific or how to parse them. I also think there are ways to make this change while still being backwards compatible. A DID is a kind of DID URL after all.

As you have been unable to join calls recently, we may end up having to make this decision without you. I would prefer to discuss it first.

@jandrieu

Copy link
Copy Markdown
Collaborator

+1 to merging this.

For the record, I think it is a mistake to advance the spec in the manner the group has decided, as it leaves the spec in an inconsistent state.

Hopefully we can resolve quickly that the public drafts are coherent again.

@peacekeeper

Copy link
Copy Markdown
Collaborator

DID vs DID URL as DID Resolution

I think this change would make most DID 1.0 resolvers non-conformant, because they expect to resolve a DID, not a DID URL. If you pass a DID URL with a path and query into a DID 1.0 resolver, I'm pretty sure that most of them will break. Same for most of the DID methods.

This PR is not about the change from DID to DID URL as the input to DID Resolution.

Could you then maybe remove the language from the PR that talks about "resolving DID URLs" so we can review just the proposed new outline without such substantive changes?

@wip-abramson

Copy link
Copy Markdown
Contributor Author

I thought I had already done that. If you get a chance could you propose changes

Comment thread index.html Outdated
<h1>DID URL Dereferencing Algorithm</h1>

<section>
<h1>Prepare to resolve DID URL</h1>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<h1>Prepare to resolve DID URL</h1>
<h1>Prepare for resolution</h1>

Maybe this @peacekeeper

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@peacekeeper really looking to get this merged. Would appreciate your input since you are the only one objecting to the contents of this PR

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry but this PR still suggests "resolving DID URLs" in several places, this would be a breaking change that I think is really not acceptable...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well I would appreciate it if you would propose changes to all the places. I think it is only this one.

The rest are saying prepare DID URL for resolution. That might mean extract the DID and resolve the DID. Or it might mean resolve the DID URL. It is ambiguous at this moment. Intentionally so.

I just want to get the scaffold in for the refactored algorithm so we can move forward to the details of defining the actual algorithm steps.

The WG needs to discuss DID vs DID URL for resolution. I understand your concern that this is a breaking change. The intention of this PR is not to make or imply that we have made this decision.

Comment thread index.html Outdated
Comment thread index.html Outdated
Comment thread index.html Outdated
Comment thread index.html Outdated
wip-abramson and others added 2 commits May 20, 2026 14:27
@wip-abramson

Copy link
Copy Markdown
Contributor Author

Hmm, I am confused what has happened here. Now the PR is showing every line has changes against it. It definitely didn't when I submitted it :(

@wip-abramson

Copy link
Copy Markdown
Contributor Author

Okay. So I fixed the PR although could do with some advice around line endings.

The line endings of main are LF (but maybe I did that in my formatting). My PR also had LR, but when I applied the suggestions, for some reason github changed them to CRLF.

Do we have a preference? Feel like LF is right looking online, so no idea why the code suggestions should have changed this.

Anyway, it is clean now.

@peacekeeper I intend to merge this PR on Monday at the latest.

I understand you are unhappy about the DID vs DID URL distinction, I have tried to fix that.

When we decide on DID vs DID URL for DID Resolution we can come back in and clarify the text further.

@swcurran

Copy link
Copy Markdown
Collaborator

Merging as per the approvals and the guidance of the DID Working Group following discussions about the PR at the last few meetings. As @jandrieu notes this PR puts the spec into an inconsistent state and we will need to work as quickly as possible to rectify that via additional PRs.

@swcurran
swcurran merged commit 25b2b36 into w3c:main May 25, 2026
1 check passed
@peacekeeper

Copy link
Copy Markdown
Collaborator

I object to this merge, there was no consensus on this. This PR blurs the lines between DID Resolution and DID URL Dereferencing, which is highly problematic. I request that the PR be reverted.

@peacekeeper

peacekeeper commented May 27, 2026

Copy link
Copy Markdown
Collaborator

To clarify (once again) the problems I see with this PR:

  • "prepare the DID URL for resolution"
  • "preparing the DID URL and any accompanying DID Resolution Options for a resolution request"

Saying or suggesting that DID URLs are "resolved" is a major breaking change that is not compatible with DID 1.0, see: https://www.w3.org/TR/did-1.0/#did-resolution

@w3cbot

w3cbot commented May 28, 2026

Copy link
Copy Markdown

This was discussed during the #did meeting on 28 May 2026.

View the transcript

w3c/did-resolution#331

Otto Mora: Uh-huh...
… Okay, thank you. All right, so for the next, let me just change the topic to PR331. And… let me emote
… a proposal
… So that's my proposal text, um
… I just wanted to make it simple, but is there any comments on the proposal first?
… Before we… Um
… Can we go ahead? Does somebody want to add some further context before we do the vote? Just vote on it, or
… Oh, sorry. How do I… how do I enable, uh

Joe Andrieu: Oh, sorry...

Otto Mora: the Kim just enabled queue, uh… Okay...

Will Abramson: Open...

Otto Mora: Take it open. Okay, there we go...

Joe Andrieu: Oh, thank you. Cool. Um...
… Uh, I think we might just need to change it because it was merged in, right? So
… I think we just need to reflect that we're talking about either accepting the merge or the inverse and, you know, reverting it

Otto Mora: Mm-hmm...
… Okay, that makes sense, we can adjust our will

Will Abramson: Uh, yeah, that makes sense to me, too. Uh...
… I mean, I guess, like, one of my questions is maybe there's some language tweaking that we could do, like, we could just remove didURL from that completely, and I think that would satisfy Marcus
… Maybe I should have done that. Um
… I mean, I was… but the other thing I wanted to say is this fall, I really want us to have a final decision on DID versus DID URL, so I'm hoping after this proposal, we are going to have a proposal to vote. On the topic we've been discussing the past two weeks

Otto Mora: Yep...
… Okay. Thank you

Will Abramson: Welcome...

Otto Mora: Uh, Marcus?...

Markus Sabadello: Yeah. So again, I I think I I would agree to 3, 3, one. If it really separated the the topic of Ddrl versus the admit, maybe that would be the the easiest way forward to just remove the 1 1 or 2...

<Zakim> manu, you wanted to ask Markus if he'd object if we took the term "DID URL" out of that PR?

Markus Sabadello: phrases that say something like, prepare the DDRL for resolution, or… A lot of things like that

Otto Mora: Mano? Mm-hmm...

Manu Sporny: Yeah, I was just gonna ask Marcus that. So what if we, instead the proposal is remove the term did URL from the merge text from PR 331. I would imagine we should be able to achieve consensus. Undoing that, and then we move on to the DID URL versus DID input to DID resolution. Does that feel like a? Password...

Will Abramson: uh...
… Yeah, I promised Colin we could just caveat that, like, I think we don't want to remove the term DigiURL from the PR entirely. I think that, for me, looking at this text, maybe Marcus can reply, but it's only the first step, 5.1.1, prepare for resolution. And instead, we could say the first step is dereferencing a DigiURL
… of dereferencing a DigiURL is to prepare for resolution. This involves validating the DigiURL syntax, selecting the appropriate DigiResolver, and preparing to execute a resolution request

Otto Mora: Yes...
… Let's see
… Marcus?

Will Abramson: And just not reference the inputs at all...

Markus Sabadello: Both, I think it would be fine. I think that would be fine. There was a second place somewhere in the in the language. I, I don't remember now, but there were two, two sentences that there was another one. So if we change them...
… Personally, I would also prefer to still have the dereference function there. You know, that was another topic that has been discussed, the abstract function. I don't think that should be removed
… But, I'd be willing to, to, to live with that for now and maybe add it back later. So, so yeah, if we, if we update, if we change the language, it doesn't imply that you pass the TTRL to resolution then. Then I'd be fine with that

Otto Mora: Okay, so...

Will Abramson: Uh, yeah, I'll just type something up, and let's see...

Otto Mora: Okay. Will, I don't know, do we run a proposal with specifically noting...

Will Abramson: I think...
… What about this?
… It's perpetual, obviously
… And Marcus, there are two references to the URL in that step, which I think is what you're talking about

Markus Sabadello: Uh… yeah, it was...
… Okay. I had it in that
… In that in that signal group, it says prepare the DDRN for resolution
… And then it says preparing the DTRL and any accompanying DT resolution options for a resolution request. These two parts

Will Abramson: Mm-hmm...
… Yeah, so we'd remove both of those

<markus_sabadello> - "prepare the DID URL for resolution"

<markus_sabadello> - "preparing the DID URL and any accompanying DID Resolution Options for a resolution request"

Otto Mora: Okay...
… Ah, okay. Yeah, one second
… Uh, yes

Joe Andrieu: Is that a yes to me, Otto? Sorry...

Otto Mora: Uh, Joe, go ahead, yeah, sorry, go ahead. Uh, I see...

Joe Andrieu: Yeah, I think the language as it is currently should be okay with what you want, Marcus...
… Um, the… the client who's calling Resolve is starting with a DID URL
… And even if we kept a bear did as the parameter in the resolve function
… The client still is processing the preparing the DID URL to turn it into an appropriate DID
… So I think the language that Will just spoke to is still aligned with how you would like the algorithm to go

Otto Mora: Well...

<JoeAndrieu> +1

Will Abramson: Yeah, I mean, that was my perspective too, but I think, you know, like, if this is gonna solve the problem, I'm happy to remove DigURL from it, and we can always add it back in, right, when we make this decision, which… I'm running out of time. I just want to make the decision to move forward, so...

Otto Mora: Mm-hmm...

Will Abramson: Is everyone okay with the text that I'm emoted? Update PR331 to remove reference to dig URL. I'm stuck. 5.1...
… Uh, although there is one big URL that we want to keep

<TallTed> I hope someone has the time to spare to review and polish these robotic IRClogs/minutes, as they'll be indecipherable to many as they stand (e.g., "prepare the DDRN", "preparing the DTRL")

Otto Mora: Mm-hmm...

Will Abramson: Okay...

<ottomorac> Proposal: Update PR331 to remove reference to DID URL from Step 5.1.1 prepare for resolution

Otto Mora: Uh, yeah, okay, so I'll just propose all...

<manu> +1

<Wip> +1

<ottomorac> transcriber-bot, pause

<JoeAndrieu> +1

<swcurran> +1

<smccown> +1

<markus_sabadello> 0 don't like how it removes the dereference() abstract function, but wouldn't object anymore if the relevant updates are made

<TallTed> +1

<ottomorac> +1

RESOLUTION: PR331 to remove reference to DID URL from Step 5.1.1 prepare for resolution

<ottomorac> transcriber-bot, resume

Otto Mora: Uh, yes, Will...

Will Abramson: Yeah, I just wanted to speak to Marcus's zero just briefly that, you know, I mean, I thought we had made a decision about that, but either way, like, I wasn't intending to make any of those decisions in this PR. This really is about, like, taking a step in the direction towards resolving this did URL be referencing...
… debate in a way that allows us to move forward on the things that we have made consensus on and leave space for us to still have decisions about specific areas that we don't have consensus on like did versus did URL and like potentially this dereference abstract, right? Like I don't have any
… definition or, like, introduction to this section. All I'm trying to do is the scaffold that we can then build into. That's what I was trying to do

<swcurran> YES!!

Will Abramson: So, um, that's all. Uh, I see we've got 6 minutes left. Do we think we are able to run a proposal about DID versus DID URL today? Like, would anyone be opposed to us doing that? Do you think there's more conversation that we should be having?

Otto Mora: Uh, Marcus, is that the queue?...

Markus Sabadello: I really don't think this has been sufficiently discussed. I think, everybody's trying to explain it patiently, but I also feel like, for example, Manu's second explanation, I think, was very different from the from the first explanation...
… of why this change should be made, and I have a lot of concerns with that. Some of them are in GitHub comments that haven't really been considered yet, so I think it's really not ready to
… to make this decision

Otto Mora: Mm-hmm...
… Uh, I don't

Manu Sporny: Uh, they were two different reasons, Marcus. They were not meant to go together, um...
… I don't know what else to say. And we have talked this thing to death. Like, seriously, it's been going on for months. We need to make a decision and move on. Like, we're so far out of time. Like, we're outside of our charter timeframe, right? I mean, we had to get an extension to just keep working on it
… No, let's make a decision and move on. We've been talking about this for a long time, Marcus. You will get another opportunity to object after we clean up the rest of the algorithms before we go into CR
… Um, we have, you know, multiple more PRs to go. Let's make a decision so that we can at least start putting some concrete text into the… into the spec
… That's it

Otto Mora: Uh, Ted...

TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): Just quickly, it's totally legit, Marcus, for you to open an issue which we can hold open until...
… things conclude, or things at least move further, and we come cycle around back to that issue and see how it fits with the evolved text. And if you still see a major issue, then hopefully it'll be easier for you to make clear. what that major issue is, and then for us to address it. That's it

Otto Mora: Yeah, I mean...
… I guess I'll

<manu> +1 to what TallTed said -- there's still time for Markus to understand the arguments for this path.

Otto Mora: re-emphasize and say, yeah, like, uh, we will have one last conversation around this first thing on the next meeting, uh, of the larger group, and then
… Uh, you know, formal… formal call, if that does make sense. we'll just take a vote at that point. I really, yeah, I'm sensitive to the fact that we're at the end of the call, so it feels like we should allow Marcus to, in the next call, detail his arguments briefly, and also the arguments for and the other side, and then we just take a vote

early on in the next. Let's see any other comments
… I think

Will Abramson: However… Yeah, I guess I'm on the queue. I mean, I wanted to say, too, like, I agree with Otto. I do want to make this call this week, and I'm sorry that we didn't quite have time for it, but it does feel rushed to do it in the last few minutes of the call...
… we do need to make a decision on this, and I do not want this to take the whole call next week. So, um
… I guess on Wednesday, we can… I mean, really, we shouldn't be running this on Wednesday
… Okay, so maybe on Thursday, the first thing, you know, the first thing on the agenda, and

Manu Sporny: We're not going to be here...

Joe Andrieu: Well… yeah...

Will Abramson: Oh, yeah, of course...

Joe Andrieu: Sorry, Will...

Will Abramson: Got it...
… Yeah

Otto Mora: Mmhm...

Manu Sporny: I'm very frustrated by all of this, just to get it on the record. It's super frustrating. We're not going to make this decision for another two weeks again, you know...

Will Abramson: But it is 2 weeks out...

Otto Mora: Yep. But, yeah. Yeah, I think it should be on the Thursday call, just to enable larger...
… It is what it is. I agree. Yeah. Um
… Alright, so yeah, we will run it on the first call, we will time-bound it
… Um, so that it doesn't, uh, you know, take over the whole call, and we'll take a vote at the end of the… of the time bound. Bye


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants