Meeting minutes
General discussion
<ottomorac> transcriber-bot, resume
Otto Mora: I'll… I'll stop it...
… Yeah, can somebody recap me on the latest on the side chat that there was there?
… I honestly haven't had a chance… I think maybe Will and Pierre, you had a chance to
… Just a little bit of a conversation there between Marcus and Joe, and
… Manu and the others on that group
Joe Andrieu: Yeah, I think TalTed's the only one who's not in that thread. Oh, no, maybe PA isn't either...
Will Abramson: Okay, yes...
Joe Andrieu: OPA, yes...
… But yeah, it'd be good to brief, tell Ted. I think, Will, your summary at the end was, um, a reasonable attempt. If you want to just review that
Will Abramson: Uh… yeah. Sure, yeah, I mean...
… So this is just a discussion to try and move us forward on all of these many things that we have
… focused on at the moment, but in particular, the recent discussion has been focused on
… did URL dereferencing, and
… You know, starting off with HTTPS binding, but then moving up to
… I think there's 3 tiers for diguera LD referencing, currently. I think the top tier is, like, okay, do we want to define an algorithm for diguera LD referencing? My sense from the group is we all agree we want that. Definitely, right? Um
… maybe I'm wrong there, but I don't think anyone's… you know, like, maybe there's some work to do to define the algorithm differently
… We all realize we need to define an algorithm for how dereferencing happens. The second tier is, like, around this, um
… Abstract function definition that is in respect today, which defines
… Like, logical inputs and outputs that a implementer has to implement, and
… jurisdiction is this should be removed. Marx is strongly against that. I think
… the… the bit that I got from the conversation in the group is that
… The… while the abstract
… Function is supposed to be abstract and, like, not prescriptive of how an implementer should implement
… did your LD referencing. Currently, in the spec today, it
… it doesn't read like that, right? It reads like, as an implementer, you should implement this function signature, and it should take these inputs. And it should return these outputs
… So that's where a lot of the discussion has been going on, it seemed to me. Uh, and then the, like, top bit is, like, okay, do we want to define HTTPS binding to this. function signature. Um
… But I think the discussion really has revolved around number 2 and, like, this abstract function
… Um, oh, and then another piece that is confusing people in the spec today is around
… this concept of a dereference. Like, the spec today talks about this conference. This concept of a dereference there
… Almost as if it's, like, a separate component, or at least a logical thing that implements dereferencing, like the dereferenced, the
… It's the thing that implements a dereferencing algorithm, and would, you know, implement this function signature
… But the confusion there is, I think, about where we're drawing these boundaries, because the dereferencer
… actually only implement the dereferencing algorithm that currently in the specs today is defined as dereferencing the resource. There is, like, a secondary step
… That is about handling the fragment that is actually performed by the client
… And I think the argument is, like, maybe we should just get rid of derefencer and say dereferencing is something performed by the client
… You know, they first get the results, and then they do the fragment handling
… Um… and then the other conversation is around, like, okay, do we want, um
… the, you know, if we are defining this abstract function, like, currently it's dereferenced, it takes in a bid URL and some options, and returns. These three things, like, is that, like
… Can we still have that in the spec without
… Like, with some language that says you don't have to implement it like this, is it just
… uh, like, abstract, or, like, indicating this is one way you might influence it. I don't know, I think
… That's where Joe's coming from, he's like, I'm not going to implement that abstract function, and I shouldn't
… I have to… you know, if I don't implement that abstract function, I can still implement the referencing, and that should be conform
… But, I don't know if I captured our CPA. Yeah, please
Pierre-Antoine Champin: Yes, uh, I'm… I'm currently walking in the street, I hope there's not too much noise, sorry for that...
… And also, I'm not on IRC. Um, yeah, I think that's a good summary. Um
… I've re-read all the algorithms, just to get them fresh in my head
… And one thing that's
… What bothers me a bit is this idea that. Uh, uh
… The referencing happen… happens once you resolved the document
… Is that really always the case, uh, when it comes to the past parameters in the div?
… I read the current algorithm as saying, well, the fast parameter, it really depends on the method, and uh
… So… is everything in dereferencing happening
… Once you get the lead document, or… is it more flexible than that?
Will Abramson: Um… I guess I can double queue...
Otto Mora: Yeah, go, go ahead. Yep...
Will Abramson: Yeah, I mean, my understanding is that is part of the disagreement or confusion that's going on. Certainly, I've heard Marcus say that...
… You know, like, some path handling has to be done by… like, is method-specific in some way
… Um, but I did look into, did you, like, did… did, um… It linked resource back
… And for me, like, there is two bits, right? There is some method-specific way
… that is part of Resolve that then hydrates or populates, you know, both the… like, it resolves a DID document, and also, in did link resources, it will, like, populate some information
… in the did document metadata. And that's all returned as a… as a result, right? Like, the did
… resolution result object contains all that information, and then dereferencing is a step that happens, and it… in DidLink Resort's case, like, it was looking in the. Um
… In this metadata, and identifying the, um
… like, I guess it's not quite the result, it's like the thing that references the resource, and then it's doing a step which retrieves that resource
… And yes, that retrieval step might require, you know, method-specific stuff, but it's not really method-specific, it's verifiable data registry for specific stuff. Like, wherever that resource is, you have to find it, and
… and return it. But I don't think… I think that's conflating things to say it's method-specific, specifically because in this… in the did link resources spec, it says
… I can have a did document, and I can put in a linked resource, you know, if I control the did document metadata for my DID document
… Like, I can put in that metadata a linked resource to a resource on any verifiable data registry, right? Like, I could put one
… you know, I could have a did web, and I could put a linked resource or something on did check, so that's totally allowed. But then, uh
… like, it's not method-specific, I've just used the checked blockchain to store a resource. Um
… So I think the argument is, like, we should be saying dereference is something that happens once you get the did resolution result
… like, you get this result, and then you perform the referencing on the results. You might have to do some additional steps, but it's independent of. I did not. I think
<Zakim> JoeAndrieu, you wanted to say retrieval happens after Resolution, but dereferencing is what you do with the DID URL. It's the outer algorithm.
Otto Mora: Mm-hmm. Okay, then I think then, Joe...
Joe Andrieu: Um, yeah, I actually think that's quite wrong. Like, I think, um, the… You do retrieval...
… after you get the did document, which may mean… include determining that the did document is the resource, so there's no more retrieval that happens
… Um, but dereferencing is what you do to the did URL because you have a did URL, and you were trying to use it in your application
… So, dereferencing of that pointer means to take that reference and bring it into the current context, and that is sort of the outer algorithm
… Which… within which we call resolution, and then based on the results of resolution, which is hopefully a did document or a failure, but assuming you get a good did document. Then you process that did document
… to figure out how to retrieve the resource. And then your application says, hey, I've got this
… data that I have, um, how do I apply it? And that's using the results
… After retrieval. Um
… So, hopefully… well, I see your hands up here, I'll let you go. I have some more points to make, but let's continue this thread
Otto Mora: Mm-hmm. Yep. Uh, Pierre...
Pierre-Antoine Champin: Yep...
… My understanding of why we have this specification in the first place. is to
… Uh, respond to the formal objections about interoperability and the variety introduced by these methods
… By proposing a unified interface that hides this variability. Uh, so
… In order for it to be… to respond adequately to this problem
… I think that everything that is method-specific should actually happen behind the
… Did resolution, uh, signature
… And then the rest, you should be able to do that. I agree that you should be able to do that. Uh, on the client side
… That doesn't mean that the spec doesn't have… cannot tell you how to do that
… And again, all the algorithms that are provided, in my opinion, are
… just specifying the result. I didn't see that in this spec, but in other specs, I saw
… When there's an algorithm, the spec says, you can implement it otherwise as long as your results are the same algorithm
… I think that's the same way to look at it, and to understand that neither the algorithm nor the
… Interface defined by the function signature are mandatory
… But for me, the compact should be, we provide an interface, a unified interface
… to whatever is method specific. And… and then we may provide some algorithm to. For the next step
… But, uh, it needs to be separate, and I, uh
… I agree that it doesn't need to be in a specific component
… But again, apart from those sentences that you pointed out to Joe, and that Marcus agreed
… Uh, that they should be removed, or the thing about should not alter the signature. I think we all agree that this part is misleading and should not be there, so
… I do believe that the intent is not to force anyone to, uh
<Zakim> JoeAndrieu, you wanted to +1 hide the variability in the resolution
Pierre-Antoine Champin: Isolates those algorithms in a specific component
Joe Andrieu: Uh, yeah, plus one that the… all the variability should be in the VDR, um, and hence resolved by the resolver. Um, I think that is the… how we've architected our architecture...
… Um, we… we have, for reasons that may not be meritorious, um
… Uh, accepted that there are likely did methods out there that have customizations, or using properties
… Um, that could affect the path, um, because we allowed that in our, uh, did method registry, and we have not figured out how to unify all that. Um… so
… Uh… that's why we, in the… in my algorithm, I made it clear
… If, after you've exhausted all the other possibilities, you need to check to see
… If someone has defined a did method-specific something, hopefully it's a property-specific something, like did linked resources, or linked resources, or path service, because those are, by inspection, you can tell from the did document that you have to do something special, and the client can know if they understand it or not. Um, but
… I would love to get rid of the fallback to the DID method, but it's there because we expect there's some legacy entanglements. Um, but I would support getting rid of it
… Um, I think, though, if you have a function that doesn't define its inputs and outputs, you have an algorithm
… And that is what I've been arguing for, because I am not implementing the algorithm
… Um, in any particular way whatsoever. I do not take those inputs
… Um, and I do not return that kind of result. And so, we could define this new component that you don't have to implement
… But then we also… and this is something I will object to, is we need the algorithm defined so it doesn't depend on that object
<JoeAndrieu> Section 7.2.3
<JoeAndrieu> "Specifically, when a DID URL with a DID fragment is dereferenced, then Dereferencing the Resource is done by the DID resolver, and Dereferencing the Fragment is done by the client."
<JoeAndrieu> And yet, the client is defined as
<JoeAndrieu> "Software and/or hardware that invokes a DID resolver"
Joe Andrieu: And right now, we're conflating those two. So, one point of conflation, um, which I brought up on the signal chat we had going, I'll share with the group here. Um, in the spec today
… In section 7.3, we have that when a did URL is dereferenced. The referencing is done by the resolver
… However, the client is the software or hardware that invokes a DID Resolver
… This is the kind of conflation that makes it very hard when we start talking about a dereferencer in the way the spec does. To even distinguish who is doing what
… And I think this is the heart of the problem, is that throughout the spec, because we introduced this new term, it got used, and we have clients of the dereferencer
… Um, but I think the right take is something that I believe
<JoeAndrieu> Markus
<JoeAndrieu> If you have a DID-enabled application which dereferences something -> you have a dereferencer :)
Joe Andrieu: Marcus, Steven, and I are actually aligned on, even though it's very hard to find ways to talk about it. In the recent chat, Marcus had said, if you have a DID-enabled application which defines
… which dereferences something, which is what I care about, it enabled application. Then you have a dereferencer
… And what that tells me is that the client is the dereferencer, and any notion of a dereferencer that's not the client
… Um, is not something that we have consensus on. Like, it is… it is a weird new component
… that the current algorithm depends on that I think this group didn't really understand. And one of the reasons we didn't understand it is none of the diagrams show that. We have an extensive section on resolution architectures
… There is no dereferencer in there. The dereferencer is the client for a significant portion of the documentation, and occasionally, Marcus
… asserts that, which I would agree with. But then, if the client is a dereferencer, where's the separation between the client and dereferencer? And I think that's where things break
<JoeAndrieu> function checkProof(didUrl, proof) {
<JoeAndrieu> let baseDid = removeFragement(didUrl);
<JoeAndrieu> let fragment = getFragment(didURL);
<JoeAndrieu> let didDoc = resolve(baseDid);
<JoeAndrieu> let key=getKey(didDoc,fragment);
<JoeAndrieu> let result = checkProof(proof, key);
<JoeAndrieu> return result;
<JoeAndrieu> }
Joe Andrieu: Um, and just as an example, I'll give you a little bit of JavaScript that, in fact, dereferences, checks a proof
… And never has the signature function
… Of, um… that… that is defined in that system. Um
… Okay, so that's… That's it
Otto Mora: Mm-hmm. Uh huh...
… Uh, it's
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): Um, a suggestion which may help some in...
… Keeping the architecture straighter in people's heads is to
… Refer to a compound noun instead of a simple noun for both client and server
… Uh, to say what the client is a client of. And what the server is a server of
… Every time those two words are used
… Uh, it has helped in a lot of other places where similar
… blurring has taken place, so I'm suggesting it here
… Um… I don't think I have strong feelings about
… how this is built yet, but maybe that's just because I haven't heard the thing that I have strong feelings about yet. Um
… But yeah, I just wanted to suggest a compound noun. It's helped a lot elsewhere, maybe it can help some here
Will Abramson: Yeah, it's greatest handle...
Joe Andrieu: Um, yeah, I like that a lot...
Pierre-Antoine Champin: Yeah, uh… Yeah, sorry, sorry...
Joe Andrieu: Sorry, I thought… I thought you just queued me up. Go ahead, Pierre. I didn't see that. Your hand...
Pierre-Antoine Champin: Uh, no, no, yeah, but, uh, plus one, uh, plus 1, so to, uh, maybe...
… clarify things by having us compile nouns
… I tend to agree with Joe that
… the spec is sometimes a bit, uh, unclear about, uh, what the client is the client of, and where exactly is the dereferencer. I think some clarification is, uh
… is needed, and so, yeah, I like Ted's proposal. On that, um
… And I think I had something else to add. Yeah, Joe, I'm unclear why
… why you insist on the distinction between algorithm and function. For me, the terms are almost synonyms
… Uh, again, as long as we agree that it's an abstract function, it doesn't have to be a
… function or a separate component in your specific programming language or other. In order to… in order to execute an algorithm
… you need to know what your… what you start with, and you need to know what you expect at the end. For me, that's input and output in a very, very general notion, and so that's a signature. So you… I don't understand
… Yeah, I think you said, uh, you can have an algorithm but not have a function signature, and I disagree on that
<Zakim> JoeAndrieu, you wanted to agree and add its even simpler if we only have one client, the client of the resolver
Joe Andrieu: I'm sorry, you said on the last word, did you disagree about the algorithm without a function signature?...
Pierre-Antoine Champin: Yes, yes, I disagree with that, because for me, an algorithm without… without knowing what you start the algorithm with and what you're supposed to end it with...
… Which is input and output, uh, that, that doesn't… for me, that doesn't add up, that an algorithm always have
Otto Mora: Go ahead, Joe...
Joe Andrieu: Um, yeah, not all… not all functions have returns, and the...
… way that we are describing the function here, it defines both inputs and return outputs
… Um, and while it's reasonable to say, hey, this algorithm depends on these inputs, which I believe my PR does
… Um, requiring that I structure my output in any particular way is where I have a problem
… Um, functions can easily simply change program state
… There's, in fact, a whole college of software design that tries to ensure that every function does not change
… external state, but just returns a value. Um, but the function I… I
… put in chat, which I know you can't see, PA, um, you know, it does not return the resource
… Um, nowhere in that loop is that dereferencing algorithm, uh, function, I'm sorry, the dereferencer function is not in that algorithm
… But I do dereference. Um, and so what I'm trying to get to is an algorithm that explains what the client, the one singular client, needs to do
… Um, to call a resolver, and then process the result. And the way that they process it may or may not
… Um, within their software architecture suggest that they return a result at the end of some specific function. Um
… So, uh, that's it
Otto Mora: Okay...
… Uh, Will?
Will Abramson: Uh, yeah, I think I agree...
… Well, I was gonna say to… to Ted that I think if we… if we go down this route that we seem to be, at least on this call, moving towards. Then, the client
Joe Andrieu: Oh, yeah...
Will Abramson: is the client of the did resolver, right? Like, the client only calls the did resolver and executes a resolution request...
… And gets back a bid resolution result. And the client. is always
… executing dereferencing, right? Like, I mean, we could call it
… the Resolver client, or something like that. That helps clarify things, but
… I think part of the confusion is at the moment, the client sometimes is the client of the did resolver
… and is executing a resolution request, sometimes the client is the client of a dereferencer
… And dereferencing, and sometimes the deref… the DID resolver is executing the dereference. Some portion of geography. Um
… Yeah, and then the other thing I was gonna say is just on this, like, I mean, I think Joe's example is quite a good one, like
… I think it's the return values of this function signature that are
… um… you know, potentially problematic, because what does it… because, you know, those return values are return values of the dereferencing the resource operation, and I think they are
… Partly legacy from the fact that we were imagining some other entity, some server, you know, doing that function for us
… and then providing a result. Like, really, they're just a way of forwarding on that did resolution result
… Is how I see it. Whereas if the client is doing dereferencing, then they're going to get the data resolution results. They'll have all that metadata. And then they can decide how they want to use it
Otto Mora: Mm-hmm...
… I'll let Joe go, just because he had his hand raised before you did, Pierre, but right after that, you'll go. Yeah, go ahead, Joe
Joe Andrieu: Uh, yeah, I forgot what I want to say to… in response to tell Ted. I do like the compound. If we are going to have clients mean multiple things, we will need compound...
… Um, however, I think I'm in the camp Will just, uh, marked out, which is, I think what we're talking about is one client, a client that calls the resolver
… And I think anything more than that is a complexity that is… is the source of the confusion
… Hence, my attempt to clear that up with a rewrite. That's up
Otto Mora: Uh… Yes, uh, Pierre...
Pierre-Antoine Champin: Yeah, to, uh, to Joe's point about...
… the return value, you don't necessarily want to return anything, I agree. I read the current text, and I'm sorry, Joe, I didn't review your PR in detail
… Uh, so… that's why maybe what I'm saying is redundant, so… But, uh
… The current text, the specs
… tries to be quite generic about the output of the algorithm. Says, okay, there are those three things, and we do not tell you exactly how they are structured, so I don't read return here as constraining as you imply
… The goal of the algorithm is to produce those things somehow
… And maybe that's producing them in a way that modifies the state of the application, not necessarily returning them to an external component
… Uh, then, again, as soon as you define an algorithm
… I would consider that you could decide to embed this algorithm in a separate function
… Programmatic function, or component, or whatever
… So, in that sense, I think it's
… It still makes sense to talk about the dereference, as long as we are more clear about. When
… Again, whose client, whose clients we are talking about, I think this was said several times
… Uh, yeah, that's… that's what I have
Otto Mora: Okay, uh, Ted...
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): Um...
… So, for you, Joe, who see the quote-unquote client as always the client of the same. Service
… You don't need the compound noun
Joe Andrieu: Yeah, agreed...
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): The purpose of the compound noun is for the folks who don't necessarily have that vision...
… And maybe after a while, it will become clear that that is, in fact, the only
… Client relationship that happens here. Or, maybe that will
… Reveal that there is another client relationship. That gets described at some point
… And that'll change your viewpoint. And either way, going with the compound. Makes things clearer for
… Somebody, and I think that's a good direction to go
… Um… on the
… Function versus algorithm versus whatever else it might be called
… I think this is another one of those black box things where what we're trying to define is. some inputs
… and some outputs. And maybe there are other outputs that mostly don't matter
… Or only come up sometimes, and we don't have to define those. And maybe there are inputs that
… Are extra and get ignored and so we don't have to talk about those either or maybe we want to reveal
… That those things exist, and when they exist, this is the shape they should take
… I don't know, I don't have strong feelings about that. I think that defining the algorithm is a useful way to say, this is one black box that you can use. And when you get these inputs
… into it, then you'll get these outputs from it. And
… Whether that's implemented as a library call, or a function call within an application, or
… Rolling of the dice in the secret oracle chamber, um… That doesn't matter
<JoeAndrieu> https://
<Zakim> JoeAndrieu, you wanted to say, we don't need to create the metadata or process options
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): We don't really care how you implement the algorithm, just long as when we put these inputs into it, we get those outputs from it. That's it
Otto Mora: Uh, Joe...
Joe Andrieu: Um, yes, I appreciate that framing, TallTed, um, but I...
… I… I think the problem is our inputs and outputs are very explicitly defined
… Um, and I don't have that black box. The little JavaScript snippet that I shared
… does not return a DID URLD referencing result. I dropped that link into the chat. It is a very complex result, and I do not
… track did URLD referencing metadata, I don't track content metadata, I just use the result
… Um, so my challenge is, even if we try to think it as a black box, the problem is those inputs and outputs are not something I need to implement
… And that would make my application a non-conformant dereferencer
… And that's… that's where I fall down. I think what we need to do is define how you dereference a did URL, which is what the client does to prepare for resolution
… Call Resolve, and then process the answer
… Um, having it as a separate component just… it feels really awkward
Otto Mora: Mm-hmm...
… Well
Will Abramson: Yeah, I just wanted to say, like, I think, Joe, your example is good, but also it is, like...
… it has already decided the path that the dereferencing should take, if you know what I mean. Like, it's… it's
… Expecting a fragment that returns a key
… And then can be used to check and prove. Whereas, I think the other side is, like, you are dereferencing. did URLs without really knowing. what those did URLs
… reference, and what they do reference to, so there's lots of, like, logic that would
… Be repeated as you try and figure out, like, what is… you know, when you're trying to get to the results
… So… I think, sort of, the argument that Marcus, like, to put this algorithm
… behind a function is that… that would be repeated, right? Like, I… I'm
… Maybe going to call the dereference operation and get back some
… Resolve, like, hide all the logic in the same place, it can be repeated, and then handle fragment
… I think that's the argument that Marx is putting forward
… uh… I guess in this case, you know, you are, like, probably imagining, like, this is a verification method, it has a proof on it, the proof has a verification method
… which is a URL of a specific type, so I don't need all that stuff
Otto Mora: Mm-hmm...
<Zakim> JoeAndrieu, you wanted to say yes. that's the context in which I'm dereferencing the DID URL
Otto Mora: So
Joe Andrieu: Um, so that is right, I do not need all that stuff. And I don't need all that stuff because I'm in a context...
… that I understand, right? Either I'm evaluating the subject of a VC, I'm
… dereferencing into an image tag in an HTML page. Like, the whole point is that the dereferencer is the one who knows
… The context in which they are using that reference
… And if what I need to do is check the proof, then really the only things I need to add to that algorithm are error handling
Will Abramson: Hmm...
Joe Andrieu: Like, hey, what if it's malformed? What if I didn't get the DID talk? Like, obviously, my little example snippet didn't deal with that. But either it fails or it succeeds, right? Either resolve works or it doesn't. Either the proof checks or it doesn't...
… Um, and I know that I'm checking a proof because someone gave me a VC with a proof on it. And that is what my application is doing
… And there's no need for me to engage with some generic thing that's gonna force
… the JSON of that key to be represented in some way that either is… is, um, returned to RDF triples
… So that all the context is there. Or, um, I'm getting some weird subsection that includes the context, but not the other details. Like, how you actually return a snippet of a JSON-LD file is a hard problem
… Um, and we don't propose an algorithm in here, we don't show how to do that. The calling application knows. In my case, when I'm checking a proof
… I understand that I'm getting back a CID, which might be a DID, and I understand how to interpret the properties of that document
… Um, I don't need a generic mechanism to arbitrarily give me some form of something I would call a resource. I can just directly interpret the result of resolution. to do the function that I need in that application
… That's
Otto Mora: Right...
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): I think I hear what's going on. Um...
… I think that… you are… Optimizing
… your implementation of
… the algorithm, etc. So, you don't need XY, and Z
… So you don't implement it for your deployment
<JoeAndrieu> +1
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): And your deployment is not a general service that other things. Are meant to call in this way
… Your deployment is a special purpose build that sort of
… Blends a few things together, and in the process, drops a few things off
… You know, when you go to the store and buy eggs, they come in a shell. You don't need the shell
… It's just this thing that keeps the glop together
… And when you get home, and you're making a thing, you might separate the eggs that the
… Consumable material from the shell, and then put the consumable material in the fridge overnight for whatever reason
… And that's an optimization in your deployment of the egg
… I think that's what I hear going on. And I think that's fine
… Right, you're not making a general purpose thing for other people to work with in this sense. You're making a special purpose thing for your. Other things to work with
… And that's okay. I don't see a problem with that. I don't think we have to document that
… In the same way that we have to document the general purpose stuff
… If I'm understanding things correctly. Which is always a mystery. That's it
Otto Mora: Okay...
… There was, uh, a comment there. Uh, that I just wanted to read. To highlight from
… And
… Ben, essentially, Andrew, we do have select Jason LD for selected disclosure in the ECDSA crypto suite
… For what it's worth. Might work for subset creation for any JSON L. the doc
… Uh, yes, uh, Joe
<Zakim> JoeAndrieu, you wanted to say the client is always special purpose
Joe Andrieu: Um, yeah, so, plus one, a big blue hats, Benjamin's comment, um, but we have not defined that. Like, we have not pulled that in. We are, you know, it's… it's underspecified. What happens there? Um...
… Uh, but to tell Ted's point, I
… I think the client is always special purpose
… with, you know, if we're thinking about HTTP and how clients deal with that
… If I'm in Curl, or I'm in Lynx, or I'm in Chrome, or I'm in Brave, all of those things
… Dereference in particular ways that their app was designed to optimize for the features that they want to give their users
… And so the client is always the one who's doing the special purpose thing
… Um, the general purpose thing is the resolve function. Like, that is the most important thing we need to figure out how to have interoperability around
… Um, and over-prescribing what a dereferencer, what a client needs to do, um, I think is just going to make it harder for people to implement clients that used it
Otto Mora: Mm-hmm...
… I think I heard similar language from manu about increasing complexity of implementation. Uh, that was something that he has voiced
… And manu, okay, great
… Love this transcriber bot, man
<JoeAndrieu> s/Romano/Manu
Pierre-Antoine Champin: I seem to be missing the joke here, but I read the transcript...
Otto Mora: Romano, Maru, thank you, Ted...
Joe Andrieu: Yeah, he beat me to it...
Pierre-Antoine Champin: Uh, it...
Otto Mora: The manual, correct. Yes...
Pierre-Antoine Champin: If there's no queue, uh, so...
… I… I simply Joe's
… I mean, I would make a difference between the two light curl, which is
… Basically, would you like a library, like, set off. function like fetch
… That are basically meant to
… be reduced to be the black box that encompasses one particular thing, which is the HTTP dereferencing
… Uh, and a more complex tool, like Lynx or Firefox, that includes that internally, and indeed may
… not rely on generic libraries or tools, but implement their own in order to optimize. So, I do think that Ted's point has value here
… Now, of course, it raises the question of whether your implementation is compliant
… we… we… we… we… I would say that it is, but how do we… how do we state and measure that is, uh… It's a good question. Um
… As for what… to what you said last, Joe, uh, about what we need urgently is that
… Uh, resolution part, again, the hiding of the lead methods, complexity, or variety
… inside a unified component. I… I agree with that. That being said
… A lot of the things that happen that are handled
… By the current dereferencing algorithm
… Are somehow consequences of the deep spec in the fact that, yeah, we have… we don't
… don't just have digs, we define this wide notion of did URL, which offers a lot of possibilities, and at the moment, there is very little spec text about how to
… deal with that. So, I sympathize with, uh, with the will to
… give more… give more guidance on how to deal with those things. But I agree that the current text is not entirely satisfying, and maybe overly ambitious
… And uh… so it needs, it needs some, some improvement, but
… But I also understand that it might seem a little short to just deal with dereferencing the document and leave everything else
<Zakim> JoeAndrieu, you wanted to ask to read my PR
Otto Mora: Yes, Joe...
Joe Andrieu: Yeah, PA, I think I agree in general with your sentiment, but I want to ask you to read my PR...
… Because, in fact, I define exactly the algorithm that a client should do in a way that leaves it open enough so that I feel it doesn't unnecessarily constrain implementers
… Um, so I have tried to, uh, thread that needle. I've provided example spec texts
… Um, if you could look at it, I'd appreciate it
Otto Mora: Uh, yes, Will...
Will Abramson: Yeah, I'm just wondering, like, I mean, I think this has been a productive conversation, but partly productive because...
… uh… like, the disagreeing parties are not all here. I'm wondering
… what… like, is there things that we could synthesize and share? Like, I really like
… for me, the notion… like, it really clarified for me when, you know, Jo, you said that
… you know, clients are all… I mean, you've been saying for a while, like, clients know the context that they're in
… And I think I was like, oh, I kind of get that, but it really crystallized it for me with the VC example
… you know, with a proof, like, a proof has a property in it, and I know very clearly the kind of dig URL that is, like, I don't need to do all this other stuff
… And… I mean, I don't know if there's a way that we can capture that somewhere
… for others to get that from this. I mean, maybe they can just read the minutes, but I do think I
… I agree with what you're saying, like, dereferences always… dereferencing will always be specific to the context of the client
… So they might not want to call out to this general function that does all… all the
… Dereferencing stuff, but call specific parts
… You know, execute specific parts of the referencing based on the context that they're in. It does make sense
… Just thinking about next steps and how we, like, bubble up some of this conversation for the rest of the group. I mean, we'll have tomorrow, so we can service. Uh, we're gonna end the call
Otto Mora: Uh, yes, thanks...
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): It occurs to me that… In some ways. the… World of did dereferencing...
… Is akin to the world of
… browser URI dereferencing… If we allow for
… the fact that many browsers handle multiple URI schemes
… And have to do different things for different schemes
<JoeAndrieu> +1
TallTed // Ted (he/him) Thibodeau Jr (OpenLinkSw.com): Like, FTP is a totally different protocol than HTTP
… and put an S on either of them, and that feels very different, too
… Um… and there are other schemes that my browser will handle transparently
… If I just put the URI in, and I don't need to know the under-the-cover stuff, but the browser author sure does. And
… You know, maybe in future
… the browsers will modify and no longer dereference an FTP URI
… or will no longer dereference an HTTP URI, because that's considered to be insecure, even though the security that HTTPS provides is just. Point to point
… Preventing eavesdropping, and that's all it does, but people have a whole lot of other ideas about what protection that S gives them. Um
… And if people… Comprehend that piece
… Right? You have to look at the URI to know what to do with it
… In similar fashion, you have to look at
… a did URI to know what to do with it
… You have to see what did method is in play, and that is very akin to the URI scheme that is in play. You have to do different stuff. And what the differences are
… Don't really matter at… in this
… in this speaking that I'm doing, right? There's a lot of hand wave, there's a lot of black box involved
… But the bottom line is, I want to get back a resource, or a representation of a resource. That is identified by
… the URL I'm putting into my dereferencing engine
… Or calling DRM15 function on this URI. And away we go
… Um, in a world where everybody knows how to dereference everything. There's a lot of hand waving that's possible
… But in a world where it's new how they have to do it, and they have to think more, and they have to implement new things. To do all this stuff
… At least for now, some degree of new implementation is necessary, until somebody writes the ultimate
… Cross-platform library source code that can compile everywhere
… There's gonna be some
… Competition between componentry to do the jobs
… And… until it is exactly clear
… What the server is serving, and what the client is clienting. The compound naming
… Remains, in my mind, important
… And it will be important until everybody agrees that there's only ever gonna be 1 clienting that happens or one serving that happens, and then the compound word can be dropped out
… But even then, I think it's better to keep it, because there will be new people reading this stuff. That's it
<ottomorac> transcriber-bot, pause
<Zakim> JoeAndrieu, you wanted to suggest that without the editors, we are trying to steer the ship without a rudder