14:07:01 RRSAgent has joined #did 14:07:05 logging to https://www.w3.org/2026/04/08-did-irc 14:07:08 rrsagent, make logs public 14:07:12 Meeting: Decentralized Identifier Working Group 14:07:18 Chair: ottomorac 14:07:56 Agenda: https://lists.w3.org/Archives/Public/public-did-wg/2026Apr/0002.html 14:07:56 clear agenda 14:07:56 agenda+ Will Abramson 14:07:56 agenda+ Pierre-Antoine Champin 14:07:56 agenda+ Otto Mora 14:07:56 agenda+ [Decentralized Identifier Working Group](https://www.w3.org/groups/wg/did/) ([View Calendar](https://www.w3.org/groups/wg/did/calendar/)) 14:08:15 transcriber-bot, resume 14:08:15 scribe+ 14:08:22 Otto Mora: Yes. Okay, cool. Uh, excellent... 14:08:25 ... Uh… yeah, so we have 14:08:30 ... Um… the… the two topics, the two 14:08:39 ... pull request. At first, though, we wanted to just have a general discussion on… Uh, kind of 14:08:46 ... what might make sense to merge first? Uh, so I guess that's where we wanted to, kind of 14:08:51 ... have that general conversation. Before we get into the specifics of each 14:08:57 ... uh, pull request, like, uh, itself, right? Will, maybe we want to start there, yeah 14:09:03 Will Abramson: Well, I don't even know if it's worth doing that, since there's only four of us on the call, like, it might just be good to hear... 14:09:09 ... like, you know, Joe and Steven, you've both been commenting on each other's PRs 14:09:17 ... Like, maybe we could hear from both of you about the concerns you still have about. the other PR, and 14:09:25 ... Like, it's really hard, because there's not enough people participating in these discussions for us to really, you know, have, like, even a sense of, like, we've got a quorum for 14:09:31 ... consensus, but I wonder if we can just use this call for you two to try and 14:09:38 ... You know, get some, like, face-to-face time on some of the disagreements that are still outstanding 14:09:42 q+ 14:09:47 ... I don't know. I mean, I'm open to how to use it, but I think the agenda is kind of mute, since we don't have. whole group, personally 14:09:58 ack JoeAndrieu 14:10:00 Otto Mora: Mm-hmm. And also, if you want me to stop the transcriber bot, you want anything off the record, let me know, and I can do that. So yeah, I see Joe, go ahead... 14:10:10 Joe Andrieu: Um, yeah, I think that's a fine idea, um, with one, uh, shift, maybe, which is, I think, from some of the commentary... 14:10:18 ... on Steven's PR, um, there are a couple of questions that he wanted to bring to the group, and so that might be a little bit more productive to start with, rather than 14:10:24 ... you know, re-bringing up the things we've already brought up, I think having distilled some questions might be a good focus 14:10:28 Will Abramson: Okay. I see Dimitri's there... 14:10:30 Stephen Curran: Good... 14:10:31 q+ 14:10:31 Dmitri Zagidulin: Hello, hello?... 14:10:31 Will Abramson: Eduin... 14:10:32 Topic: https://github.com/w3c/did-resolution/pull/260 14:10:34 Joe Andrieu: Welcome, Dimitri... 14:10:43 Otto Mora: Okay, so I set the topic to… The pull request... 14:10:45 ... From Steven, which is the 260, is that right, or is this 14:10:46 Will Abramson: That's the old one... 14:10:49 present+ 14:10:49 Otto Mora: Oh, that's the old… okay, sorry... 14:10:50 ... That's the other one 14:10:53 Stephen Curran: 316... 14:10:55 Otto Mora: 360... 14:10:58 Stephen Curran: Yeah... 14:10:59 Topic: https://github.com/w3c/did-resolution/pull/316 14:11:08 Otto Mora: Yes, go ahead, Steve and Dan, maybe we can start. Start there... 14:11:13 Stephen Curran: Okay, so, um, I did, uh, do you mind if I share screen? I did that presentation that... 14:11:18 ... would allow us, I hope, to focus on, um, the specific issues 14:11:23 ... So, um, thought I would just walk through this 14:11:27 ... And, um, take notes as we go 14:11:33 ... So… this one, the first one right off, the data-specific method handling 14:11:37 JennieM has joined #did 14:11:41 ... Um… Joe and I… Joe, I clearly… you don't understand what I'm saying, I don't understand what you're saying. I think 14:11:44 present+ 14:11:48 ... My read of what you're saying is exactly what I'm saying, so I think we're in violent agreement, personally. Um, but 14:11:57 ... Like, my read of this is that, um… 7-1 is there 14:12:03 present+ 14:12:06 ... Because if the div URL contains a path, and. There is no 14:12:16 ... um… that is the only path… that is the only URL for the object, like, it exists on a blockchain, then 14:12:26 q+ 14:12:30 ... you defer to the did method that contained the blockchain handling code that allows the dereferencing of the resource. Um… I don't know what else 14:12:35 ack swcurran 14:12:38 ... uh… like, I'm saying the exact words you put in your last comment last night 14:12:44 ... I tried to say the same thing you're saying, so I'm not sure of the confusion 14:12:48 ack JoeAndrieu 14:12:48 ... Do you want to go ahead, Joe? 14:12:51 Otto Mora: Uh, yeah. Go ahead, Joe... 14:12:58 Joe Andrieu: Oh yeah, I would just, you know, the queue's helpful, so… um… The... 14:13:04 Stephen Curran: I, I... 14:13:08 Joe Andrieu: linked resource property is not did method specific, so I can… I can put a linked resource in a DIDWEBH and embed the resource... 14:13:14 ... in the did document, or reference it through obfuscation with the hash or hashgraph types 14:13:18 Stephen Curran: It's the URL!... 14:13:29 Joe Andrieu: And there is no URL that can represent that. So, even a did URL, because it is not a did at the end of the day. It is a did that is pointing to this resource, which is in the did document, or specified in the did document. So it's not... 14:13:34 Stephen Curran: So the URL is the div URL. That's what I'm saying. That's exactly what I'm saying. I canceled it... 14:13:36 Joe Andrieu: Yes, and the did URL has a WebHD method, which has no method-specific path handling properties... 14:13:39 Stephen Curran: No, no, no... 14:13:45 ... And so… and I'm not saying it's so that… so that it 14:13:49 ... Um 14:13:58 ... So you're… you're talking about specifically the case where it's not an on-chain resource, you're talking about it's a did-linked resource inside the 14:14:02 ... did linked… did link resource object. That's fine 14:14:03 q? 14:14:05 q+ 14:14:06 ... That's not did method specific, so 14:14:15 ... I don't know, I just… I'm saying when there is an on-chain resource that requires 14:14:19 q+ 14:14:21 ... Code that is specific to that on-chain that that 14:14:24 ... take precedence. And that you can't 14:14:35 ... Process it any further to get anything other than the need to go to that ledger and get the object off it, and that's the method specific 14:14:42 ... Any other case, I'm not talking about. So if it's embedded in the div doc, I'm not talking about that 14:14:56 ... I'm talking about when the div URL is the only thing that references it, because it's on a ledger and it requires ledger-specific code. To retrieve the object. The reference 14:15:00 ... Is that not a valid case? We don't care about that 14:15:01 ack Wip 14:15:03 Will Abramson: Oh. Well, I'm on the queue... 14:15:06 Otto Mora: Yeah, go… yeah, go ahead, Will... 14:15:15 Will Abramson: Yeah, I just wondered, like, does this need to go first? Like, what's the argument for putting this first, as opposed to, like, putting it at the end?... 14:15:21 Stephen Curran: Because the rest of the things don't apply, and if that is the case... 14:15:26 ... I mean, I don't care, but 14:15:29 Will Abramson: I guess I'm wondering, like... 14:15:35 ... this is about, like, precedent, like, which takes precedent, right? Like, what if there is a conflict? 14:15:40 ... you know, like, I have a did URL that… that did method-specific thing 14:15:47 ... would handle, but then it also would target something in the DID document as well 14:15:51 ... In this case, we're saying the did matter specific thing takes precedence, right? 14:15:54 Dmitri Zagidulin: Right... 14:16:00 Will Abramson: And in the other case, we would be saying, no, they did not have the specific thing comes last... 14:16:04 Dmitri Zagidulin: So, can you give an example of what you mean by target, something in the document?... 14:16:04 Joe Andrieu: There's a queue, Dimitri... 14:16:06 Will Abramson: Like, for... 14:16:07 Joe Andrieu: But go ahead and answer, Will. Okay... 14:16:09 Dmitri Zagidulin: There's… oh, whoops, sorry, sorry... 14:16:12 Joe Andrieu: Sound good... 14:16:16 Will Abramson: Like, for example, I would have, like, a, you know, a Path service... 14:16:24 ... with, uh, a base path, right? That could target… like, that's what I mean by target, like, you should… you could also use this 14:16:27 ... Um, service to the references 14:16:41 ... like, to me, all of this discussion is around, like, like, not the simple case, but what happens when we have these conflicting properties. You know, a DID document has 14:16:46 ... A path that could be dereferenced, potentially, or interpreted multiple different ways 14:16:48 ack JoeAndrieu 14:16:49 q+ 14:16:50 ... That's all I'll say 14:16:54 Otto Mora: Uh... 14:16:57 ... Yes, and then Joe… Joe is next 14:17:10 Joe Andrieu: Um, yeah, you keep using the phrase that that's the only way you can identify that resource, um, but we don't know that, so we can't use that as guidance or heuristic in the algorithm... 14:17:15 ... Um… the… the problem with it being at the beginning, and then I'm going to speak to the 14:17:17 q- 14:17:20 ... Does it… do we have a did URL for, um, some things that we don't? 14:17:31 ... Um, but the reason I strongly feel it cannot be at the beginning is because this would undermine the entire point of trying to come up with a way 14:17:35 ... that DID-enabled applications don't need to know the intricacies of DID methods 14:17:42 ... What this suggests is that regardless of what properties are in your document, regardless of what query parameters are in your did URL 14:17:47 ... The did method must be understood by the client of resolution, and that 14:17:51 ... will create interoperability problems 14:17:52 ... Um, but I also want to talk about, you know, if 14:17:55 Stephen Curran: Yep, okay... 14:18:01 Joe Andrieu: If this issue that… you imagine that there's a way to reduce this to a known resource... 14:18:06 ... In the, uh, Bitcoin example, I think I posted it on, uh 14:18:11 ... I think on your thread, but it may have been on mine. It is very hard to keep track of these things 14:18:17 ... Um, the Singleton Beacon service type in BTCR2 14:18:31 ... has a service endpoint of a URI. It is really not a URL. Now, because we're using the WhatWG definition for that property, it is technically a URL, but the Bitcoin colon address phenomenon 14:18:39 ... When that is normally dereferenced by a software that expects it, it generates a payment form to make a payment to that address 14:18:48 ... So, it is… it cannot, on its own explain how you apply the algorithm of the singleton beacon 14:18:54 ... Um, in the process of resolving or verifying, uh, did BTCR2? 14:19:00 q+ 14:19:00 q? 14:19:02 ... I believe that helps 14:19:03 q+ 14:19:07 Stephen Curran: Not really. Um… queue, sorry... 14:19:12 Otto Mora: Q is, uh, next up, Dimitri. Jimmy... 14:19:14 ack dmitriz 14:19:27 Dmitri Zagidulin: Joe, I think I see what you're saying, uh, in your current comment. My question was. if I… if I understood correctly. your… original... 14:19:37 ... The original problem with the did path algorithm, with the base path and everything, was that. It messed with 14:19:41 ... Some did method-specific things, like 14:19:47 ... uh, did link URLs, uh, something a Bitcoin might have, etc, right? 14:19:56 ... And so I think in response to that, Stephen highlighted the fact that the did method-specific handling 14:19:59 ... will take precedence, right? Just to point out that 14:20:02 ... We're not introducing the base path 14:20:06 ... Algorithm, the generic algorithm 14:20:11 ... to trample on anything that the methods may already have had, right? 14:20:17 ... And now you're pointing out very, very correctly and astutely that 14:20:21 q+ 14:20:25 ... That does mean that clients have to be aware. Of the intricacies of each individual did method 14:20:29 ... And yes, that's true, but isn't that 14:20:31 q+ 14:20:33 ... Wasn't that the concern you were voicing originally? 14:20:34 q- 14:20:38 Otto Mora: Go ahead, George, you can respond... 14:20:41 q- 14:20:50 Joe Andrieu: Uh, sure, thanks. Um, no, my concern was that PATH Service dismissed the work of previous efforts and did not find a way to integrate it. It's not about precedence, it's about... 14:20:57 q? 14:21:00 ... We need to come up with a way so that we can have any, um, mechanism that is in the system that wants to provide custom path handling 14:21:05 ... that it… that can be signaled so that you should use that path handling. That's where a huge chunk of my PR came from 14:21:12 ... Was this realization that we need to disambiguate the retrieval strategy, and what are the signals that we can use that? 14:21:17 ... And so, the did method is a really bad signal for interoperability. We shouldn't be using that 14:21:28 ... But I can understand that we have historically told people you can do all this thing in a did method-specific way, so we believe that there are probably did methods out there that have specific path handling 14:21:35 ... But my concern with linked resources is not about being did method specific, because that is a property which is not did method specific 14:21:40 q+ 14:21:49 ack Joe 14:21:50 ack JoeAndrieu 14:21:54 ack swcurran 14:21:54 Otto Mora: Okay, I know that, uh, Joe was there, but he just responded, so, uh, Steven... 14:22:10 Stephen Curran: Yeah, so I think given that, and the argument's good about the precedence, um, it should go... 14:22:10 q? 14:22:12 ... I think it is necessary because, as I say, I mean, originally I didn't have it. Then I put it in, sort of 14:22:21 ... Because the working group suggested it, um, I do think there's a very valid use case that says. You know, ultimately 14:22:26 ... If we're talking about something that we're trying to get off something where the div URL is 14:22:34 ... the URL for it, that we move it down to where, uh, 7.6 is now, so at the bottom of the screen 14:22:39 ... Where there's no objects matching. Um, that we could put it there 14:22:44 ... Uh, so… in hopes of moving on, let's 14:22:48 ... is that a… well, I mean, it's 14:23:00 ... I don't think anything's acceptable at this point, so I kind of think it's… to keep discussing, but I could move it down there, and that could be the next step 14:23:03 ... That's it 14:23:04 q? 14:23:11 Otto Mora: Okay, and I see Marcus has his hand up, so… uh… yeah, it's not an IRC, but go ahead, Marcus... 14:23:17 Markus Sabadello: So I don't… I don't really understand why... 14:23:22 ... It linked resources would not be considered method-specific, and 14:23:29 ... In my mind, they are a method-specific way of geofencing the path, because 14:23:34 ... It's supported by some deep methods, and not supported by other deep methods, and 14:23:38 q+ to say because any did document can have that property. It has nothing to do with did methods 14:23:42 ... Other methods and other extensions may define other ways how the path can be. be referenced from 14:23:46 ... So, in my mind, when we say something is 14:23:51 ... Not method specific, then… then it… it would mean that 14:24:00 ... It works consistently, uh, across all… Good method, so I think the… The path service 14:24:08 ... such as Zoom, even though I don't like it very much personally, but I think that is a… Method independent 14:24:16 ... feature, whereas the deep link sources… the deep link resources, in my mind, are a bit method-specific, uh 14:24:21 ottomorac has changed the topic to: DID WG Agenda 2026-04-08 https://lists.w3.org/Archives/Public/public-did-wg/2026Apr/0002.html 14:24:24 Otto Mora: Mm-hmm. Uh, uh, Joe... 14:24:30 Joe Andrieu: Um, uh, Marcus, you might be right about did linked resources, but linked resources is a different thing... 14:24:37 ack JoeAndrieu 14:24:37 JoeAndrieu, you wanted to say because any did document can have that property. It has nothing to do with did methods 14:24:38 ... And linked resources is not at all did method specific. It is a property that's in the extension registry. I can have a linked resource property 14:24:45 ... in a did method… in a BTCR2 did, it can be… and it did WebVH did 14:25:00 ... It really is not did method specific. So, this ordering of the protocol means that someone could come up with a path algorithm, create a DID method, and just obliterate the expectations around the properties that are expected to be applied. Um, independent of the did method 14:25:07 Markus Sabadello: Okay, thanks. Sorry, I mixed those up then. Sorry... 14:25:13 q+ 14:25:16 Joe Andrieu: Yeah, I think they… they're just… they have the metadata engagement, which I think does sort of entangle the did method. Um... 14:25:22 Otto Mora: Uh… yeah. Well... 14:25:23 ack Wip 14:25:31 Will Abramson: Yeah, I guess I just wanted to build on that, maybe, and say, like, that does seem to be the core of the... 14:25:44 ... disagreement or debate here, that, you know, the point is, the controller controls the did document, and the controller can put whatever they want in a did document 14:25:48 ... And whatever they want includes whatever might be defined in the future 14:26:00 ... that we don't know about now and can't plan for now. So, I think the question is, how do we define a dereferencing algorithm. That can be future-facing 14:26:12 ... while not closing off these points of extensibility, right? Like, and I think one of the proposals that has been discussed. Is, like, a type that flags 14:26:16 ... this property in the did document, wherever it ends up 14:26:23 ... is for handling paths, right? And that might be the path service approach, right? The path service is a type 14:26:30 ... It's a specific type that is a service endpoint. I think Joe is saying that we should have something that's more generic than that 14:26:36 ... And it just flags, this thing, this object, is this path handling 14:26:39 ... thing, and you should 14:26:43 ... Treat it as such, and if you don't understand it, then 14:26:53 q? 14:27:01 ... maybe you throw an error. I don't know about all that, but the point is, we want some way to identify all the things in the document that. The dereferencer should… Care about when handling fast. And that should be did method. independent 14:27:06 ... Uh, I guess I'm wondering if people disagree with that as a thing that we should be doing 14:27:17 Otto Mora: I don't see anybody in the queue, but I see Steven wrote down a proposal... 14:27:22 q+ 14:27:24 ... On screen to move down to 7.6 14:27:33 ack swcurran 14:27:34 Stephen Curran: Um, I guess in response to Will's, I just went on a few, um, in response to Will's, um... 14:27:43 ... comment. I… the only thing I don't under… I don't know is… is… The use of type. Um, in that 14:27:50 ... I don't know what it means from a JSON-LD and all that perspective. I don't know enough about JSON-LD to 14:27:58 ... To really understand that, so that's my only concern with using that as the signal. I've got that as another question later on in this 14:28:01 ... Um, in this sequence, is how do we determine what our path handling objects? 14:28:04 Will Abramson: Hmm... 14:28:08 q? 14:28:15 Stephen Curran: I mean, and I guess I'll... 14:28:20 ... go back on the queue and say, um, I put this down here just because I think 14:28:24 ... It's… we need to have 14:28:30 ... A fallback at some point in the play, in the algorithm, for did method specific 14:28:37 ... I get the argument for not putting it first. Um… It 14:28:43 ... in that… I mean, unless from a practical, but… concern, I'm not 14:28:46 markus_sabadello has joined #did 14:28:48 ... particularly concerned about it from a practical, but I… but I… but I get why 14:28:49 present+ 14:28:52 ... not to do it. Um, from a 14:28:58 ... just from a processing, um, I would like it to move it down to the 14:29:11 ... to the bottom, where if nothing else is triggered, then attempt a fallback. So that's where it was before, and I'll put it back there. So… That will allow us to move forward to talk about other topics 14:29:11 q+ 14:29:14 q? 14:29:16 ... Is that okay? 14:29:17 +1 14:29:22 ack markus_sabadello 14:29:23 Otto Mora: Uh, Marcus, is it Nikhil? Breakfast... 14:29:26 Markus Sabadello: Um... 14:29:33 ... Sorry, I wasn't… wasn't paying attention, I 14:29:38 ... Not sure if you're looking at the current version of the specification, or 14:29:43 Stephen Curran: No, I'm looking at my spec, um, version, uh, because we're talking about this… this PR... 14:29:54 Markus Sabadello: Okay, then I just want to say that in the current specification, there is such a fallback, right? In the algorithm, it covers... 14:29:59 ... A few cases, like when there's a service parameter and things like that, but 14:30:07 ... If… if that doesn't apply, so in the general case, it says if there is a 14:30:18 ... path or a query that is not handled by the rest of the algorithm, then methods or extensions may specify how to dereference the 14:30:25 ... path. Sorry, I didn't realize you were talking about the PR, but in the current. Specification, this fallback exists 14:30:28 Stephen Curran: That's… that's this section here... 14:30:33 Otto Mora: The .8, otherwise, if the date, okay... 14:30:35 q? 14:30:39 ... And uh 14:30:45 Stephen Curran: Um… Moving on to the next topic... 14:30:51 q? 14:30:58 Otto Mora: I guess, yeah, nobody disagrees with moving it down to 7.6. I don't see anybody… Agreeing there… So, yeah. Go ahead... 14:31:03 Stephen Curran: Does it… um, so this is one thing Manu raised, um, um... 14:31:07 ... So, I'll raise it here on his behalf. Um 14:31:16 q+ to ask return from what? 14:31:17 ... Does the did URL return a path to a URL, or… or the resource itself? Um, I originally had it that it return the resource 14:31:22 ... Um, in… in review of this, it was suggested that it 14:31:26 ... shouldn't, that it should just return the URL to the resort 14:31:37 ... Um, I think Joe's arguments are… and Marcus has pointed out that there are other places, although they're… I find them pretty subtle, but there are other places where 14:31:42 ... In the spec, a resource is to be returned 14:31:50 ... Um, and I will acknowledge the language that you don't want the word return to be used at all 14:31:55 ... Um, there isn't such a thing as anything being returned, um 14:31:59 ... But I think it's fairly clear that 14:32:05 ... Um, in the service… in the past service that I'm proposing 14:32:12 ... Um, it should return not the path to the resource, the URL for the resource, but rather 14:32:16 ... Um, the resource itself. So, currently 14:32:20 ... in my PR, again, um 14:32:24 ... That might be it, yeah. Um, it 14:32:27 ... Uh, it returns 14:32:31 ... an array containing the list of URLs 14:32:34 ... Um, so I think it 14:32:41 ... should be, you know, the resource should in turn… the URL should in turn be 14:32:45 ... The referenced and… and the resource return 14:32:46 ack JoeAndrieu 14:32:46 JoeAndrieu, you wanted to ask return from what? 14:32:48 q+ 14:32:51 Otto Mora: Okay. Uh, yeah... 14:32:58 Joe Andrieu: Um… yeah, my… my question was because, um... 14:33:07 ... I thought you may have been talking about resolution. Um, but this does touch on why I ended up with an algorithmic rewrite 14:33:12 ... Because I don't think a function that is forced to return something 14:33:19 ... Um, tells us how to pull a resource or the representation thereof into the current context 14:33:25 ... And so, during that process of figuring out which actual resource to dereference 14:33:30 ... Um, it's understood that there are redirects, sometimes those redirects have multiple URLs 14:33:34 ... Um, that's all fine, but at the end of the day 14:33:42 ... The dereferencing application, the one who's calling this pointer and invoking it in the current context 14:33:54 ... They pick one resource, and that's what gets dereferenced. So it's when we funnel it through a return value that we run into this weirdness that the dereferencer can't actually dereference to the one resource 14:33:59 q+ 14:34:06 ... And so the party that is capable of making the choice between different resources is the client. And the client gets a DID document, and then figures out how to do dereferencing 14:34:17 ... Um, so this is… this is really a, you know, a point that I think we should get rid of that, uh, dereferencer. Because it's causing this… this weird problem. And if we didn't have it, we wouldn't have this problem 14:34:25 Otto Mora: Okay, uh, Marcus?... 14:34:27 ack markus_sabadello 14:34:38 Markus Sabadello: Um, in the case of did linked resources, the result of dereferencing is, is the resource itself, right? So it's, it's not a... 14:34:44 ... URI or URL, because the only URL for 14:34:53 ... Titlinked resource is… is the Tit URL, right? There are no… there are no service endpoints, there are no HTTP URLs, so you 14:35:05 q? 14:35:05 ... you have a tutorial, you dereference it, and you get a resource, that's how… Did linked resources work? 14:35:05 +1 to what Markus 14:35:08 ... in the case of the service parameter, so if you have a DTRL with a service parameter 14:35:15 ... Then you select a service from the DID document, and the result 14:35:19 ... After the referencing process is 14:35:27 ... a list of the… of the selected service endpoint URIs. And I think path service 14:35:33 ... works in a similar way, so in my understanding, the path service would also 14:35:40 ... return a list of, uh, URLs, not, uh, not the resources themselves 14:35:40 q+ 14:35:45 ack swcurran 14:35:46 Otto Mora: Uh… Steven?... 14:35:53 Stephen Curran: Um, two points. I fundamentally don't agree with Joe's comments about, um... 14:35:56 ... What a client is, and what a dereferencer is 14:36:06 ... Um, and Marcus, I agree with your comment that it should return a resource, and we should… adjust it to say 14:36:13 ... specifically that, that the next step should be dereferencing whatever that URL is, whether it's a 14:36:23 ack JoeAndrieu 14:36:25 ... HTTP URL, whether it's a DID URL or any other type of URL, we should dereference it after that, if possible, obviously, because that might not be possible 14:36:27 ... That's it 14:36:30 Otto Mora: Joe?... 14:36:39 Joe Andrieu: Yeah, Steven, I'd like you to unpack what you don't like about the client definition, since I'm using the definition that's in the spec right now. Which is, it's the software that calls the resolver... 14:36:45 ... Um, but also, I think… I think we're conflating here the difference between 14:36:52 ... a redirect functionality, which is what the 300, uh, response is that Manu mentioned on our last call 14:37:03 ... Um, and something that returns multiple resources. That's a redirect, not the actual reference. The client who tried to redirect with the first URL is now given some other options 14:37:11 q? 14:37:13 ... to… and I must pick one, and then dereferences one. So the final process of dereferencing, at the end of the day, is a single resource. In the current context 14:37:17 ... Um… and I don't know how we do that if we're returning URLs 14:37:22 ... Because that doesn't seem to bring the actual resource into context. It's just a redirect 14:37:37 Stephen Curran: Um, again, to unpack, I think if… if the spec does not tell us... 14:37:41 ... what to do with a did URL 14:37:47 ... And that it's left as, you know, up to the caller 14:37:52 ... Um, and… and we just then 14:37:52 q+ to say my PR says exactly what to do with a DID URL 14:38:01 ... Then, even if… then, what's the point of the spec to me? Uh, we're trying to give guidance to say, when you get this 14:38:04 ... You return the result 14:38:09 ... when you… when this did URL is processed, we wanted many 14:38:14 ... implementations… To do the same thing 14:38:20 ... And… and to abdicate and say, oh, it's up to the client to do 14:38:29 ... to do it. I think you could say that, but they… we still want them to do all that implementation of that client to do the same thing, so I think 14:38:34 ... It's just confusing to have the client involved at all 14:38:38 ... Um, so that's why I don't understand your 14:38:44 ... Reframing of it, using just 14:38:46 ack JoeAndrieu 14:38:46 JoeAndrieu, you wanted to say my PR says exactly what to do with a DID URL 14:38:48 ... Using client, I just don't think I've had. That's it 14:38:51 Otto Mora: Sure... 14:38:59 Joe Andrieu: Yeah, so my PR does, in fact, explain exactly how the client of resolution prepares... 14:39:04 ... Invokes, and then responds to the result from resolution 14:39:09 ... The spec is absolutely explaining how any dereferencer of a did URL 14:39:13 ... Can correctly call and process resolution 14:39:20 ... It is exactly what happens on the web, where what we specify for an HTTP URL 14:39:24 ... Is it, hey, you should go and get it, and then it… render it based on its mime type 14:39:30 ... And if it's an HTML page, it's gonna trigger off a whole bunch of stuff, and different browsers will render that differently 14:39:36 ... Um, and so, fundamentally, you can't get rid of the client. The client, at a minimum 14:39:39 ... Absolutely must be dereferencing the fragment 14:39:47 Agree on the fragment 14:39:47 ... And it also must be choosing the singleton resource if there is a possible plethora. Based on content of the document 14:39:58 ... Um, so I don't… I mean, the client is a fact of the system. I don't know how we can ignore it, and I do define the algorithm of what that client should be doing 14:39:59 q+ 14:40:09 Otto Mora: I will... 14:40:09 ack Wip 14:40:15 Will Abramson: Yeah, to say, I think I agree with what Joe just said. In his... 14:40:24 ... VR, you know, he's defining this thing called a client, which, as he says, does exist, right? There is a client that takes a did URL and 14:40:30 ... and does something with it, the first thing they're going to do is resolve the did, right, or resolve the URL 14:40:36 ... Now, and get back the document, and then they're going to do some 14:40:41 ... some extra steps, which I think still in Joe's PR is called 14:40:52 ... the URL dereferencing algorithm. So, in my sense, what Joe CR changes is. Instead of calling… Something a dereference, sir 14:40:55 ... it's now called a Dig URL client 14:41:06 ... And there is no function call, like, there's no function contract that you… Call to dereference 14:41:12 ... Rather, it's an algorithm that, I guess, doesn't have, like, a 14:41:18 ... Like, inputs and outputs explicitly defined. But the algorithm itself is 14:41:22 ... defined in the status. I guess 14:41:26 s/Dig URL client/DID URL Client/ 14:41:27 ... You know, like, some bits that maybe are slightly less defined, like, use the resource 14:41:32 ... Um, but I think that's not for us to define how the resource is used 14:41:38 ... I don't know, that was my understanding. So I guess I'm a bit confused, Steven, whether you are not happy with the fact that 14:41:46 ... it's called a client, like, the did URL client, because I think Joe's real still makes sense if that was called the did URL 14:41:56 ... dereferenced it, right? It's just a name for this thing that is executing a res… you know, calling out to a resolver. And then doing some stuff with the results 14:41:58 q+ 14:42:03 Stephen Curran: Um… sorry, I'll keep plus, but anyway, um... 14:42:03 Otto Mora: Yep... 14:42:06 Stephen Curran: Um... 14:42:07 ack swcurran 14:42:08 q+ say clarify the spec defines a client today 14:42:16 ... Yes, I definitely don't like the term client, because to me, that… conflates 14:42:19 ... Um, this idea of… of 14:42:25 q+ 14:42:30 ... Calling an algorithm and then getting something back, but we're… and then even more, I don't like this idea that you call an algorithm 14:42:34 ... With unspecified inputs and get unspecified output 14:42:39 ... That just seems odd to me. I mean, there's lots of things that 14:42:39 q? 14:42:43 ... Maybe in there, but to say that is 14:42:46 ... I, I don't understand 14:42:47 ack markus_sabadello 14:42:49 Otto Mora: Marcus?... 14:42:52 Stephen Curran: That's it... 14:42:58 Markus Sabadello: Um, I agree with Joe that, uh... 14:43:05 ... In the dereferencing process, or algorithm, or function, or whatever we call it, that 14:43:06 q+ to say clarify the spec defines a client today 14:43:12 ... Resolution is a part of that. It's a… it's a first step, or an early step 14:43:19 ... And in that step, whatever we call the component that's doing the dereferencing 14:43:24 ... does indeed act as a client of a resolver, so I 14:43:29 ... I agree with that. I don't think it 14:43:34 ... It means that we need to get rid of the concept of a dereferencer 14:43:40 ... So I would agree that the DTO reality referencer is 14:43:44 ... A client to a… to a resolver 14:43:51 ... What makes all of this sometimes a bit confusing, maybe, is the fact that we 14:43:57 ... Never really have a… a fixed, uh 14:44:01 ... Network setup, or network topology, let me 14:44:09 ... We don't say that a resolver must be a server that exposes a network endpoint 14:44:16 ... In the case of Did Key, for example, then you can resolve Did Key entirely locally 14:44:28 ... But from a logical perspective, there's still a client and a resolver. It's just all local, and if you have a DID key with a fragment 14:44:35 ... Then you can also logically construct the referencer, which is a client, to a resolver 14:44:42 ... But in the end, the key with a fragment, you can also dereference entirely locally without any kind of 14:44:48 ... Endpoint or network communication, so this is maybe what sometimes 14:44:57 ... A bit difficult to understand that sometimes these steps can happen locally and sometimes they do involve 14:45:02 ... remote endpoints, which is why we have the HTTP bindings 14:45:09 ... But, uh, yeah, just to confirm the idea that the reference is 14:45:14 ... He's a client to a resolver that… But that makes sense to me 14:45:15 ack JoeAndrieu 14:45:15 JoeAndrieu, you wanted to say clarify the spec defines a client today 14:45:20 Otto Mora: Uh, yeah... 14:45:28 Joe Andrieu: Um, yeah, I… I agree that as the spec currently reads, Marcus, the dereferencer is acting as a client to the resolver... 14:45:33 ... Um, but in the current spec, the client is what calls the resolver 14:45:36 q+ 14:45:39 ... Um, it is not what calls a dereferencer, and that's… that's where we have this hiccup that I think is very confusing 14:45:46 ... Um, because there are multiple clients, and we do not adequately describe how both of them do things differently 14:45:51 ... Um, as we certainly only describe on the 14:45:56 ... Final, final client, this fragment dereferencing thing. And, um 14:46:02 ... Perhaps more importantly, I don't understand why a client with a did URL 14:46:08 ... Would need to have a function that packages the inputs and outputs in this way 14:46:16 ... I understand, um, Steven, your… your confusion is… Um, you know, but how do you call it? 14:46:21 ... But you don't call an algorithm. You evaluate or execute an algorithm 14:46:27 ... And so, when a web browser is rendering a page, it is executing an algorithm 14:46:37 ... Now, internally, it may have all sorts of classes and methods and functions that go down very, very deep, but I had tried in this… in the latest rev of mine 14:46:44 ... to clarify, I don't mean client as something that goes over a network, um, in terms of the problem with the dereferencer 14:46:50 ... To me, it's that it is reduced to a function which requires specific inputs and has specific outputs 14:46:58 ... Because those outputs don't map clearly to how the rest of the world talks about dereferencing. It's… it's a weird 14:47:02 ... Um, we still have to dereference what the dereferencer returns 14:47:13 q? 14:47:13 ack swcurran 14:47:13 Otto Mora: Uh, Steven... 14:47:23 ... You're on mute 14:47:44 Stephen Curran: Sorry. This specification… I'm reading the current test in the introduction. This specification defines a standard interface that clients can use to execute did resolution. And did URL dereferencing request... 14:47:54 ... That, to me, says the clients are outside the scope of this, so where it's used inside, such as that reference you made in the… your… in the 14:48:01 q+ 14:48:03 ... your referencing algorithm, it's incorrect, it shouldn't be, because the client is outside of this specification. That's the thing that I'm 14:48:07 q+ to say my PR changes that opening line 14:48:08 ... I can't get my hand… I can't get my mind around what 14:48:15 ... how you've repositioned clients. So, um, I assume you've removed that from the spec to 14:48:28 ... But to me, that is exactly what this spec is for, and that it does lead to a client makes a. invocation. Uh, and get something back 14:48:33 ... And… and we're trying to make it… Consistent 14:48:39 ack Wip 14:48:40 ... And, and to not make that is… means the spec is… Fundamentally changed 14:48:41 ... That's it 14:48:44 Otto Mora: Mm-hmm. Well... 14:48:51 TallTed has joined #did 14:48:53 Will Abramson: Yeah, maybe Joe will speak to this better, but my understanding is what Joe is saying is that's. Wrong, because the client... 14:48:59 ... is defined as doing things in the current spec, right? Like, it is at least handling the fragment 14:49:03 Otto Mora: Mm-hmm... 14:49:06 Will Abramson: So, like, it is inside the dereferencing process, whether we like it or not... 14:49:09 Fragment is the one special case. 14:49:14 ... So, isn't it better to actually draw the boundaries a little different, I think? That's my understanding, what just replaced 14:49:16 ack JoeAndrieu 14:49:16 JoeAndrieu, you wanted to say my PR changes that opening line 14:49:19 But that is the only one 14:49:21 Otto Mora: That it still has a role in the… at least the fra- yeah, it could, yeah. Uh, so... 14:49:27 Joe Andrieu: Um, yeah, that's… that's exactly right. I mean, the… the... 14:49:33 ... I just got distracted by Steven's comment. Um 14:49:40 ... The… the fragment isn't a special case. Um… But 14:49:48 ... I am breaking the current spec with my PR, because I believe it introduces this object 14:49:51 ... that people don't understand. And I… Steven, I think you're one of them 14:49:59 ... And I made that with all the love in the world, because I do really like you, Steven, even despite our technical differences. Um, but 14:50:07 ... A web browser, as a dereferencer of URLs, doesn't need to expose an interface to anyone 14:50:12 ... Um, and it doesn't have to organize its internals according to any particular function 14:50:12 A web browser is the client 14:50:23 ... Um, what it does is it uses the specifications and the protocols out there to execute algorithms that go out into the world and bring resources back into the current context 14:50:28 ... Um, and I think I'm trying to follow that pattern. In the introduction of a dereferencer, I think 14:50:33 ... Um, is very strange. Um, and I think it's… it's a real problem 14:50:33 q+ 14:50:40 ack swcurran 14:50:41 Otto Mora: Steven?... 14:50:43 q+ 14:50:46 Stephen Curran: Again, I failed to understand. To me, the web browser is the client... 14:50:57 ... passes the did URL to something, it uses DNS to figure out who to pass it to, and then it gets the result back, and after that, it 14:51:02 ... it does some things. Now, the difference with the docs is you've got this 14:51:07 ... You've got to get the relevant did dot first 14:51:12 ... And then, um, there may be other things you need to do 14:51:21 ... Um, and so that's slightly different, and that… that's where this… two-part. Comes from, but 14:51:28 ... I still… I still think a client simply passes a did URL into 14:51:40 ... Into a logical piece of software that may… that software may have many different components to it, and may be remote or local or whatever, and… It expects, from that logical 14:51:44 ... Call will get back a result that it 14:51:51 ... Expects and can process and if we aren't doing that, then 14:51:57 ... and this back is not doing what the current introduction says, then I think it's 14:51:59 q? 14:52:01 ... It does not help implementer in any way 14:52:01 present+ 14:52:05 ack Wip 14:52:06 Otto Mora: Oh, well... 14:52:16 ... Oh, sorry, I don't see anybody in the queue anymore 14:52:18 q+ to say that singular result is the DID document from resolution. if the client needs to verify a proof, that's not well handled by returning a subset resource 14:52:19 Will Abramson: No, sorry, I was on the queue, I just... 14:52:23 ... Yeah, I was trying to say, uh 14:52:28 ... I mean, there is something I wanted to say to that, but, like, just at a higher level, you know, we know we talked for an hour now 14:52:41 ... I… I… I don't know, are we any closer to either of these, you know, like, having some points of consensus. It feels like within these PRs, there are points of consensus, but they're also. Point of severe 14:52:47 ... disagreement, and I'm wondering how we… Can move closer towards 14:52:56 ... something that the group would agree with. Uh, and with that, I'll also say, Steven, like, I think what you say, like, the web browser is the client 14:53:02 ... To me, that is exactly right, and it's the web browser as the client that is 14:53:08 ... Executing the dereferencing process, right? I think. Uh… Anyway 14:53:09 q? 14:53:14 Stephen Curran: I don't think so, I think it calls… It calls... 14:53:19 ... I don't know. It's… this is… yeah 14:53:20 ack JoeAndrieu 14:53:20 JoeAndrieu, you wanted to say that singular result is the DID document from resolution. if the client needs to verify a proof, that's not well handled by returning a subset 14:53:24 ... resource 14:53:25 Otto Mora: Okay, Joe?... 14:53:36 Joe Andrieu: Um, yeah, I agree with the framing at the top level that you had, Steven, that when you get a data URL, you should be able to call a function that... 14:53:47 ... encapsulates all the did method-specific stuff and gives you back the metadata you need to dereference the resource or to use that did document in a particular way 14:54:01 ... Um, if… if I'm a… if I'm a wallet, and I am proving a… or verifying a proof. That comes out of a verification method 14:54:07 ... Um, you can't just give me the public key of that. They need to hold the document to get the context to actually perform the function 14:54:08 q+ 14:54:13 ... So in that context, the final dereferencing is the application of that verification method to the current algorithm 14:54:19 ... Um, it isn't a resource that gets returned that says, yes, it's verified, because 14:54:31 ... that dereferencer, which… the actual dereferencer of the DID URL is processing a verifiable credential, and that dereferencer as a client needs to apply the information in the DID document 14:54:36 ... to do that. They're not offshoring this verification check to some other dereferencer 14:54:42 Stephen Curran: And up. Okay... 14:54:46 Joe Andrieu: like, it's really just a category error. Um, but I want to try, and… hold on, Steven, I wanted to try and turn our attention to, I think, really a bigger problem... 14:54:54 ... That hasn't come yet up on the call, um, which is the dependency on the 3986, um, relative ref algorithm 14:55:00 ... Um, I honestly don't think it does what people think it does, and I think it is a big security problem 14:55:09 ... Because it allows any DID writer to create a DID URL that completely bypasses the service endpoint in the DID document 14:55:18 ... Um, you can rewrite the query, you can rewrite the path part, um, all that seems problematic. Um, I commented on it with 14:55:31 ... quotes from the 3986 algorithm to try and clarify, but we as a group need to be… I think what we should be doing is figuring out what is the actual use case, Steven, that you're fighting for 14:55:41 ... And let's figure out the best way to support it. I think what you're trying to do is enable a DID to be the top level of, like, a folder structure, a file hierarchy 14:55:52 ... Um, and let people just append file paths and names to the DID, and have the DID document point to where you go to go, you know, find that set of resources. I think that's a fine use case 14:56:03 ... Um, uh, but we need to figure out how to do it in a way that doesn't create a security problem, and I think dependency on the 3986 is, in fact, a huge security hole 14:56:08 ack swcurran 14:56:16 Otto Mora: Uh, yeah, and we want to move to the What WG. There's an open issue for that, but… Yeah. Go ahead, Steven... 14:56:26 Stephen Curran: Um, two things. 100% agreement that I don't expect a client to call. Uh, did URL... 14:56:32 ... processor, and have it verify a key for me. Absolutely. And… and 14:56:38 ... The client is going to do something after it gets a result back from dereferencing 14:56:43 ... What I'm saying is just that we're trying to make a 14:56:48 ... An abstract interface, if you will, that allows a consistency in what… in what happens 14:56:54 ... when a client passes a bid URL into that interface, and something comes back 14:56:59 ... Um, as to the 3986 14:57:06 ... I, I agree, relative rep itself, the, the, the, um… the 14:57:11 the interface is the problem. the algorithm is what is important, not what is passed or returned 14:57:19 ... the, uh… the relative ref query parameter is problematic. Um, I 14:57:19 ... Yeah, I can't comment on whether 14:57:24 ... Our attempt… when we… there are places where we attach. A 14:57:38 ... a relative reference, not the query parameter, but a relative reference to a base URI, and my understanding is the way you do that is 3986 section 5 14:57:42 ... If that's not right, that's fine, but I sure don't want us to define in this spec 14:57:53 ack JoeAndrieu 14:57:54 ... a way to do that, and cover all of the possible edge cases and use cases. That… I thought that was the purpose of using Section 5, if that's not right. beyond me 14:58:07 Otto Mora: Joe... 14:58:07 Joe Andrieu: Um… I think that was an old queue, but um... 14:58:11 ... I… I… I do think we shouldn't be using it. I think it's… it 14:58:14 What should we use? 14:58:16 ... The fact that whatever is put in the service endpoint 14:58:20 ... Um, can be completely overwritten by whoever writes the did 14:58:25 ... Um… I think is not the expected behavior. Um 14:58:30 Stephen Curran: Are you talking… sorry, Joe, are you talking about the relative ref query parameter?... 14:58:37 ... Or the use of 3986 in general. section 14:58:40 Joe Andrieu: The use of the… specifically, the 3986 reference resolution algorithm... 14:58:48 ... Because all that is retained, um, when you have a relative ref that starts with a slash 14:58:53 ... Is the authority part, i.e. the domain name, host name, port 14:58:56 ... user name, etc. Um 14:59:01 ... The whole path and the queries, they're all gone, they're all rewritten 14:59:05 ... Um… if… that's the problem 14:59:08 Stephen Curran: Okay... 14:59:12 ... Then… okay, so that's 14:59:22 ... The security issue, but also the fact that it… it overwrites as opposed to simply adding on to whatever is already there 14:59:27 ... My understanding, again, I was just following the guidance 14:59:32 ... Was that it would handle all of the edge cases of 14:59:35 ... logically appending 14:59:37 q+ 14:59:43 ... the relative reference part to whatever the existing URL was. If it's not doing that, then yes, I agree 14:59:51 Joe Andrieu: Yeah, what it does do a good job is the… and you can knock me off the queue, um... 14:59:58 ack JoeAndrieu 14:59:59 Stephen Curran: Hmm... 15:00:00 Joe Andrieu: is sort of deconstructing the path and reconstructing the path in a good way. It deals with, like, dot parts, you know, if you have a dot in your path, you collapse it, etc... 15:00:03 Stephen Curran: Okay... 15:00:08 Joe Andrieu: Um, but it is… the edge cases that it deals with are for this website use case... 15:00:11 q+ 15:00:12 ... Um, and that's not quite our use case 15:00:15 q- 15:00:17 Stephen Curran: Yeah... 15:00:20 Otto Mora: Mm-hmm. So, okay, so just to close, I'm not sure if this, uh, particular, uh... 15:00:24 https://github.com/w3c/did-resolution/issues/275 15:00:29 ... Uh, issue of the 3986 should be part of this other issue, the 275. Um… yeah 15:00:33 So how do we say what we really mean? 15:00:34 ... Or maybe we just open a separate one, Joe, if you want, but uh… maybe 15:00:39 ... Maybe, yeah, maybe that's the action item on that one 15:00:40 Joe Andrieu: H... 15:00:43 Otto Mora: And, um, yeah, we can continue the discussion tomorrow. Sorry, go ahead... 15:00:48 If we can't use Section 5 as a "short cut" 15:00:50 Joe Andrieu: Yeah, just… just a comment real quickly, Otto. I'm pretty certain that the WhatWG is gonna be the same, because the functionality... 15:01:00 ... that you want from a relative ref in a web page is, if I don't use a path, then you keep the parent. um, sort of path of the resource that I'm at 15:01:05 ... Um, and that basically starts in the current directory, if you're thinking in a Unix way 15:01:12 ... Um, but if you start with the slash, it goes back to the root authority. Like, that's… that's deeply baked into the web, so 15:01:19 ... I… I don't believe we're gonna get around this with the… going and figuring out how the… what WG does it, because. Functionally, it's gonna end up the same 15:01:22 Otto Mora: Okay... 15:01:31 ... Okay, well, we are time, uh, so yeah, we will debrief tomorrow. I think at least we do know where 15:01:39 ... People are coming from each side, so I think at least in that sense, we're a little closer to at least understanding the differences 15:01:42 ... Yeah. Uh, thank you, gentlemen 15:01:45 Joe Andrieu: Thanks, Adam... 15:01:48 Otto Mora: Thank you... 15:02:01 transcriber-bot, pause 15:02:01 scribe- 15:02:02 s/Adam/Otto 15:05:47 rrsagent, draft minutes 15:05:48 I have made the request to generate https://www.w3.org/2026/04/08-did-minutes.html ottomorac 15:10:10 m2gbot, link issues with transcript 15:10:11 comment created: https://github.com/w3c/did-resolution/pull/260#issuecomment-4207298674 15:10:12 comment created: https://github.com/w3c/did-resolution/pull/316#issuecomment-4207298783 15:10:25 zakim, please excuse us 15:10:25 leaving. As of this point the attendees have been dmitriz, JennieM, ottomorac, markus_sabadello, TallTed 15:10:25 Zakim has left #did 15:10:35 RRSAgent, please excuse us 15:10:35 I see no action items