Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the usage of @context optional #947

Closed
msporny opened this issue Oct 11, 2022 · 296 comments
Closed

Make the usage of @context optional #947

msporny opened this issue Oct 11, 2022 · 296 comments
Labels

Comments

@msporny
Copy link
Member

msporny commented Oct 11, 2022

It has been suggested that the use of @context should be made optional. This would be a normative change to the current specification, as the use of @context is required in both JSON and JSON-LD. This issue is to discuss if this is a good idea and the mechanism(s) that could be used to accomplish the task.

@dlongley
Copy link
Contributor

Since making @context optional is not ideal for interop (there being more than one way to do things), there must be good arguments for doing so.

First, in my view, any argument that makes a VC look and function just like a JWT (and uses the same centralized registry extensibility mechanism) is not a good argument -- because the JWT spec already exists and people can just use a JWT if that's what they really want. Instead, we should assume that some additional constraints will be needed in order for people to achieve interop with VCs -- especially given the three-party model, data linkability / mergeability, and level of openness that they intentionally introduce.

Second, if an argument is made that having to process @context is so harmful that an option to avoid it ought to override interop concerns, the argument needs to be very clear about what "processing @context" means -- so that the assertion can be commonly understood before further analysis and discussion. There may be ways to resolve processing concerns -- but that should be discussed over in #948.

@melvincarvalho
Copy link

melvincarvalho commented Oct 12, 2022

I was lead here by the interesting post by @decentralgabe

The system being designed is of a decentralized nature

This comment is more of an observational nature, rather than a solution or proposal. I would like to record it, but there isnt an expectation of a response here, so do not feel the need to reply, unless you really want to

It strikes me that the verifiable claims data model, if @context is mandated introduces some hard dependencies:

There seem to be secondary soft dependencies within that web page:

  • w3id federation
  • w3id.org domain
  • w3id.org mapping service
  • github.com mapping registry

Additionally linked vocabs may depend on

  • http (no S) vocabs
  • in particular xsd, dcterms
  • security vocab (of which there is v1 and v2)
  • cred vocab

That's all fine and I appreciate this is versioned by specific year (2018) and number (1.1) and expected to be set in stone, assuming the vocabs are well maintained, which I expect it to be

However, adding this @context may be seen to introduce single points of failure, for systems that wish to go the extra mile with decentralization, and create something even more decentralized than https itself. Playing devil's advocate. What if one day w3.org gets hacked? What if w3id.org gets a bad actor? What if github stop redirecting 'bad' vocabs. Not all of these things are in the verification critical path, but some parts might be annoying enough to want to future proof them.

What would the solution be for systems that would like to use ability to verify claims, but not necessarily download and cache the @context from a webpage. Hashllinks everywhere, perhaps, though unsure that fixes everything.

I dont have a solution here, this is more an observation. But, I can picture dweb implementers complying with the spec 90% but leaving out parts they dont like. Which might be the reality today. Maybe that's OK.

Any advice for projects in the decentralized web looking at this technology?

@msporny
Copy link
Member Author

msporny commented Oct 12, 2022

@melvincarvalho wrote:

Any advice for projects in the decentralized web looking at this technology?

Yes, treat the values in @context as strings with known semantics, don't download them, don't cache them, hardcode against them. Done. :)

We had contemplated all that you say above in v1.0 and v1.1 and that is why the specification provides the entirety of the content and a hash for the base VC context. https://w3c.github.io/vc-data-model/#base-context -- and we'll continue to do that. Also keep in mind that the "dependencies" you call out are not required for operation of the system -- if you can resolve them, great, but don't build your PRODUCTION software such that you have to depend on resolving them. I'll address your concerns one by one below:

https protocol

You can perma-cache JSON-LD Contexts; ship your production software w/ static copies of all contexts if you're doing JSON-LD processing. If you're not doing JSON-LD processing, you can just check that each value in @context matches your expectation (ensuring that each of them uses @protected).

w3.org domain

Again, you don't have to download anything from there. Even if w3.org were to go away, it's backed up in Internet Archive and the US Library of Congress. There is an archival policy that would require multiple nation states to fail for the domain and its content to disappear completely.

https://www.w3.org/2018/credentials/v1 web page

Same as above.

w3id federation
w3id.org domain
w3id.org mapping service
github.com mapping registry

None of these are required to exist forever. That said, for these to go away, multiple companies and people would have to fail at the same time, Microsoft would have to take down Github, all cloned w3id.org repos on hundreds of peoples systems would all have to simultaneously disappear. The greatest single risk is probably the domain disappearing (which is pre-paid up to a decade in advance). We have redundancies (listed on the public web page) when it comes to domain management for w3id.org.

http (no S) vocabs
in particular xsd, dcterms
security vocab (of which there is v1 and v2)
cred vocab

As long as the w3id.org service or w3.org is available, we expect those vocabulary documents to be reachable. If the vocabulary documents are not reachable, nothing breaks (except possibly semantic reasoners, of which there are zero operating today... and if there were, we'd expect them to download and perma-cache the vocabulary documents in a production setting).

For those reasons, I don't believe your concerns are as dire as you might believe them to be. Can we do better? Yes, of course, we want to... but we're getting to the point where large companies (Microsoft / Github / Rackspace / Internet Archive / US Library of Congress / Arctic Code Vault) have to simultaneously fail for us to be put in a sticky situation... and that, after we've told people for YEARS that they should not load from the network in production.

Does that address most of your concerns, @melvincarvalho ?

@melvincarvalho
Copy link

Does that address most of your concerns, @melvincarvalho ?

Thanks for the detailed explanation. I think the trade-offs have been well expressed. There remains some nuances and mitigations, but probably off-topic for this thread, at this point.

@OR13
Copy link
Contributor

OR13 commented Oct 19, 2022

I'm a strong -1 to making @context optional in VCDM.

In my opinion, it defeats the entire purpose of the VCDM.

If you want to sign or encrypt JSON or CBOR, there are excellent standards at IETF, which you should use.

We don't need to make @context optional here, because it's already optional there... and making it optional here destroys interoperability here, while you already have interoperability there.

@iherman
Copy link
Member

iherman commented Oct 19, 2022

The issue was discussed in a meeting on 2022-10-19

  • no resolutions were taken
View the transcript

3.1. followup of the TPAC discussion on JSON/JSON-LD.

Manu Sporny: original issue has come from TPAC, but it seemed as if there were two separate issues..

See github issue vc-data-model#947.

Manu Sporny: first one requests @context to be optional.
… second one it to enhance developer experience of JSON-LD by limiting JSON-LD functionality.

See github issue vc-data-model#948.

Manu Sporny: so that a JSON only developer wont need to worry about JSON-LD processing.

Kristina Yasuda: I think it was correct to break down the original TPAC tracking issue into two, but will point out that a lot of good conversation is in that original issue that is now closed is not translated into the new issues. so will encourage folks to re-comment/re-engage..

Manu Sporny: intention is that you wont need a JSON-LD processor to use @context.
… done by adding a developer @context, but this should not be used in production.

Brent Zundel: folks should read the original issue for background and good information.

@selfissued
Copy link
Contributor

I'm obviously in favor of making @context optional to make lives easier for developers who don't need JSON-LD, being the author of the comment #929 (comment) that is the basis of this issue.

@dlongley
Copy link
Contributor

@selfissued,

I'm obviously in favor of making @context optional to make lives easier for developers who don't need JSON-LD...

If that is the goal, it sounds like it might be solvable in other ways which is the discussion in #948. Being specific about what is difficult should also be raised in that other issue so it can be more adequately discussed / addressed.

@talltree
Copy link

I have not had the bandwidth to more fully participate in this WG, however since this particular issue received many months of discussion in the W3C DID WG — where it was ultimately decided that @context would not be required in the plain JSON representation of a DID document — I wanted to share some of those learnings here.

Although I am not a developer myself, in my discussions over the past few years with developers of various types of "verifiable credentials" (meaning the generic term as defined by the VC 1.0 spec: "A set of one or more claims made by an issuer that has authorship that can be cryptographically verified"), the feedback I have gathered is: while JSON-LD and the RDF graph model is one perfectly good solution to decentralized semantic interoperability, it is not the only one.

What I have seen in the wild is at least three other solutions:

  1. Out-of-band agreement to an external specification. This might actually be the most widely deployed solution in the wild today, where the semantics of a credential are pre-determined by application context or pre-agreement.
  2. JSON Schema or another well-known schema language. These have matured a great deal in the last decade.
  3. Labeled property graphs. I am nowhere near an expert on LPGs — I learned about them from Sam Smith — however I later realized the LPG model is what the OASIS XDI Technical Committee (of which @peacekeeper and I were co-chairs) ended out using for semantic interoperability.

None of these are abstract examples — all in use today. For example, LPGs (expressed using JSON Schema) are the basis for semantic interoperability of the ACDC credential format used by GLEIF vLEI credentials that are on a path to be adopted by over 70 financial services regulators around the world.

My point being: by all means use @context when a credential uses a JSON-LD representation. That's the mechanism JSON-LD defines to control semantic validation in its representation of the VC data model.

But if a credential uses a different representation, that representation should define its own mechanism to control semantic validation. I believe that's what @selfissued meant when he said, "Let JSON be JSON".

@peacekeeper
Copy link
Contributor

many months of discussion in the W3C DID WG — where it was ultimately decided that @context would not be required in the plain JSON representation

Yes, but I would add here that the goal of the DID WG was to support multiple representations that could be losslessly converted! Whether or not the DID WG succeeded in that, or how complex that process has become, is another story.

If the VC WG ends up deciding that additional representations (such as JSON without @context, ACDC, ISO mDL, Anoncreds, etc.) should all be supported by the VCDM 2.0 specification, then the WG should also answer the question whether or not interoperability and lossless conversion between the different representations is supported, or not. If that isn't clearly explained in the specification, then simply saying that "@context is optional" will lead to divergence and confusion.

@peacekeeper
Copy link
Contributor

If you want to sign or encrypt JSON or CBOR, there are excellent standards at IETF, which you should use. We don't need to make @context optional here, because it's already optional there...

That makes sense to me..

If someone wants to use plain JSON (without @context) as a data model, and use JWS for signing, why not just use good-old plain JWT/JWS/etc. which already exists, is mature, widely deployed, etc.?

What would a VC-without-@context actually look like, does anyone have an example?

@OR13
Copy link
Contributor

OR13 commented Oct 20, 2022

Here are some examples:

Especially this one:

{
  "iss": "https://spec.smarthealth.cards/examples/issuer",
  "nbf": 1663010381.698,
  "vc": {
    "type": [
      "https://smarthealth.cards#health-card",
      "https://smarthealth.cards#immunization",
      "https://smarthealth.cards#covid19"
    ],
    "credentialSubject": {
      "fhirVersion": "4.0.1",
      "fhirBundle": {
        "resourceType": "Bundle",
        "type": "collection",
        "entry": [
          {
            "fullUrl": "resource:0",
            "resource": {
              "resourceType": "Patient",
              "name": [
                {
                  "family": "Anyperson",
                  "given": [
                    "John",
                    "B."
                  ]
                }
              ],
              "birthDate": "1951-01-20"
            }
          },
          {
            "fullUrl": "resource:1",
            "resource": {
              "resourceType": "Immunization",
              "status": "completed",
              "vaccineCode": {
                "coding": [
                  {
                    "system": "http://hl7.org/fhir/sid/cvx",
                    "code": "207"
                  }
                ]
              },
              "patient": {
                "reference": "resource:0"
              },
              "occurrenceDateTime": "2021-01-01",
              "performer": [
                {
                  "actor": {
                    "display": "ABC General Hospital"
                  }
                }
              ],
              "lotNumber": "0000001"
            }
          },
          {
            "fullUrl": "resource:2",
            "resource": {
              "resourceType": "Immunization",
              "status": "completed",
              "vaccineCode": {
                "coding": [
                  {
                    "system": "http://hl7.org/fhir/sid/cvx",
                    "code": "207"
                  }
                ]
              },
              "patient": {
                "reference": "resource:0"
              },
              "occurrenceDateTime": "2021-01-29",
              "performer": [
                {
                  "actor": {
                    "display": "ABC General Hospital"
                  }
                }
              ],
              "lotNumber": "0000007"
            }
          },
          {
            "fullUrl": "resource:3",
            "resource": {
              "resourceType": "Immunization",
              "status": "completed",
              "vaccineCode": {
                "coding": [
                  {
                    "system": "http://hl7.org/fhir/sid/cvx",
                    "code": "229"
                  }
                ]
              },
              "patient": {
                "reference": "resource:0"
              },
              "occurrenceDateTime": "2022-09-05",
              "performer": [
                {
                  "actor": {
                    "display": "ABC General Hospital"
                  }
                }
              ],
              "lotNumber": "0000001"
            }
          }
        ]
      }
    },
    "rid": "MKyCxh7p6uQ"
  }
}

^ note that this data is not a valid W3C Verifiable Credential...

but it looks a lot like one...

This kind of thing muddies the waters and makes the standards less useful, and should be discouraged because it creates confusion and is harmful... it would have been better for them to just use a vanilla JWS / JWE.

@dlongley
Copy link
Contributor

dlongley commented Oct 20, 2022

I think that "saying there are a lot of other ways to do things out there in the wild" is not a good enough argument to make context optional -- it's an argument that will harm interoperability. Those other things "out there in the wild" aren't being standardized -- and if we say "you can pretty much do anything", then we're not standardizing anything here either.

I should add -- if any of those things "out in the wild" are already standardized and they solve someone's use case, then that person should go use them, not try to change what we're doing here to be the same thing with a different name.

@talltree
Copy link

@dlongley Your comment goes to the very heart of the fundamental question for this WG: Is the goal of the W3C VC 2.0 standard to be:

  1. The standard for JSON-LD-based digital credentials?
  2. The standard for multiple representations of digital credentials?

If the former, then simply bite the bullet and require all W3C-conformant digital credentials to use JSON-LD, period. But recognize that means there's no bridge with JWT/JWP, ISO mDL/mDOC, ToIP ACDC, AnonCreds, ICAO DTC, and potentially others coming out of the EUDI work.

If the latter, then the VC WG needs to tackle the issue of multiple representations of the VC Data Model.

@talltree
Copy link

If the VC WG ends up deciding that additional representations (such as JSON without @context, ACDC, ISO mDL, Anoncreds, etc.) should all be supported by the VCDM 2.0 specification, then the WG should also answer the question whether or not interoperability and lossless conversion between the different representations is supported, or not.

@peacekeeper Lossless conversion of DID documents was possible because DID documents are not required to be digitally signed. VCs must be digitally signed. So that means lossless conversion is not an option with VCs (crypto engineers please correct me if I'm wrong).

However lossless conversion is not the only way to achieve semantic interoperability. The data in a a claim is still the data no matter what representation is used to serialize it and what cryptographic algorithm is used to sign it. In my mind, the question is whether a machine can do the mapping of the data between the different representations.

Per my comment above, if W3C VC 2.0 is JSON-LD only, then that mapping is achieved entirely using JSON-LD contexts. If W3C VC 2.0 supports multiple representations, then it needs to specify how each representation supports mapping of claims to another representation.

@peacekeeper
Copy link
Contributor

do the mapping of the data between the different representations.

@talltree I think that's what I meant by "lossless conversion". Sorry if I didn't make it clear. Of course signatures and proofs only work on the original representation, but the question is whether or not it should be possible to map the actual claim data and semantics between representations.

@msporny
Copy link
Member Author

msporny commented Oct 20, 2022

the goal of the DID WG was to support multiple representations that could be losslessly converted!

Yes, and in hindsight, that was a huge mistake. To this day, we only have two JSON-based representations that only differ in the use of @context. The WG wasted close to a year to get everything sorted out there only to end up with an overly complex data model that didn't result in any significant feature differentiation in implementations.

the VC WG needs to tackle the issue of multiple representations of the VC Data Model.

Defining multiple representations (as it pertains to supporting ISO mDL/mDOC, ToIP ACDC, AnonCreds, ICAO DTC, and potentially others coming out of the EUDI work) is not listed as "in scope" for the Verifiable Credentials 2.0 Working Group Charter. Those things are not Verifiable Credentials -- they are different technologies, with different data models, and different representations/serializations. It is possible to logically express the information in each of those technologies using the VC Data Model, but that is not what those other technologies have chosen to do.

All we can do is provide an example of how those other data models can be represented using the VC Data Model in a "logically equivalent" way. Calling those other things "W3C Verifiable Credentials" will only confuse the market... even calling them "verifiable credentials" is problematic and misleading, given the name and status of the W3C Verifiable Credentials specification.

@nadalin
Copy link

nadalin commented Oct 20, 2022 via email

@mprorock
Copy link
Contributor

Yes, and in hindsight, that was a huge mistake. To this day, we only have two JSON-based representations that only differ in the use of @context. The WG wasted close to a year to get everything sorted out there only to end up with an overly complex data model that didn't result in any significant feature differentiation in implementations.

+1

Seriously opposed to making context optional. There are other paths here that can preserve the semantics on a VC / VP while allowing for easier developer onboarding etc. Notably 953 would simplify the developer side, while ensuring that we keep semantics at the core data model level

@talltree
Copy link

@mprorock I certainly understand your perspective — and that of many other members of the WG — that JSON-LD (and its underlying RDF graph model) is a fundamental component of the W3C VC standard and should not be compromised in any way.

I also understand the perspective of other members of the WG who feel that the W3C VC standard should support a plain JSON representation that does not use either JSON-LD or the RDF graph model because they wish to use other solutions to semantic interoperability such as JSON Schema.

So it strikes me that the WG is coming to a Great Divide. It can go down one path or the other. But not both. The sooner the WG makes a decision, the sooner these questions can finally be laid to rest.

@melvincarvalho
Copy link

melvincarvalho commented Oct 21, 2022

Since making @context optional is not ideal for interop (there being more than one way to do things)

@dlongley It might be helpful if you could elaborate on the issue with interop. More than one way of doing what?

Given that @context in this spec is designed to be an immutable blob that never changes, and downloaded and cached, in, say, the parser. What is its function?

Does it, for example, identify the thing you are parsing as a verifiable claim, in cases where the parser didnt know that before? Could it be instead got from the @type?

Does it give the version of the VC being used (2018) to help the parser canonicalize it and verify it. Possibly yes. However there's only one version (ie URI) right now in the spec, so I dont see parsers getting confused.

1-2 sentences on what specifically the barriers to interop would be, might help give a background to those following.

There might be a compromise along the lines of @context SHOULD be mandatory in this version of the spec, and v.next it will be a MUST as there will be two to choose from.

@David-Chadwick
Copy link
Contributor

@talltree "because they wish to use other solutions to semantic interoperability such as JSON Schema." I do not see using JSON schema, whilst keeping a nominal @context property, are incompatible. They serve different purposes and both can work together. The solution to have the equivalent of an 'unregistered context' present for those who do not wish to process JSON-LD seems to be a perfect compromise to interworking.

@peacekeeper
Copy link
Contributor

Those things are not Verifiable Credentials -- they are different technologies

I have to say, if I look at the example in #947 (comment), to me this looks like a good old JWT, not like a VC.

This example doesn't have the issuer and issuanceDate VC properties; instead it has the JWT equivalents.

It doesn't have a @context, and it doesn't have a proof, instead it does those things in JWT native ways.

Yes that example has type and credentialSubject, but does that by itself really create any kind of practical interoperability, if everything else in that JWT example is different from how things are done in VCs? Maybe it would be best for implementers to decide whether they want to use JWTs or use VCs, but to stop intermixing VC constructs and JWT constructs in complicated ways.

Perhaps It’s time to let VCs be VCs :)

@lrosenthol
Copy link

Most of this discussion about using @context seems to be around the base/default contexts - but that's not the point of having it. The use case, IMO, is to provide the equivalent of namespacing for JSON(-LD) when adding additional/custom information, that may need to be processed/understood and/or validated downstream.

Without @context, I don't see a way to provide extensibility to a VC w/o the possibly of semantic conflict...

@dlongley
Copy link
Contributor

@melvincarvalho,

It might be helpful if you could elaborate on the issue with interop. More than one way of doing what?

With respect to interoperability, it actually doesn't matter "what". Generally speaking, having more than one way to do something harms interoperability, so a good argument needs to be made that any optionality is worth it. Sometimes it is -- sometimes it isn't.

If @context becomes optional, then there are now two ways to do what it does -- which you were asking about. @context provides globally-unambiguous mappings for terms (aka term definitions) -- and not just for the core terms as @lrosenthol has explained above. If you don't provide those via @context, you need to provide them some other way. If you don't provide specific term definitions at all, you need to signal that you're opting out of globally-unambiguous terms so that choice can be distinguished from a mistake.

Given that @context in this spec is designed to be an immutable blob that never changes, and downloaded and cached, in, say, the parser. What is its function?

This is not accurate. You're mistaking the core context from the extensions, both of which use the @context field. That being said, specifying the core context in a VC provides self-describing core term definitions, acts as a well-known signal for people consuming VCs so that they can identify whether the JSON they are looking at is intended to be a VC, enables linked data transforms, framing, and merging capabilities, and anyone who doesn't read the VC spec at all, and is just consuming linked data, can build knowledge graphs.

It also establishes and demonstrates the extensibility model. Today, every VC must have at least two contexts, the first is the core context and the second provides the term definitions for the specific VC type.

Could it be instead got from the @type?

No. This would not sufficiently provide term definitions -- and used in isolation would require types to be full URLs, disallowing idiomatic JSON typing. It would also fail to provide the other features mentioned above.

1-2 sentences on what specifically the barriers to interop would be, might help give a background to those following.

VCs require at least two contexts, the core context that defines the core terms, and a secondary context that defines the terms for the specific VC type. If @context is the extensibility mechanism in only some VCs and not others, then a second mechanism is required, harming interoperability if both mechanisms are not implemented by everyone. Additionally, if the separate formats cannot be mapped onto each other in all cases, then interoperability is further harmed.

@OR13
Copy link
Contributor

OR13 commented Oct 21, 2022

VCs require at least two contexts,

This is not true today, and it should not be true tomorrow.

You can't represent anything useful in v1.1. with only 1 context.... but that does not need to be true of 2.0.

@dlongley
Copy link
Contributor

dlongley commented Oct 21, 2022

@OR13,

This is not true today, and it should not be true tomorrow.

To clarify, if you want to use idiomatic JSON, this is a requirement today. It is true that you can instead use full URLs for your JSON keys and type values otherwise.

You can't represent anything useful in v1.1. with only 1 context.... but that does not need to be true of 2.0.

Yes, we can do all kinds of things in 2.0 (good or bad).

@SmithSamuelM
Copy link

I have moved (copied) my proposal above for resolving the @context issue with a layered protocol to its own issue so it can be voted on independently.

#982

@iherman
Copy link
Member

iherman commented Nov 23, 2022

The issue was discussed in a meeting on 2022-11-01

  • no resolutions were taken
View the transcript

1. Make the usage of @context optional (issue vc-data-model#947)

See github issue vc-data-model#947.

Kristina Yasuda: This is about making @context optional. Thanks everyone for contributing and commenting on the issue..
… It's nice to see how many people care.
… There are a lot of different arguments, probably some people worry about implications for interoperability.
… There has been big tent and small tent terminology.
… How does the group think about semantic interoperability and extensibility. What are the different thoughts around that?.
… Maybe we can find points to reach agreement on.
… I suggest let's start there, then we can focus on certain aspects at any time.

Manu Sporny: A bit of background. A lot has happened in.
… Currently @context is required across representations. There has been some confusion about this. This is definitely what the spec makes.
… We're talking about introducing a breaking change to the VC data model.
… There seem to be different lines of thinking on whether this is a good or bad thing.
… One train of thought is JSON-LD is difficult to use, and we should allow different types of extensibility models. Because of that we should make @context optional and open up the aperture. This is the "pro-remove-context" argument.
… Extensibility could use an IANA registry, let's follow more traditional JSON-based approaches, similar to JWT.
… We want to make this as easy as possible for developers. This is a common area. The "pro-lets-keep-things-the-way-they-are" (requiring @context) arguments are: We want decentralized extensiblity. We don't want to create centralized registries, and create a common data model.
… In 1.0, there was an agreement about using a graph-based data model, JSON-LD ticked the boxes.
… This "pro-keep-@context" camp is concerned about making a breaking change that will further complicate how people have to process VCs.
… These seem to be the two main lines of thought.

Michael Jones: We're at a better point for VCs now than we were several years ago, because we have seen what people have actually built and deployed.
… Some people do want semantic knowledge graphs with JSON-LD, and some people don't feel they need it and have deployed things that don't use it..
… Smart Health credentials, Microsoft's implementations, are examples.
… Some people can't get JSON-LD right without expert help.

Drummond Reed: ISO mDL/mDOC and ToIP ACDC are not Microsoft-lead initiatives.

Michael Jones: There was XML-SOAP web service stack which worked really well, but developers hated it, they thought a lot of the complexity was unnecessary.
… Developers vote with their feet. They want VCs with the three party model, but they don't care about JSON-LD features for the most part.
… I read the whole thread. No part of our charter talks about semantic knowledge graphs. It's not core of our mission.
… It would be wise to create a standard based on what developers are actually using.
… One argument in the thread was you're not required to do JSON-LD processing even though there is a JSON-LD @context.
… There's evidence that a divide is harming interoperability.
… It would be better to say if there's @context it's JSON-LD, and if it's not there, then it's not JSON-LD.

Drummond Reed: +1 to a "bright line" as to whether a particular instance does or does not use JSON-LD.

Dave Longley: From my perspective. Regarding decentralized extensibility, we have a technology that has been around for over a decade called JWTs. It expresses claims and uses a centralized IANA registry.
… Use cases have come up over that decade where people felt that the JWT model doesn't solve their problems. That's where VCs came from.
… JWT doesn't allow decentralized semantics, and merging of different data.
… A centralized registry couldn't scale to the many terms, and people didn't want to ask for permission when using terms.
@context is a way to express which registries are in play. Instead of having one registry you can do it in a decentralized way.
… We specify registries in the @context field, this will disambiguate which terms are being used. This allows anybody to make and share common vocabularies.
… With this concept we got a graph model where we can merge data about different entities. Credentials from different parties can be used to learn about the same entity. This is very valuable for supply chains, etc. There are a lot of use cases that VCs solve, not just personal credentials.

Drummond Reed: The issue with the "@context" property is that it requires using one particular solution to decentralized semantic interoperability. It is not the only solution. By making "@context", required, we exclude those other solutions.

Dave Longley: We have an existing technology, where people voted with their feet, and said this doesn't solve use cases. And VCs came up.
… And I don't see how JWTs can't be used in a three party model..

Manu Sporny: drummond, not true -- you can list a jsonSchema and use that if you want (not that that's a fully formed technical solution) -- you need to propose a fully formed alternative. We can't hand-wave over the details here.

Manu Sporny: +1 to dlongley.

Dave Longley: If you're happy to use a centralized registry, there's already a technology that solves this problem. There would be no point in making VCs that same technology.

Michael Jones: Thank you dlongley for sharing thoughts on JWT..
… One extensibility mechanism for JWTs you haven't mentioned is the ability to use collision-resistant claim names, often prefixed by URLs that are in control of the party defining the claims.
… Just like @context relies on URIs for permissionless global extensibility, I can also create claim names under a domain name I control, to set up my own claim names.

Manu Sporny: "Collision-resistant claim names" are things like this: "https://foo.example/my-vocab/my-properties" <--- people aren't widely using these in JWTs -- we need to ask the question "why?" What's different between VCs and JWTs?.

Dmitri Zagidulin: URIs as property names, for JSON objects. If only there was a way to like.. extract / DRY those URLs into an object, so developers could continue to use URLs as property names, but also have them be human-readable and idiomatic :).

Michael Jones: So it's in fact the same extensibility model. We can also use an IANA registry, that's open to all. That's just as permissionless, you just have to send a permission request. I have helped several people on the call do that, it's very easy.
… JWT is also permissionless and globally extensibility.

Drummond Reed: One of the other fully decentralized solutions for decentralized semantic interoperability is labeled-property graphs (https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/), which is the solution used by ACDC credentials. It would be ideal if ACDC credentials could be included under the W3C VC tent..

Michael Jones: The VC specs did define JWT claim extensions "vc" and "vp" to use the three party model.

Manu Sporny: drummond, if you want the VCWG to use Labeled Property Graphs (LPGs), you should propose that as a technical solution.

Michael Jones: As Daniel Hardman said in this comments, there are times for strictness and times for laxness. The web flourished because HTML was lax. Structure was added to it, but structure was optional.
… We should let developers use it as they see fit. A failure would be if this WG decides that only JSON-LD VCs would be VCs.
… Again, the charter doesn't talk about the graph model.
… People should use it if they want, and not use it if they don't want.
… Let us use VCs with as much or little structure as we want.

Manu Sporny: I want to push back hard against the rhetoric about "the data is in and developers have spoken".

Michael Prorock: +1 manu.

Manu Sporny: The reality is that we have had multiple plugfest, currently JFF involves close to 40 implementers. None of them seem to have any problems with having @context into their VCs.
… The assertion that developers out there desire it, if that's happening, they should engage.

Mahmoud Alkhraishi: +1.

Manu Sporny: Anybody can engage on Github and the mailing list. I don't buy that there is a ground swell.
… Finding one developer who makes a mistake doesn't imply "desire". It doesn't mean they don't want to put it in there.
… You've got to back it up with citations and data.
… We can absolutely back up that people are using @context in JFF plugfest. They use both JWT backed VCs and Data Integrity backed VCs.

Michael Jones: The data is in the issue - see the number of people who are speaking against @context.

Manu Sporny: I do believe that there are some developers who don't want to use it, but they have to bring forward a concrete technical solution.
… This has not been done to date.

Antony Nadalin: not everyone can participate in these interops.

Kristina Yasuda: We have some implementers on this call; there are also other implementers who are not on this call.

Dave Longley: Want to respond to selfissued about JWT's decentralized extensibility mechanism using fully qualified terms.
… It's true, you can do that with JWTs. The problem is that you wind up with non-idiomatic JSON that doesn't look like JSON to developers. That is important not jus aesthetically, but developers also have to implement this in their code.

Michael Jones: @context irks and bothers developers.

Dave Longley: @context was designed for this, to make it possible to continue to use idiomatic JSON.
… It was really important to have term conflict resolution on a global scale, while still having idiomatic JSON.
… Regarding the graph model, it's not in the charter, but it's in the spec today. So it doesn't have to be in the charter.
… JSON is a format, not a data model. VC introduces a data model.

Michael Prorock: +1 Dave Longley.

Manu Sporny: +1 dlongley.

Dave Longley: I don't understand why a new spec is needed to use JWTs in a three party model. I don't know why JWTs can't be used.

Michael Jones: It irked the SmartHealth pass developers. It irked the Microsoft decentralized identity developers. It irks the many people who showed up to speak on the issue against @context, like Daniel Hardman. Look at the data.

Manu Sporny: Microsoft led the SmartHealth pass work, right?.

Michael Jones: Microsoft participated in the SmartHealthPass work, just like it's participating in the VCWG.

Dave Longley: I don't know why JWTs are not only used to secure VCs, but also seem to change the VC data model..
… If you want to do whatever modeling you want with JSON, just use JWTs.

Drummond Reed: First point. My understanding from people who implement JWTs is that JWT technology does not define a three party model. So if you want to use JWTs, the JWT community has come to this community to define a three party model..

Dave Longley: it seems that you could just define a three party model via claims descriptions that you submit to the IANA registry for JWT.

Drummond Reed: They want to be interoperable with this community here. Having a common way to describe this model, so that it can be implemented in JSON-LD, JWT, etc. is the reason why the thread so long. This explains why some want to use @context and others don't.
… I don't understand. The benefits of JSON-LD are all still there for everyone who uses the JSON-LD model if @context is still there. All we're saying is that other models can also be used. I don't see the harm of opening it up to other models.
… JSON-LD will always be JSON-LD if @context is there.

David Waite: Talking about the plugfest.. If those implementations try to process JSON-LD they will fail unless they provide mapping files.

Dave Longley: David_Waite, you're misunderstanding the spec and "JSON-LD processing"..

David Waite: Some people want to use JSON-LD tools for a domain such as health care records.
… I'm imaging that the plugfest was created around messages with @context that were fully resolved. The definition of how to map those were published. Without this the plugfest may not have been successful.

Dmitri Zagidulin: that's a misunderstanding, @vocab does not break the extensibility model.

David Waite: If I see property "foo" I will just make up a name, it's not being managed.
… I want an avenue where I know the data is proper graph data, whereas someone wanted a different extensibility model, and here it is.

Manu Sporny: Yes, David Waite seems to be misunderstanding a variety of things here... about how the interop fest was set up being one of them.

David Waite: Telling people to map to JSON-LD and write @context, when the spec itself doesn't say that, will create a lot of interoperability problems.

Dmitri Zagidulin: On one of the thread, I argued it's okay to make @context be optional, because instead we can require a default @context for VCs. If a developer encounters a VC and it doesn't have a @context, you can always inject a default base @context plus a @vocab.
… It became clear to me that this isn't a viable option. It's not really possible what is a VC and what is not, enough to be able to inject this default @context.
… So what if we don't have the default @context.

Mahmoud Alkhraishi: +1 on the friction point.

Dmitri Zagidulin: About making it optional: With the introduction of @vocab, there is zero friction for developers. Developers just have to copy & paste a single string, they don't have to create their own @context.
… This is about the extensibility model.
… Plain JSON extensibility hasn't worked out well. One group rejected @context initially and then ran into collision problems.
… Another example in my mind shows that the registry and laissez-faire doesn't work is use profiles..
… OIDC registers some standard claims for use profiles, such as name, picture, email.
… This is really simple, really constrained. We have seen that even with the IANA registry, we've seen that in practice a bunch of implementers have implemented the use profile differently.
… Auth providers have this in their documentation: They have to normalize certain fields that they have in common.
… The point is they have only been able to agree on a small set of common fields.

Daniel Hardman: I don't think the queue is going to get to me before our time is up, so I'm going to leave my comments here.

Dmitri Zagidulin: The registry and JSON extensibility model only work within a single company or community. Once you cross communities, this extensibility model breaks down.

Antony Nadalin: Wanted to comment back to manu. I don't have time to participate in plugfests. I brought up the issue of @context in the first release, I think the answer wasn't appropriate.
… It's not needed for JWTs. I need a parser that has to deal with @context, so I have to change some core parts of my implementation. It feels awkward to have to change my parser if I just want to use JWTs.
@context is not applicable in a JWT environment. I have lots of use cases with an implementation that doesn't use it. I want to be compliant with the spec but I can't right now.

Dmitri Zagidulin: completely incorrect, regarding parsers.

Dave Longley: you don't need a parser for it.

Dmitri Zagidulin: those are not necessary.

Dave Longley: we've said this many times :).

Daniel Hardman: I don't care about developer friction; I think this has never been a very important consideration. My reasons for wanting to make @context optional have to do with the wisdom of putting human data into the semantic web, not with the bother of implementing.

Shawn Butterfield: I don't have the same legacy as others in the WG. I feel there's a lot of ideology and schisms about the intentions.

Daniel Hardman: I posted a long comment about this at the end of issue #947 with much more detail about that perspective.

Shawn Butterfield: We owe it to each other to understand where the different camps are coming from.
… The details really matter here. The declaration to keep @context required matters.
… The W3C definition of VCs really matters. I believe this is what people feel passionately about.
… There are other formats because our customers have often not decided yet what they want. They want optionality.
… I get where the camp is coming from that wants openness and ambiguity. I think it's important to not just dismiss that.
… I don't think any one data model should attempt to claim superiority, it should be up to our customers.
… We're going to see a proliferation of VCs, it's already happening.

Kristina Yasuda: q.

Shawn Butterfield: What's most important to me is security and trust. The data model can be circumstantial, but the security model needs to be very very clear.

Daniel Hardman: Piling on top of @shawnb's comments: it's the semantic implications of @context, NOT the processing implications, that motivate me to ask for @context to be made optional.

Michael Prorock: This is a good discussion. There is a lot of nuance on both sides. I have a lot of frustration with JSON-LD. In this context however the inclusion of @context (even if you're not processing it), there is a side benefit to it.
… I'm pretty strongly of keeping @context in and easing developer onboarding. This keeps the semantic meaning of how we structure claims.
… This isn't a hard thing to ask to include it, which is already in the spec.
… I don't see a good argument to drop it. I see valid arguments to make it easier for developers, to add guidance about caching etc.
… I don't see any significant reason for dropping it..

Daniel Hardman: +1 to Mike's comment about the primacy of security..

Daniel Hardman: Helping developers isn't the reason @context should be made optional. See my final comment in #947.

David Chadwick: As a JWT developer we have absolutely no problem with @context. It doesn't cause interop problems for us.

David Waite: 2+.

David Chadwick: I don't see why e.g. the health care use case can't just include an @context.

Daniel Hardman: I feel like developer onboarding and friction is a red herring. It's not about onboarding, it's about semantic implications. I left a long comment in the Github issue.

Drummond Reed: +1 to Daniel's point. What the JSON-LD folks do not seem to appreciate is the level of confusion that it causes in the market if all W3C VCs must have an JSON-LD @context statement when some of them do not use JSON-LD. Avast implements both and we feel strongly that @context should ONLY be used for VCs that use JSON-LD.

Jeremie Miller: Regarding developers voting with their feet. Ping is involved in a lot of pilots in the VC space with our customers. Those are customers who are silent, they are not on Github or involved in the standards process. Our team is getting pressure to use VCs. We're here because we want to find a common solution.
… We're getting pressure from people who can't absorb a new JSON-LD tech stack, and they want to use JWT. We want to meet requirements.

Dmitri Zagidulin: @drummond - hey, you're absolutely right, confusion is bad. With this v2.0 spec, we have a chance to fix a lot of that confusion, to clarify. Without making breaking change & removing @context requirement.

Joe Andrieu: I think this is a breaking change. I don't think there is consensus. My proposal is to close the issue. There doesn't seem to be consensus and we should stick to the current spec.

Michael Prorock: +1 Joe Andrieu.

Drummond Reed: -1 to closing this issue.

Jeremie Miller: -1 to closing issue.

Antony Nadalin: -1 to joe.

Michael Jones: On the last WG call Manu said that it's not a breaking change because the V1 context doesn't change.

Dave Longley: The term "JSON-LD processing" is problematic. If you want to write an implementation of VCs, you don't need to use a JSON-LD library..

Joe Andrieu: @tony without consensus there will not be a change in the spec.

Manu Sporny: To be clear, this is a breaking change to how the spec works..

Antony Nadalin: issue should no way be closed as no consensus.

Joe Andrieu: issue will never have consensus. that's why we should close.

Michael Jones: I appreciate everyone who spoke up. We all passionately care about this. It's really important that the WG produces a spec that everybody wants to use. I wanted to run some strawpolls, but we're out of time. We need another special topic call.

Michael Jones: -1 to closing.

Antony Nadalin: nothing in charter about no breaking change allowed.

Kristina Yasuda: We need direction on how to proceed before we close the issue. There's not consensus to keep the spec as is.

Joe Andrieu: no we don't "need direction". Changes require consensus. Full stop.

Shawn Butterfield: Looking forward to the next call. Thanks Markus for scribing!.

Kristina Yasuda: Thanks everyone for joining. We will continue the discussion on the next special topic call in 3 weeks. Let's then try to make some resolutions on the main call..
… See you tomorrow..


@vongohren
Copy link

vongohren commented Nov 25, 2022

My 5 cents. As an implementer I have had my fair share of struggle with JSON-LD, @context, and still do. I believe we can together make much better tooling to support this ecosystem of contextual data. I truely belive that contextual data can assist us in an open world paradigm. Having 5 implementers work together on a VC is not open world. That is closed world to those 5 implementers. Open world needs a guiding map, which @context can assists with.

Reading the transcript I truly dont see an issue of ignoring context if you want to do just JWT, as David Chadwik is saying, it doesn't cost their JWT implementation anything. Why does it cost all this clients that is mentioned so much hassle, or any of the other implementors so much hassle? I dont understand that.

For open world to work, there has to be a map to use, that map is @context.
You can decide not to use it, that is fine, and that can be a fun journey.
But adding a standard @vocab, as have been mentioned as a solution, just says that the map you are looking at, does not really give you anything. There is a big black hole anywhere you decide to go. Adding a pointer, saying there is a big black hole here, helps us to know that there is one, and we can avoid the VC if we dont want to step into problems. This last stament points back to adding a ignore me context string that adds @vocab.

I want a map, and WHEN Im really good at reading the map, read understanding and tooling with JSON-LD, i really appreciated that the earlier me wanted to add this map, @context, as a MUST item into our data models.

@TallTed

This comment was marked as resolved.

@vongohren
Copy link

@TallTed thanks for this notice, changed now.

@OR13
Copy link
Contributor

OR13 commented Dec 14, 2022

Another DID Method registered with undefined terms, due to the did core v1 context not including a vocab:

@jandrieu
Copy link
Contributor

@OR13 Could you map that to VC work?

I'm not seeing how someone filling in a Github template form inappropriately is addressed by anything in the VC specification.

@OR13
Copy link
Contributor

OR13 commented Dec 14, 2022

@jandrieu Sure.

VCDM 1.1 and DID Core v1 both don't include an @vocab in the primary context.

Every week I see a new DID Method registered with terms undefined because of this.

The VCWG has agreed to add an @vocab in the v2 context.

The links I provide above are evidence that this decision was a wise one, and that the DID WG should make a similar decision under its next charter / operational period.

In relation to the current issue we are threaded on, an @vocab in the default context makes it's safer to make the context optional, since you could inject the v2 context, and be confident that it would provide definitions for all terms.

Currently, if you were to inject a v1 context, you have no reason to believe it would define all terms...

Which speaks to the un resolved problems associated with this current issue.

@TallTed
Copy link
Member

TallTed commented Dec 14, 2022

[@OR13] VCDM 1.1 and DID Core v1 both don't include an @vocab in the primary context.

Every week I see a new DID Method registered with terms undefined because of this.

Those terms will still be undefined. They'll just map to a URL that 404s or dereferences to an equally uninformative page instead of remaining a non-URL term. I do not see this as being much, if even any, improvement in the overall situation for these DID methods!

@dlongley
Copy link
Contributor

Well, for VCs, a default / auto-generated vocab URL could actually resolve to a page that says something like "This term is issuer-dependent. See the specific issuer's documentation for a definition of this term." That's not good for scalability and can result in a sort of "NASCAR problem" situation within digital wallets where they only support the most popular issuers vs. the most popular commonly shared vocabularies (issuer-independent), but I digress.

Now, doing the same for DIDs seems like it would be a little bit odd -- since I wouldn't expect the terms to be "DID-method-dependent" nor would I expect having them be "DID-controller-dependent" would be that helpful in terms of finding documentation. So it's perhaps not really comparable -- but we should focus on VCs over here anyway.

@Sakurann
Copy link
Contributor

Sakurann commented Feb 16, 2023

RESOLVED: The base media type for the VCDM is credential+ld+json. @context is required (MUST) in the base media type; other media types MAY choose to include @context. Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type. Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG.

@TallTed

This comment was marked as resolved.

@iherman
Copy link
Member

iherman commented Feb 17, 2023

The issue was discussed in a meeting on 2023-02-16

List of resolutions:

  • Resolution No. 1: The base media type for the VCDM is credential+ld+json. @context is required (MUST) in the base media type; other media types MAY choose to include @context. Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type. Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG..
View the transcript

3. @context optional or not (cont.).

See github issue vc-data-model#947.

Gabe Cohen: 1. The media type for the VCDM is credential+ld+json.
Gabe Cohen: 2. @context is required (MUST) in the base media type; other media types MAY choose to include @context.
Gabe Cohen: 3. You MUST be able to transform to the base media type from other representations.

Dmitri Zagidulin: -1 (2 & 3 are contradictory :) MAY include context means a MUST transform is not possible).

Orie Steele: -1.

Kristina Yasuda: POLL: 1. The base media type for the VCDM is credential+ld+json.

Manu Sporny: +1.

Dave Longley: +1.

Orie Steele: +1.

Christopher Allen: +1.

Will Abramson: +1.

Paul Dietrich: +1.

Phillip Long: +1.

Joe Andrieu: +1.

Shigeya Suzuki: +1.

David Waite: +1.

Ted Thibodeau Jr.: +1.

Michael Jones: 0 It depends upon what we mean by VCDM.

Andres Uribe: +0.5.

Brent Zundel: +1.

Phil Fariller: +1.

Andres Uribe: I think it's confusing to combine "credential" with VC; we have a pending conversation on how we want to relate the two..

Samuel Smith: 0.

Kristina Yasuda: POLL: 2. @context is required (MUST) in the base media type; other media types MAY choose to include @context.

Manu Sporny: +1.

Gabe Cohen: +1.

Dave Longley: +1.

Andres Uribe: +1.

Christopher Allen: +1.

Joe Andrieu: +1.

Orie Steele: +1.

Shigeya Suzuki: +1.

Will Abramson: +1.

Brent Zundel: +1.

David Waite: +1.

Phillip Long: +1.

Michael Jones: 0 because it's dependent upon the ambiguous statement in item 1. It's not clear what effect 1 would have on which specs..

Samuel Smith: +1.

Phil Fariller: +1.

Paul Dietrich: 0.

Ted Thibodeau Jr.: +1 IFF #3 passes.

Dmitri Zagidulin: -0 (seems suspect, I think conflicts with item 3. but not blocking.).

Dmitri Zagidulin: hey, still 0, it's fine.

Kevin Griffin: +1.

Kaliya Young: +1.

Kristina Yasuda: POLL: 3. You MUST be able to transform to the base media type from other representations.

Michael Jones: -1.

Manu Sporny: +1.

Andres Uribe: +1.

Joe Andrieu: +1.

Dave Longley: +1.

Gabe Cohen: +1.

Christopher Allen: -1.

Orie Steele: -1.

Samuel Smith: -1.

Phillip Long: +1.

Will Abramson: +1.

Paul Dietrich: -1.

kevingriffin: -1.

Michael Jones: Transformation is always possible but it's unnecessary for us to specify.

Shigeya Suzuki: +1.

Dmitri Zagidulin: -1 (lossless is critical. without that, 3 is meaningless).

Ted Thibodeau Jr.: I really want that lossless....

Christopher Allen: When I look at future of various SD and ZK proofs, I can't see MUST..

Dave Longley: (should be lossless ... but "VC birational equivalence" could possibly work depending on how we define it :) ).

Ted Thibodeau Jr.: -.8.

Phil Fariller: 0.

Gabe Cohen: nobody could agree to what "lossless" meant; needs to be clarified.

Joe Andrieu: If you can't transform to the VCDM, its out of scope for our current charter. =(.

Dmitri Zagidulin: dlongley - what is birational equivalence?.

Paul Dietrich: if we are allowing lossless transforms, its really arbitrary transforms..

Andres Uribe: FWIW, what I think lossless is: t ( inverse_t ( VC ) ) == VC.

Dave Longley: to answer dmitriz in the minutes: "where VCs are equal almost always but except for a few cases where you can't represent credential+ld+json in another representation, so you don't have to be able to get back from it".

Dave Longley: i think there may be some other distinctions we could draw to get to consensus (maybe?) ....

Dave Longley: there are a few different scenarios to consider:.

Dave Longley: 1. you start with media type A and you MUST be able to losslessly transform it to the base media type, but you never transform from the base media type to A..

Dave Longley: 2. you have media type B which you can always do lossless transformation in either direction (base media type => B => base media type).

Dave Longley: format A should be OK so long as there's no way to represent some credentials in format A ... but you can always go from format A to the base format..

Dave Longley: in other words, we can probably say that you don't need to have "round tripability", but it's vital that you can always go from format A to the base media type -- provided that you started with format A, i.e., this isn't about a lossy transformation, but a formation that only goes in one direction, you can't go from the base media type to format A, you can only go from format A => base media type..

Dmitri Zagidulin: @dlongley - I'm not sure 1 & 2 will satisfy the "context must be optional" camp :).

Dave Longley: two types of valid formats: one that is created natively and outputs the base media type (it does not ever convert from the base media type, it only outputs it) ....

Dave Longley: and one that can translate to / from losslessly..

Dave Longley: this is essentially how JWTs work today... you can't strip off the signature and then get it back, it's a one way process.

Kristina Yasuda: "3. You MUST be able to transform to the base media type from other representations".

Manu Sporny: samsmith and I talking in break. I think intention on third item is.
… need to be able to go losslessly back and forth between core data model to some other representation.
… this is a guiding principle.
… may be some cases were it is not possible to do losslessly.
… the idea is most of the time - almost all of the time - you can get back to the core DM.
… best effort lossless.
… 99.99%.
… exceptions can be handled on case by case.

Dave Longley: "if it is possible to do lossless transformation, it MUST be possible".

Dave Longley: "if it is possible to do lossless transformation, it MUST be done".

Manu Sporny: We very strongly encourage you to support round trip lossless conversion.
… There are some cases when additional properties added to some other representation. But that is a separate case.

Dave Longley: v similar to what I meant with birational equivalence.
… some exceptions, but these are outliers.
… can think of these other representations as falling into two categories.
… one that can losslessly transform.
… another that doesn't start in the core VM, but can always output the core VCDM if required.

Christopher Allen: three points, the first is to be careful where we use MUST in spec.
… governments are mandating use of standards.
… downstream risk where people can say we aren't conforming with standards cause didn't meet a MUST.
… second point, a credential should be able to transform losslessly when start with the core model..
… but a lot less confident this will be possible with proofs.
… we should be starting to talk about proofs.
… this will be harder for round trip conversion.
… We don't want to exclude folks from the market, because they don't tightly conform to the MUSTs.
… diff between these transforms in a pre SD and pre proofs is important.

Kristina Yasuda: forgot to put into the chat ealier, sorry, EUDIW ARF: https://digital-strategy.ec.europa.eu/en/library/european-digital-identity-architecture-and-reference-framework-outline.

Samuel Smith: clarifying, if I have something in ACDC that came over the wire that didn't have a context in it.
… someone who recieves this should be able to add @context to get to the core data model.
… I dont want to be liable for sending the @context cause I have security concerns.
… I always vote for the SHOULD with lossless conversion.
… need to be careful with "language lawyers", esp when we have best effort to have interop in our soln.
… this might open the door for lazy/malicious people to wiggle around this.
… if we have SHOULD some people will use this imperfectly.

Kaliya Young: can you pass the interop test?.

Samuel Smith: lossless should be defined loosely.

Orie Steele: I think this thread on transformation comparison has multiple pathways to get from were they are.
… some might work, some might have traps or time challenges.
… if we can agree to enough statements about the representations we protect.
… we should be careful when we say you need to end with JSON-LD.
… data integrity does not protect JSON-LD, it protects the NQUADs tranformation of that.
… We can say you can try with lossless transformation, but there is always going to be cases where this fails. It is a security risk..
… Every context you have changes the underlying graph. Changes whether we consider some opaque version to be equivalent to the underlying VCDM.
… Are we comparing to JSON-LD with :context. Are we comparing to nquads produced from jsonld with one @context or to nquads with an unbounded number of contexts in it.

Michael Jones: key learning from 1.1 was that mappings and transformations was a bad idea.
… orie nods.
… 2.0 breakthrough enables VC JWTs to be treated as their own objects with no mappings/transformatons required.

Dave Longley: IMO, that key learning is too broadly stated.

Christopher Allen: I'm reasonably certain that Sam's ACDC and my Gordian triples could work, because context is not required to deministically order them….

Michael Jones: fine with people using transformations.
… that is a individual deployment choice. Not something we should specify.

Christopher Allen: but that is because we don't need context to order..

Joe Andrieu: +1 to Orie framing of data integrity.
… dont think roundtrip lossless is the right framining.

Dave Longley: +1 to JoeAndrieu.

Joe Andrieu: important that whatever you have, you can get to the VCDM.

Shigeya Suzuki: +1 to Joe.

Manu Sporny: +1.

Joe Andrieu: You can't recreate the JSON-LD from the nquads.
… if I can take a VC-JWT and get back to a VCDM then I am happy.

Dave Longley: +1 to: if you start with format X -- you must be able to output credential+ld+json.

Christopher Allen: It is hard to do this with context and proof, but the non-V part credential could be the same..

Will Abramson: * discussion about proposal language.

Christopher Allen: Are you saying the hashes are the same for both?.

Phillip Long: is the base media type credential+ld+json?.

Dave Longley: Phil_ASU: ^right now that is true.

Phillip Long: Thanks Dave.

Phillip Long: Is that being written somewhere?.

Brian Campbell: https://docs.google.com/presentation/d/128DHWSzVxPgAhB0mq-h23_iATnbVeA4Y-JhNLjpcXJE/edit#slide=id.g1f29416984d_38_0.

Dmitri Zagidulin: what does the exotic MUST/MAY directive mean? :).

Phillip Long: +1 to Dmitri's question - what is MUST/MAY mean?.

Dave Longley: i'm guessing we're going to run two different proposals on that ... maybe.

Dave Longley: and perhaps don't call it a VC ... say it encodes a VC :).

Christopher Allen: I know that I should probably find a back_channel with Sam. I think ACDC<->Gordian can probably do this with each other, but we can't to JSON-LD because of context and proofs.

Paul Dietrich: writing must/may language but it is not for the spec. We are just agreeing on what we want to do as a group.
… this is meaningless as spec language.

Kristina Yasuda: this is not a spec language.

Paul Dietrich: if we agree on that, the workgroup has to do this.

Christopher Allen: But I think we could probably have a way to have to have some level of conformance that we could do with JSON-LD..

Paul Dietrich: the VCWG will define this transform.
… as a group we are agreeing that as a group we will define a transform.
… for every media type.

Ted Thibodeau Jr.: "Other serializations identified by media types defined by the VCWG" -> "Serializations defined by the VCWG in other media types" ?.

Kristina Yasuda: this proposal is about how strong the language in a PR must mandate this proposal.
… sticking with MUST in the proposal.

Manu Sporny: I dont think we are talking about nquads equivalence.
… I am trying to attack model the language.
… if I was evil, I could take a traceability VC, go into my format, strip out all the other contexts and transform back into the VCDM with the original context.

David Chadwick: 3. is necessary but not sufficient.

Manu Sporny: point being that I could strip out the contexts without anyone knowning.
… question is can you modify the context to be anything you want it to be.
… therefore changing the semantics.

Michael Prorock: are any of the people objecting to this planning on implementing non-base versions of the data model.

Dave Longley: you either have a representation that must be able to do round trip. Or you must be able to tranform one way from another serialization into the base media type.
… important that you don't do it halfway. Either do roundtrip all the way. Or you just define one way.
… from another media type to the base type.

Michael Prorock: comfortable with proposal text.
… How many of those objecting are actually planning to use these serialization formats.
… i expect to be forced to accept any of these if they get popular as a wallet implementer.
… to answer Mike Prorock directly ^.

Michael Jones: not clear to me what effect this language is intending to have on us.
… is it attempting to compel us to verify such transformations, or define these transformations.

Christopher Allen: gordian is deterministic cbor, so serialization is clearly different. It is sorted by the hash of the content..

Michael Jones: or does it have no effect.
… want this to be clarified before running proposal.

Kristina Yasuda: what text would help that.

Michael Jones: willing to say, this working group will not define transformations between serializations.

Samuel Smith: q.

Dave Longley: saying formats defined in the group MUST support transforms and then saying the WG won't define them is a big problem :).

Dmitri Zagidulin: was selfissued original question "are we saying that the serializations must be able to be transformed in general, or are we saying we MUST transform every instance"?.

David Chadwick: I think that 3 in proposal is necessary but not sufficient.
… what happens if you start with VCDM and it gets transferred into media type x via some intermediate wallet.

Orie Steele: responding to DavidC, dlongley has asked this. You either define a safe round trip. Or you admit that this is a one way transformation to the data model.

Dave Longley: +1 to Orie.

Orie Steele: responding to manu, whether context preservation is part of this scenario depends on the paths outlined by dlongley.
… for round trip, context is preserved.
… for one way mapping, context preservaton not a requirement.

Dave Longley: +1 to Orie.

Will Abramson: *kristina updating the proposal text.

Dave Longley: other representations MUST be either uni-directional or bi-directional.

Dmitri Zagidulin: @dlongley - but that's all the options? like, what else is there besides uni-directional or bi-directional?.

Dave Longley: dmitriz: no other options! :).

Dmitri Zagidulin: @dlongley - ok but that's reading as a tautology. you're saying it MUST be either A or !A..

Dmitri Zagidulin: @dlongley - that can just be simplified to "it can be whatver".

Dave Longley: dmitriz: oh, you can't make something that's partially bi-directional.

Dave Longley: dmitriz: that accepts some credentials in the base media type and not others (lossy).

Dmitri Zagidulin: @dlongley - isn't partially bi-directional just mean uni-directional?.

Dave Longley: dmitriz: no, it's more than uni-directional..

Dmitri Zagidulin: @dlongley - this is a subtlety that might be eluding me...

Dave Longley: dmitriz: the key is it's all or nothing, it must be lossless if it's got any bidirectional feature at all.

Joe Andrieu: to manu's threat analysis stuff. This is not about data round tripping is not applicable.
… these media types are integrity mechanisms.
… not going to be able to recreate the signed thing.
… maybe I misunderstood.
… I also don't like that we are not doing transformation rules, unless we state that transformability must be demonstrated.
… like cryptosuites. We are not definining them, but you have to have them.
… maybe the WG doesnt need to come up with those rules.

Manu Sporny: making a meta comment, people are getting frustrated.

Kaliya Young: <3.

Manu Sporny: headed in a good direction, asking for calm.
… the more we add to this, the harder it is to agree on.

Samuel Smith: q.

Manu Sporny: lets all chill.

Dave Longley: progress is being made!.

Kristina Yasuda: don't expect to take this for a formal proposal.

Michael Prorock: instead of running a poll, can we ask anyone listening if there is suggested changes to the proposal.

Christopher Allen: I would really like to hear from Sam.

Christopher Allen: Sam first?.

Samuel Smith: comment is we should do the poll, whoever objects lets focus on their objection.

Michael Prorock: +1 TallTed - really want to hear his clarifications since he is very good at language.

Michael Prorock: much mo better than i is.

Orie Steele: sometimes you have to write a lot to get it down to a clean sentence. This process is natural.
… regarding the context interaction and round tripping behaviour, not sure how much we want to go into that here today.
… need to be aware of JSON-LD processors and how they will handle this.
… other thing to say is, this is about getting alignment here as a WG. Then we need to get consensus on a PR.
… dont worry too much about this proposal text.
… PR is where this progresses.

Michael Prorock: can we add a 4. that this is for group consensus to inform the specification?.

Michael Prorock: or to inform future PRs.

Dave Longley: shakey on 3c, hard to make out the cross talk.
… need to define this transformation rules to get to compliance.
… may need tweaking as we go.

Ted Thibodeau Jr.: suggesting changes to number 3 of the proposal.

Michael Prorock: "Other verifiable credential serializations".

Michael Prorock: +1 brent.

Brent Zundel: point of order, this text serves as normative guidance for our group.

Dmitri Zagidulin: who is 'me'? :).

Manu Sporny: wants to run the poll.

Joe Andrieu: think define instead of identify in the text.
… want to answer dlongley, these transformations must be defined. But we don;t have to do it..

Dave Longley: +1 to Joe.

Joe Andrieu: They have to be demonstratable.

Phil Fariller: q.

Kristina Yasuda: POLL: Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type..

Michael Jones: -1 Transformations are a demonstrated bad idea.

Michael Prorock: +1.

Dave Longley: +1.

Will Abramson: +1.

Orie Steele: +1.

Shigeya Suzuki: +1.

Joe Andrieu: +1.

David Chadwick: +1.

Samuel Smith: +1.

Kristina Yasuda: poll is 3a-c.

Phil Fariller: +1.

Ted Thibodeau Jr.: +1.

Brent Zundel: +1.

Phillip Long: +1.

Christopher Allen: +0.

clownface: +0.5 (because I think we're going to be defining some rules, folks).

kevingriffin: +1.

David Chadwick: +1.

David Waite: +0 (concerned about able to be transformed).

Dmitri Zagidulin: +0 (I'm stunned at this turn of events, but certainly won't hold it back).

Christopher Allen: I moved my vote to 0, because of samsmith's +1.
… we have similar concerns about context security issues and serialization.
… my gut is, this is going to end up on me and samsmith to puzzle this out.
… don't know of anyone else trying to do this in another graph world.

Ted Thibodeau Jr.: waves I'm working on RDF-star..

Christopher Allen: feel there are some edges here due to the @context stuff.
… Think these could be resolved, just need to figure it out.

Kristina Yasuda: Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG..

Kristina Yasuda: posted 1-c.

Michael Jones: my point is that its always possible to define transformation, but these are mostly not useful.
… without making it clear what we are trying to achieve, I don't think we should create more work for ourselves.
… want this to be substantive.
… I am -1 to 3a-c, it doesn;t define meaningful work for us to do that is useful.

Kristina Yasuda: selfissued_ what we are trying to achieve is very clear.
… we are trying to achieve serializations in other media types.

Samuel Smith: to ChristopherA_ I voted +1 because as of today, this is the best compromise that we are going to see.
… probably going to propose to recharter WG to include other graph models.
… not ready to propose that today.

Christopher Allen: +1 Yes! Was talking to author of Blake3 on zk-hash tree that does that..

Samuel Smith: +1 chris absolutely.

Dmitri Zagidulin: asking clarification Q - is it must be able to be transformed in general, or for every instance.

Dave Longley: every instance (which is what i consider 'in general' to mean) :).

Dmitri Zagidulin: by 'in general' I meant 'in theory'.

David Waite: speaking to my +0, the transformation is about what a media type does to express itself interms of the vcdm base media type. I am supportive of this.

Dmitri Zagidulin: because I suspect different parties are reading this in completely opposite ways.

David Waite: we can demonstrate that those types of transformation are possible.

Dmitri Zagidulin: ok...

David Waite: share concerns about defining a programatic way of doing these transformation.

Christopher Allen: Thanks TallTed.

Ted Thibodeau Jr.: note for ChristopherA_ I am involved in the RDF-STAR work. Other graphs are represented here.

Michael Prorock: speaking to the value of core basic transformation.
… about intersecting VC data with other large data sets.

Michael Jones: if we are looking at all of three, I strongly disagree with transformation rules must be defined.
… fine for people to define them, but I don't want to put that burden on this WG.

Kristina Yasuda: if they are going to call themselves VC they will have to.
… for instance is an iso mdoc going to define there transformation rules.

David Chadwick: Can we put the slide back in Zoom please.

Christopher Allen: quitting and returning fixed audio again..

Kristina Yasuda: slides: https://docs.google.com/presentation/d/128DHWSzVxPgAhB0mq-h23_iATnbVeA4Y-JhNLjpcXJE/edit#slide=id.g1f29416984d_38_0.

Orie Steele: want to say, this gives anyone who is willing to do the time an opportunity to make a compact opaque representation of a VC.
… if they are skilled it might be great, if not it could be sad.
… this relates to what is called a VC.
… gives people tools a guidance for how to create valid representations of VCs.

Phil Fariller: wanted to emphasise what Orie said. Gives us the opportunity to do that. It is way we came to this WG.

Phillip Long: voice isn't audible.

Phillip Long: No it was the last mumbling.

Christopher Allen: I can hear except when you speak at same time.

Brent Zundel: running the proposal on the slide.

Christopher Allen: What word(s) changed?.

Samuel Smith: q.

Christopher Allen: I see that, but what is diff from last?.

Christopher Allen: ok..

Proposed resolution: The base media type for the VCDM is credential+ld+json. @context is required (MUST) in the base media type; other media types MAY choose to include @context. Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type. Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG.. (Brent Zundel)

Manu Sporny: +0.75 (this is so much more difficult than just preserving @context).

Joe Andrieu: +1.

Brent Zundel: +1.

Orie Steele: +1.

Michael Prorock: +1.

Phil Fariller: +1.

Ted Thibodeau Jr.: +1.

David Chadwick: +1.

Christopher Allen: I got forced out of irc and had to rely..

Dmitri Zagidulin: +1 (although, mythical Cassandra-like, I highly suspect people are interpreting item 3 in diametrically opposite manners)..

Will Abramson: +1.

Shigeya Suzuki: +1.

Dave Longley: +1.

Samuel Smith: +1.

Kevin Dean: +1.

Christopher Allen: +.75.

Phillip Long: +1.

David Waite: +0.5.

Michael Jones: -1 This imposes unnecessary work for VC-JWT, since it would force us to define (and argue about) transformation rules.

Kaliya Young: +1.

Dmitri Zagidulin: @selfissued_ -- note that it says 'rules do not need to be defined by this WG'.

Dave Longley: dmitriz: while true, if the WG defines the serialization, it must also define the rules ... if we just point to some other spec that defines it, that's fine, provided that it also defines the rules.

Kristina Yasuda: +1 from gabe.

Christopher Allen: I do worry 3) will be like DID:IPSF, only one person will do it and thus no inclusion..

Dmitri Zagidulin: @dlongley - that's not what that language says, exactly :).

Brent Zundel: chair asks if selfissued_ would formally object if this is resolved over his -1.

Michael Jones: I would not FO, and is greatful for peoples work today.

Resolution #1: The base media type for the VCDM is credential+ld+json. @context is required (MUST) in the base media type; other media types MAY choose to include @context. Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type. Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG..

Kaliya Young: yeah!.

Dave Longley: can we close that huge issue? :).


@iherman
Copy link
Member

iherman commented Feb 17, 2023

The issue was discussed in a meeting on 2023-02-16

  • no resolutions were taken
View the transcript

1. @context optional or not.

See github issue vc-data-model#947.

Ivan Herman: slide set starting at https://docs.google.com/presentation/d/128DHWSzVxPgAhB0mq-h23_iATnbVeA4Y-JhNLjpcXJE/edit#slide=id.g208ba739a3c_1_437.

Gabe Cohen: this should be a friendly conversation.
… 30+ participants and 127 days, and 290 comments!.
… is the VCDM a JSON-LD data model? if yes keep @context otherwise make it optional..
… second question is what type of interop are we supporting?.
… last question does the future of VCs look brighter if we compromise?.
… hard to summarize, we've had special topic calls and months of discussion. There have been a few concrete proposals which we'll walk through..
… on slides are some arguments for removing context, we don't want to mandate interop but rather enable it. JSONLD has a lot of footguns and we should provide a way to not do that..
… a lot of the market has moved to non-ld credentials and we should recognize that, and lets think of other representations..
… arguments for keeping status quo. not ideal for inteorp, well need registries, versioning is an important thing if we make @context optional. @vocab being in the base context means you can just ignore the context property.
… there is a large burden on implementers and verifiers, fewer options make it easier to adopt. extensibility is tricky.

Michael Prorock: noting from yesterday, we discussed that vc jwt-s are a different thing, we've had this notion of a compact credential, where it is still a vc that has an implied context that is identified via the media type..
… the interesting case is going to the compact form from the non-compact one, and is that desirable.
… this was implicit in the vc jwt discussion, with a fully expanded model..
… the number 1 potential problem is the versioning problem, if we think we have years between adjusting the core data model terms, versioning is less of a problem..
… we could potentially have a v-code or similar, or vc.v for version that has a string that gives programmatic rules to how to handle the versioning problem should this be an issue past v2.
… not sure we need to solve in v2 but we might have it after v2.

Brent Zundel: the session lead has requested to keep it to pros/cons.

Kristina Yasuda: suggest to keep queue till the end.

Gabe Cohen: first possible solution adding @vocab to @context in v2. already merged. lowers the barrier to interop, you basically have a "default namespace". context isnt optional but it makes it easy for you to just pretend.

Orie Steele: one of the things that is helpful is to make the proposals clear before picking a winner. media types help clarify that. some of the media types have ld+json in them with the assumption that context is mandatory. some don't have them, so the ld specific syntax would not be required.
… it could have some additional rules and constraints for processing.

Gabe Cohen: the media type would then allow you to have/not have context even if the core model requires it.

Dave Longley: important to note that every new media type further splits the ecosystem by requiring another item software providers for every party must implement (issuer, verifier, holder), so dragons there..

Gabe Cohen: next proposal is layering, if the semantic layer is present then you have @context if it doesn't it wouldnt be required.

Samuel Smith: a big part of our proofs conversation is about the authn layer. a JWT or ACDC would be at the authn layer. this allows people to have authz or authn without impinging on the other layers..
… this means we don't have to specify in this data model how to construct the payload. the entire idea behind holder binding is sometimes things mean the same things and sometimes they don't.

Orie Steele: For the record, here is an example of a versioned media type: https://www.iana.org/assignments/media-types/application/vnd.cncf.helm.chart.content.v1.tar+gzip.

Orie Steele: Here is another example of a versioned media type: https://www.iana.org/assignments/media-types/application/vnd.ims.lti.v2.toolsettings.simple+json.

Samuel Smith: authenticator proofing would be in the authentication layer and semantic proofing would be in the semantic layer, separating these concerns allow us to innovate as we would now support more use cases atleast on the auth-n layer.
… we would then have hard choices on the semantic layer, but that gives us the trade off: wide-adoption vs narrow adoption with greater interop. and i don't think we can get wider adoption wihtout separating the layers.

Dave Longley: i'm hearing people say "there is more than one concept of interop" ... and "interop goes up when we add more ways to do things" ... my "concept of interop" says just the opposite ... the more things every one must implement the less interop..

Gabe Cohen: last option is transformation option, transform and get dressed for the right occasion.
… if we can't agree to any of these 4 options i believe we will end up with FO and in the pit of death.

Gabe Cohen: lets just pick one or come up with something else..

Kristina Yasuda: going down queue please argue for option you prefer, to find something concrete. lets try not to re-run the old comments.

Shigeya Suzuki: How the translation option handles proof?.

Michael Prorock: also SHOULD vs MUST with carve out for cases in another WG that is seeing high levels of adoption https://www.w3.org/TR/activitypub/#obj.

Andres Uribe: kristina nvm I was just remembering the mission of the WG: "The mission of the Verifiable Credentials Working Group is to make expressing, exchanging, and verifying credentials easier and more secure on the web".

Christopher Allen: Thanks everyone. im in a future proofing mode, these standards take a long time to ratify etc, i'm looking at a number of different emerging areas in security. my biggest issue is the layers problem..
… I agree with Sam there are real issues with the current proposals, that aren't future proofed against a variety of future auth-n methods, looking at things like escrow encryption or access to encrypted data..
… looking at herd privacy concerns, for e.g. harvard issues a single credential for all graduates of a year this allows for herd privacy etc..
… also looking at future graph models, JSON-ld really focuses on node graphs, I see some real merit to edge graphs. I think some of these are hard to do in the working group timeline. I would love to do this work on layering but I doubt it won't be done in this timeframe..

Ivan Herman: +1 to ChristopherA on time constraints.

Michael Prorock: +1 christopher - also some items may not be in scope and would possibly need a re-charter.

Orie Steele: +1 to focusing on the options we have documented, and if they can work..

Christopher Allen: I would vote for 3, but I think we don't have the time for it so I would vote for option 2 as a way to read profiles. so with the profile that is VCLD we can work to make it as locked down as possible and allow people who don't want to use it not to.

Christopher Allen: I've been doing a lot with CBOR.

Kevin Griffin: going back to pros slide, one that is missing is XML. one of the things we have found missing is the XBRL standards group, and they have expressed desire to express vcs in that format.

Dmitri Zagidulin: I'm not seeing how XML is a 'pro' column item...

Orie Steele: no surprise here im a strong supporter of option 2. there is a world where we only define media types in the core data model and option 2 gives us that..

Michael Prorock: big +1 orie.

Orie Steele: the reason I queued is because we keep mentioning verifiable credential but its a non-normative description. I like the idea of media types and concrete description of media types and their restrictions.

Andres Uribe: massive +1 as well.

Phil Fariller: +1 on versioning in the content-type.

Dmitri Zagidulin: @Orie - do you mind explaining Option 2? What does media type do to context?.

Orie Steele: speaking to versioning consideration is media types have been versioned before, and we can version at that layer, and it can have constraints at the content it is referring to. digging in to the content to find version is something im opposed to..

Michael Prorock: +! (can i have a stronger ++1) to orie.

Phillip Long: +1 to explaining the relationship between media types and it's impact on context.

Orie Steele: option 3 im super against. layering is a consideration for media types. if we decide as a group that we will do layering across media types, I think option 3 might be a path forward, but if we try to do layering in one media type it will be problematic.

Dave Longley: -1 to thinking media types "solve the problem" ... because they don't help with the interop issue, the more media types there are, the less interop; media types can only help so much, mixing with option 4 would help.

Orie Steele: option 4 transformations is a subset of media types. you start with 1 media type transform to a second one, which is a valid approach. It has a problem with the definition problem..

Kristina Yasuda: observing that option 4 does not have to happen after option 3?.

Orie Steele: CBOR-LD is a transport format, it is a transformation from a JSON-LD VC to a CBOR-LD "VC".

Markus Sabadello: Option 4 Transformation = new name for Abstract Data Model :).

Orie Steele: I see options 3/4 as a subset of option 2 and option 1 is insufficient.

Dmitri Zagidulin: can somebody explain option 2?.

Manu Sporny: I don't think option 2 solves the problem. We are talking about an outer format that specifies the media type and an inner format. those two will get separated from each other. the inner document will not have versioning information or context which is the biggest issue with option 2..
… option 2 splits the two things apart and they cannot be reconstituted together. Option 2 also makes it such that we agree on non-interop, one subset will go do things without @context, and another groups will do it with @context.

Dave Longley: +1 that option 2 as a general "solution" is the opposite of a solution, it just creates divergence..

Manu Sporny: we are going to see divergence and we have agreed that we are making it less interop as a group will be going one way and another group going the other..

Phillip Long: +1 to the importance of preserving decentralized extension abilities. That's key in ed/training/workforce dev areas..

Dave Longley: +1 option 2 is capitulation... it is "give up on interop and everyone go to your own corner".

Manu Sporny: i agree that option 4 is hand wavy. There is a subset that we have no idea how to solve a number of transformations, and I don't know how to do those. if we do option 4 we will need a registry and I'm concerned about option 4..
… option 3 takes too much time, but we already have a layered solution. I'm not hearing is what technical reason why option 1 does not work for you.
… what is the tech burden on your interop.
… option 1 is a compromise and it I believe addresses all the tech concerns that were raised..

Joe Andrieu: the primary value of @context is the decentralized disambiguation i dont care about the graph model n-quads etc. All i care about is the decentralized disambiguation..

Orie Steele: We solved for this in did core, with by using media types..

Joe Andrieu: not a new debate, we had this debate in DID WG. I don't understand these two camps, JSON-LD is JSON, I don't understand why this one property is called out other than for commercial/political reason..
… I think option 1 is a sufficient compromise. but I haven't yet seen compromise from the pure json crowd of how to do decentralized disambiguation..

Orie Steele: +1 Joe, vocab has been an improvement.. but imo, it was fixing a bug, not a compromise on a feature..

Joe Andrieu: I want to respond to mike's comment about version code, you recreated context..

Michael Prorock: technical reason, as stated before, is prevention of reuse of terms/data and deviation/conflict from registered claims - cty would be a MUST so not being able to know what an object is when you get it is a non-argument.

mike: in a shorter way.

Joe Andrieu: decentralized disambiguation allows any community in the world to define the vocab that matters to them and allows them to use it as an equal peer. similar to how any css on a page is treated the same.
… people processing VCs should have a first class mechanism to process semantics around VCs.
… responding to lets interop with credentials that are worth interoping with. but that is the top down authoritarian view, we should not be the org that judges which vocabulary is worth anything..

Gabe Cohen: my understanding of that is that each implementer should say which credentials they interop with..

Dmitri Zagidulin: @gabe - it's also up to implementers whether to conform to the VC spec, too. that's a valid choice.

Phillip Long: +1 to decentralized communities defining their own vocabs and supporting the communities they serve..

Dave Longley: +1 to Joe.

Orie Steele: We are chartered to make breaking changes... we can change the normative requirements..

Manu Sporny: +1 Joe.

Joe Andrieu: pushing back on framing that VCs are ambigous, this group formally defined VCs. you can in other context other than W3C but in the W3C we formally defined a consensus driven spec about what VCs are.

Shigeya Suzuki: +1 Joe.

Dave Longley: +1 to the value of shared, decentralized vocabs.

Dmitri Zagidulin: Does Option 2 explicitly mean - "@context is optional for some media types"?.

Phil Fariller: I agree with option 2/4, but with an eye towards approaching option 3 in the long view. One of the reasons I like it is because the VC JWT presentation opened the door to a VC ACDC.

Orie Steele: You will need a media type for ACDCs, if you want browsers and software to handle them..

Phil Fariller: +1 Orie.

Michael Prorock: dropping form q since i must hop on a call - poll wise, i intend support JWTs, i am happy with option 2, and would contribute work towards 4 in conjunction with option 2 to promote semantic mapping to the VCDM.

Markus Sabadello: to me option 2 is the really big tent where VCs are a high level generic term that can mean anything, wondering if I don't understand it correctly. If i look at the VC JWT v2 violates the core VCDM in certain ways, it does not have an @context and no issuer/credential subject and don't know how that fits in together. the freedom in option 2 leads to very little technical similarity..
… I think option 2 is problematic..

Paul Dietrich GS: to weigh in from GS1 world, we're here because we want trust about the product to move with the data, and unless it travels over a secure network it is hard to trust the data. if the package size is wrong and i'm doing shelf planning then i'll get things wrong.
… if they will share that data through w3c VC, I see option 2 is that every retailer has to define their own version..

Dave Longley: +1 to Paul.

Paul Dietrich GS: verifiers will need to implement it all, so i see option 2 as problematic in that sense. I don't know enough at option 4 is that it is not easy. I don't know whats wrong with option 1..
… when you see the product weight on a brand on a retailers website and I see option 1 is not trusted because we haven't found a way to sign it. I don't know enough about option 2/3..

Orie Steele: https://www.w3.org/TR/json-ld11/#interpreting-json-as-json-ld.

Markus Sabadello: I asked ChatGPT, here is our answer: https://pasteboard.co/N9ODQkg7nS6r.png.

Orie Steele: Agree JSON-LD is in market, disagree that its the only media type in market..

Kaliya Young: I just joined an advisory group in higher education and the call this week we're trying to align the vocabs of a million credentials and 60,0000 institutions. and its all going to align because we have RDF and JSON-LD, and the people who are saying that format doesn't matter feel out of touch. because its in market for atleast higher ed, so i wanted to name that, and wanted to know that reality and wanted to add support to Joe'[CUT].
… I support option 1.

Gabe Cohen: No one is saying JSONLD is not useful in many cases but it si jsut not useful in some, and in those cases it shouldn't be used. I think you can imagine an embedded proof credential that is not a JWT so i think option 4 tries to address that..

Michael Jones: Some reactions to things peoples have said: to manu's point about separating media types from content, if the content type is in the cty field it is part of the signed data, so unless you will pass the credential without it being verifiable. it is always part of the secured content.
… decentralized disambiguation is not always necessary. I support your goal but I'm saying its not always necessary is because from the real world application context you will know what kind of things you are willing to receive..

Dmitri Zagidulin: @selfissued - but for those narrow real-world use cases, one doesn't need to conform to any spec, either..

Michael Jones: these are usually specified in the application context, if you will receive a covid credential, there are a few formats that are innumerable, but some jurisdictions you will specify which ones you are willing to accept.
… what you need is to read the specification to write the code to use it, which might be a binary blob and only when you read the spec you will know that it is a picture of a person, you will need to read the spec to understand it.
… i understand the value of runtime typing. using the specs that define application data, that does not go away if theres a context or not which is why im repeating the point that real world application context tells you what you will receive.
… trying to answer manu's question about what is the requirement that is met by making @context optional. it is listening to developers. some of them support it and some of them find it unnecessary. there are many thigns that are VCs that are not spec compliant that are deployed.

Manu Sporny: "Developers want X" is not a technical requirement -- what problem are they trying to solve and how does @context prevent them from achieving their technical goals?.

Michael Jones: developers have voted with their feet that they consider linked data a tax, and many of them have voted to not pay it if it is not necessary..
… yes we have defined the requirements on jwt vc v2. so i support option 2.

Orie Steele: the jsonld spec uses media types to describe its normative requirements, thats how you know it has to have a context. in the VC DM 1.1 spec it says the @context is a member of the VC's it does not have a media type.
… in 2.0 vc+ld+json will bring these requirements and option 1 implicitly admits media types to explain at least 1 media type. the question is can VCs only be expressed as LD+json.
… if that is true the core data model should explicitely say that. if it is false the data model can only admit media types that accept it with extensions being done by the working group. in my view option 2 is consistent with the reality that different content on the internet must have different media types.

Orie Steele: it is wrong in my opinion to mandate that interop can only be done on media types that are ld+json media types.

David Longley: mine is a combination of options. first i want to speak to the issues with option 2, creating many media types increases the problem. having too many formats is the problem, identifying them better doesnt solve it it highlights it. I don't think we should have many small islands with different content. the three party model.

Orie Steele: I don't consider the interoperability supported by media type registries a failure, I consider it a success, and JSON-LD relies on it, search "ld+json": https://www.iana.org/assignments/media-types/media-types.xhtml.

David Longley: creates an open model that allows three parties that allow you to create and consume vcs in an open world model. there are many solutions for a closed world model, VCs were created for an open world model..
… the more people create and reuse shared vocab the better things will be and @context is the mechanism to make it happen..
… option 1 makes it easier for developers to create context. option 2 is great if it is a small number of media types but is not generalized solution.
… option 3 has parts that can be pulled in, layers are great but every different type of tech used at different layers can be harmful to interop. option 4 if we combine with option 2 with limited media types can be helpful.
… as we can always translate to a common format, allows different software that only needs one format can use just that one format.

Christopher Allen: there are other ways to convey context than @context..

Christopher Allen: @context is RDF/JSON-LD specific way of conveying semantic context..

Dmitri Zagidulin: -1, the options are not sufficiently well defined.

Ted Thibodeau Jr.: +1 dmitriz.

Kaliya Young: Option 1.

Markus Sabadello: Option 4++ would be Abstract Data Model with deterministic transformation between all media types.

Brent Zundel: i think that although there is some overlap with each of these options suggesting there is enough clarity for you to say I like 1 and 2.

Dave Longley: option 2, to me, says "create as many formats as you want, just make a new media type".

Dmitri Zagidulin: option two says context is optional for some media types?.

Orie Steele: that is already true for some media types.

Christopher Allen: My poll answer: Options 1 or 2 are acceptable compromizes, I wish for 3 but we should be separate track..

Dave Longley: option 2 is "do whatever you want as long as you tag it with an identifier".

Kristina Yasuda: please put your preference.

Paul Dietrich: Option 1.

Michael Jones: 2.

Dave Longley: Option 1.

Orie Steele: 2.

Joe Andrieu: 1.

Manu Sporny: 1.

Gabe Cohen: 4.

David Waite: Option 2, 4.

Dmitri Zagidulin: 1.

Mahmoud Alkhraishi: 2,4.

Will Abramson: 1.

Phillip Long: Option 1.

Ivan Herman: 1.

Oliver Terbu: 1, 2, 4.

Brent Zundel: 1,2,4.

Dmitri Zagidulin: 1,4 (the two are equivalent).

Samuel Smith: 2,4.

Christopher Allen: 1, 2.

Andres Uribe: 4,2,1.

Brian Campbell: 2.

Kevin Griffin: 2,4.

Shigeya Suzuki: 2, 4 (4 only if clarification on proof. I don't understand about proof).

Phil Fariller: Option 2/4 with eventual consideration of 3.

Dmitri Zagidulin: 3 is just a tautology -- layering's good, so what.

Markus Sabadello: 1, 2, 3, 4.

Ted Thibodeau Jr.: no on 3 ... yes on mostly 1 with 4 and a small dose of 2.

Christopher Allen: My proposal for option 3 is that we admit it should be done, but in in immediate..

Ivan Herman: q.

Christopher Allen: Sam and I (and others) need ability to work on 3.

Kevin Griffin: +1 ChrisopherA.

Kristina Yasuda: looking at the poll can you gray out option 3, as there is interest to explore in the future but not right now..

Christopher Allen: (and don't sabotage I it ;-) ).

Kaliya Young: Option 3 sound like it could fit well in a V3.

Ted Thibodeau Jr.: 3 requires application of the others, so a vote for 3 is a vote for the others, imo.

Samuel Smith: +1 to don't sabotage it..

Joe Andrieu: i think these things are interestin gto consider, the question is, is context optional or not..

Dmitri Zagidulin: option 4 makes it so that it is required but mitigates some of the costs.

Dave Longley: +1 to dmitri's description.

Kristina Yasuda: i think people are trying to elevate it beyond making it optional, its one property..
… we now know that option 3 is not achievalbe in this charter.

Dmitri Zagidulin: option 1 and 4 are exactly the same.

Brent Zundel: if context is optional what can you do that you cannot make before.

Kristina Yasuda: lets go down the queue for 10 mins before the break..

Kristina Yasuda: oh, option 2, 4 for mprorock.

Dmitri Zagidulin: i feel the options are somewhat misleading because 1/4 are equivalent. options 1 and four have no loss of info between converting between media types. it is saying when converting from one media type to another we will lose information.

Kristina Yasuda: he put in the chat earlier.

Orie Steele: thats not correct, you don't loose information when a server sends you text/html..

Dmitri Zagidulin: @Orie - should the various representations of VC be losslessly transformable between?.

David Waite: someone asked what are the limitations of having @context, we had people want to do XML, there is no XML-LD. CBOR-LD you can say a 4 byte context without transformation is not a VC because it does not have a literal @context field.

Dave Longley: -1 to any argument that says "people can't define whatever they want and have it be a v2 VC" ... that's what v3 is for..

David Waite: thinking of the market people have adopted broad strokes of open id, but we have seen independent effort including some work at ISO, compared to what we have produced it looks alien..
… my concern is if people do other formats to do their own needs, it will make interop harder, which is why im in favour of option 4..

Dave Longley: interoperability is a technical consideration, it is not about branding..

Kevin Griffin: I can't +1 "xml-ld is not valid vc, has no context." enough.

Orie Steele: Its as if the working group wants to make Verifiable Credentials exclusively defined in RDF... perhaps thats a way of tackling this..

David Waite: it gives people clear guidance saying. This does not make us hostile to those other credentials..

Dmitri Zagidulin: This whole discussion, all these 4 options, all boils down to "Should implementers and consumers be able to convert between media types / representations losslessly?" That's the key. option 1 & 4 says "yes". Option 2 says "nope, information loss is ok".

David Waite: i know customers of mine want to do straight json, they will get value of JSON-LD. I will say in the question of retailers and shelving it allows people to define them in other ways. in jwts you can create collision resistance identifiers, you still need a group to get together..
… JSON-LD does not solve that problem, you can do that with any flexible format that does not require registration. I'm in favor of transformations..

Dave Longley: "you can do that with any flexible format" => "we have to make choices, we're a standards group".

David Waite: if we draw a hard line in the sand then what we want the market to embrace may not happen.

Joe Andrieu: we're going to need multiple media types, the right way is through layering, i was confused why they were separated. we do not want multiple independent serialization. we should have a base media type, such as credential+ld+mediatype.

Dave Longley: +1 to JoeAndrieu.

Manu Sporny: +1 to Joe.

Dave Longley: yes, media types aren't "bad", but using them as a solution where we just name every different format and accept them all is "bad".

Joe Andrieu: we need media types and if we have a cbor-ld representation of json-ld we need to indicate what it is..
… lets be clear adding xml is not additional interop..

Dave Longley: +1 to Joe about increasing interop and not decreasing it..

Kristina Yasuda: I think there are two ideas of "interop" - global interop and interop within a certain trust framework / ecosystem..

Orie Steele: We don't need credential+ld+json if we can just say ld+json is sufficient... thats equivalent to agreeing we have only 1 base serialization..

Joe Andrieu: i want to speak a bit to mikes comment, this argument only works if the power dynamic is that the recipient restricts what the issuer says. I don't think the two power party dynamic works in a 3 party model. I think the power dynamic that scales beyond big players that control the pot.

Dave Longley: +1 to Joe, two party power dynamics don't work, three party model governs this -- and neutrality + layer of indirection on vocabularies important..

Joe Andrieu: context was optional in option 2, so they are not compatible with option 1.

Dave Longley: can't agree any more with Joe, well said..

Manu Sporny: all of us want media types, with a disagreement on the base media types.

Phillip Long: to clarify coming from the education space, various players don't know who they are. allowing them to explain their intent, so i'm much more leaning towards the option 1 description of things..

Dave Longley: +1 to Phil_ASU.

Gabe Cohen: +1 to kristina, use the interop model that fits your use case.

Phillip Long: still not clear what option 2 solves that 1 does not..

Dmitri Zagidulin: @decentr__ - what's the point of a spec? To enable interop. If your use case doesn't need interop, why are you using the spec?.

Phillip Long: the various communities that care about vocab's that they use are the only ones that will keep them up to date, we have lots of examples in education space. the terms that are needed to describe them are terms that only the people invovled in them know..

Manu Sporny: +1 to Phil.

Phillip Long: decentralized maintenance of their integrity is crucial.

Dave Longley: VC interop isn't about working with people you know, it's about working with people you don't -- you can either rely on the "bigness" of the issuer or you can rely on shared, decentralized vocabularies that are independent from any issuer.

Kristina Yasuda: lets break now..

Dmitri Zagidulin: @decentr__ you don't need the spec to interop within your island..

Dave Longley: +1 to dmitriz, don't need the VC spec to interop in your own island.

Gabe Cohen: we're discussing interoping between islands as an option.

Dmitri Zagidulin: I seriously don't understand why we're arguing. Specifically, why so many people are ok with information loss, in conversion..

Dave Longley: it's automatically an option if you have interop across islands.

Gabe Cohen: but unnecessary in many use cases.

Dave Longley: decentr__: but if you don't make that work, then it doesn't matter.

Dave Longley: decentr__: yeah, don't use the VC spec for that, it's the wrong tech choice..

Gabe Cohen: to be seen if your opinion is consensus.

Dave Longley: decentr__: if you want to use the VC spec, make sure your VCs will work beyond your island.

Dave Longley: that's what it's for.

Phillip Long: +1 to dlongley's comment - interop extends to islands not in view today or which are a part of your 'map'.

Phillip Long: that is are not a part of your map..

Kristina Yasuda: re interop - my point was that we do not agree on what kind of interop we want - and we clearly do not..

Kristina Yasuda: I was not trying to convince anyone that one is better than the other.

Dave Longley: decentr__: when you use the VC spec, you're making a commitment to create VCs that will go into the wallet that someone you don't know made.

Dave Longley: so if anyone is asking "why do i have to do this 'extra' work to use VCs" ... that's the answer.

Dave Longley: and if you don't want to do the 'extra' work because you don't plan on ever having anyone you don't know use the tech -- you're using the wrong tech..

Dave Longley: you don't have to do the 'extra' work, just use a JWT..

Dave Longley: but it makes no sense to do something that harms a spec that is for interop across islands because you only ever want to use that tech in your own island... you're just using the wrong tech..

Dmitri Zagidulin: @kristina - I'm not fully understanding your point. what do you mean what kind of interop? Interop is kind of binary -- implementers either interop, or they dont.

Dmitri Zagidulin: @kristina` - or, to put it another way -- if one option enables lossless conversion between formats, and the other does not, why would you choose the latter?.

Dave Longley: dmitriz: i think the answer is "because i don't care about the transformations" ... but that means there's no interop :).

Dave Longley: no interop "across islands" ... it means you can just agree on your own thing to use in your own corner..

Dave Longley: that's not what the VC spec is about -- there are plenty of technologies out there to do that already..

Brent Zundel: I'm very vary of the term 'lossless conversion'.

Dmitri Zagidulin: @brentz - why is that?.

Dmitri Zagidulin: @brentz - lossless conversion vs information loss on transformation, that's a very clearly defined (in the information theory sense) concept..

Ted Thibodeau Jr.: lossy conversion == Pit of Death. lossless conversion == the way, the truth, and the light..

Ted Thibodeau Jr.: :-).

Dmitri Zagidulin: @brentz @kristina - current slide is not accurate. Option 1 includes Transformation option, Option 2 is separate..

Dave Longley: an analogy: there are literally millions of webpages today that mark up their data using the schema.org vocabulary... any webpage can do this, it doesn't have to be authored by Google. ... if you don't want to share that information with people you don't know, you can mark up your information with whatever else you want to. you can also do that with just text/html ... but most browsers won't render it.

Samuel Smith: q.

Ted Thibodeau Jr.: "Option 1: @context required" -> "The @vocab compromise is sufficient" and allows for LOSSLESS Transformation == the way, the truth, and the light.

Ted Thibodeau Jr.: "Option 2: context optional" -> "Media types = freedom with possibly LOSSY Transformation" == Pit of Death.

Phillip Long: +1 TallTed !!!.

Samuel Smith: q.

Brent Zundel: We have a queue and I do want to respect the queue, but....
… I have 6 questions:.
… the questions are not rhetorical but don't want immediate answers.
… hoping that the answers will help clarify what we are arguing about:

  1. Is the VC Data Model strictly an RDF data model?.
  2. Beyond 'semantic interoperability', what does @context provide?.
  3. If we keep a single base media type of credential+ld+json, what can you not
  4. Must all VC-associated media types include ld+json?.
  5. Are there constraints that could be added to the media types option that would .
  6. If @context is made optional, what can you not do?.

Paul Dietrich: Struggling here.. Without semantic interoperability, what differentiates a VC from a token?.

Dmitri Zagidulin: @brentz - I think you're missing a key question of "Should we require lossless transformation between VC media types / representations?".

Dmitri Zagidulin: at least that last question, "what can you not do" has a simple answer..

Brent Zundel: not going to talk lossless transformation, I'll go eat tacos.

Manu Sporny: 1 request, PR 44 merged without consensus. Many of us missed the change that made a JWT a valid credential..
… that PR needs to be reverted.

Ted Thibodeau Jr.: +1 revert #44 (irrespective of whether it was merged with consensus).

Michael Prorock: -1 - additional items could be added (e.g. semantic linkage) without a revert.

Phillip Long: +1 to reverting PR#44.

Manu Sporny: in an attempt to get the options aligned, as long as you can get to a DM we can all agree to. We have an example in CBOR-LD you can to go it and come back, almost lossless. Using that mechanism we don't care what that representation means as long as we can get back and forth..
… maybe we can pick at the edges of that approach to bring the options together..

Dave Longley: +1 to focusing on lossless conversion for media types that don't directly use credential+ld+json internally.

Michael Jones: There is a demonstrated appetite for using JWTs as VCs. vc-jwt 1.1 was an attempt at that but was messy. We are explicitly chartered to clean things up and make things simpler.
… vc-jwt 2.0 is already cleaner in its current state. To dlongley point about convergence, 1.1 are already going to be different and we are trying to make things simpler for the developers to use.

Dave Longley: "for developers to use" => "for some subset of developers to use".

Michael Jones: on lossless transformation, trying to convert between the formats was the problem. vc-jwt 2.0 performs no conversion which is a substantial improvement.
… Nothing in 2.0 would prevent someone from doing the conversion to other VC formats but its not required in the sepc.

Proposed resolution: Close issue #947 because @context is already optional. (Michael Jones)

Michael Jones: Issue 947: issue 44 on vc-jwt already made @context optional..

Dave Longley: +1 to revert #44 right away.

Michael Prorock: +1 selfissued - note that we can also add semantics for vc-jwt that map to the vcdm that enhance interop.

Manu Sporny: -1.

Orie Steele: +1 to the proposal.

Dave Longley: -1 to closing 947 unless we are closing it to say @context is mandatory.

Dmitri Zagidulin: -1 to proposal, objection to context being already optional.

Michael Prorock: +1.

Michael Jones: +1.

David Waite: +1.

Orie Steele: +1.

Ivan Herman: -1.

Phillip Long: -1.

Paul Dietrich: -1.

Ted Thibodeau Jr.: The queue is already long and should be heard before any proposals are made. I share the process objection..

Ted Thibodeau Jr.: Proposal was not ENDORSED. It has been SUFFERED. which is problematic, but not the same problem.

Brent Zundel: Proposal did not pass.
… Lets jump back in and get back to the queue.

Dmitri Zagidulin: Questions 4, 5 and 6 at least have fairly easy answers, from my perspective. 4: no, of course not. 5: Yes - the constraint for lossless conversion between media types. 6: What can you not do? Convert..

Samuel Smith: 3 observations: To interop, we have 2 types. Semantic and Security interop and they are not on the same axis. Interop for security is a bad idea, if you have a high level and a low level, you do not want to interop.

Kristina Yasuda: personally, I agree with Sam's first observation..

Samuel Smith: to lump interop into the same pot without defining what the axis are we are making a mistake. If the goal is make credentials more verifiable and not more interoperable, we have accomplished something.
… the verifiable part is about verifying the authenticity of who said what was sent to me..
… 2nd observation. 2 choices, very narrow scope of interop which will make the size of the pie that this group can reach is smaller.

Andres Uribe: +1 to adoptability.

Samuel Smith: protocols that optimize adaptability over interop win in the market place.

Dmitri Zagidulin: +1 to adoptability. -1 to any sort of implications that allowing lossy conversion somehow aids adoptability..

Samuel Smith: we need the flexibility to allow the pie to grow as large as possible.

Dave Longley: "just make a new media type" means there's a new pie for every media type..

Samuel Smith: we run the risk of fracture and having multiple pies instead of one big pie for this working group.
… third observation: when a community wants to have interop, they have organizational controls that limits their slice of the pie. and they need flexibility to increase their size of the pie.
… layered approach being explained that is a very good security approach.

Dave Longley: notes: the pie has been "growing" for over a decade without interoperability, we're here to consolidate pies by making choices that better enable it.

Dmitri Zagidulin: +1 to dlongley's comment that it's not growing the pies. They'll be different pies.

Samuel Smith: better to have weaker interop as long as the pie grows bigger for all of us..

Christopher Allen: +1 to sam.

Brent Zundel: please queue to make comments instead of chat.

Phillip Long: Is this a 'deregulation' argument with the goal to have a larger pie at the expense of the inability to actually exchange things among the slices reliably?.

Dmitri Zagidulin: That slide does not represent the options accurately..

Orie Steele: Wants clarity of the options to make the arguments clearer and continue that approach until we narrow in on the best option.
@context being required is not clear enough. we need to state where it will be required in order make that option clearer. wants the exact working of the spec for the MUST statement on @context.
… the point is that VCs and VPs must contain @context. In 1.1 there are chunks of JSON examples that do not include an @context.

Dmitri Zagidulin: +1 to Orie's point re precision..

Orie Steele: several sections of JWTs, headers etc that do not include @context. We have to be very precise when we say where it is required when we say it is required.

Brent Zundel: This is another question I had, must a VC have a @context, or a credential, or neither?.

Orie Steele: What we meant by saying @context is required we are really saying that VCs are a subtype of the ld+json media type..
… argument is still not clear.

Dave Longley: notes that the VC data model spec 1.1 describes a VC as "being encoded as a JWT" as opposed to "a JWT is a verifiable credential", but +1 to being more precise..

Michael Prorock: Feels the questions are helpful in framing the discussion we are having. ActivityPub is a good example of working code in the wild with successful interop.

Michael Prorock: https://www.w3.org/TR/activitypub/#obj:

"ActivityPub defines some terms in addition to those provided by ActivityStreams. These terms are provided in the ActivityPub JSON-LD context at https://www.w3.org/ns/activitystreams. Implementers SHOULD include the ActivityPub context in their object definitions. Implementers MAY include additional context as appropriate.".

Michael Prorock: definition of SHOULD from RFC 2019, "may exist valid reasons ... to ignore certain options...".

Michael Prorock: "3. SHOULD This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.".

Michael Prorock: believes in the value of semantic data. Would love to have semantic definition of the standard claim names in JWTs. However, given the nature of JWTs in general if there is a way to say that we can make an implicit @context without having it in the JWT because there is a strong technical to make JWTs look like JWTs..
… RATs comes to mind as a good example..
… officially ends his rant.

Orie Steele: Here is a relevant work item from RATs: https://datatracker.ietf.org/doc/draft-ietf-rats-eat/.

Manu Sporny: Hears Sam and Mike but it does not resonate because its not where the problem lies.
… To Brent's questions:.
… 1. VC Data Model is not an RDF Data Model, because today it is the only concrete want tor realize the features. In the future in might be opened up, but we don't have normative specs to point to right now.

Orie Steele: Perhaps we should ask, if the VCDM is a JSON-LD data model?.

Manu Sporny: 2. It was originally meant as an easy versioning mechanism. Without @context we need some other versioning mechanism. Need concrete proposal for that..
… 3. Can't think of anything that can not be done. Still not heard of technical reasons.

Orie Steele: is ld+cbor a valid VC media type?.

Manu Sporny: 4. No, not all media types need to include ld+json. CBOR-LD is one example.
… 5. Possibility, but we haven't really explored that option. Should address more.

Orie Steele: sounds like 5 is mostly a description of the way the internet works today..

Manu Sporny: 6. This is terrifying. Have to deal with incoming objects without visibility into version or semantics. Getting XML credentials is an example..

Orie Steele: sry, meant 6..

Dave Longley: Orie: and standards get created to help address that problem on the Internet :).

Markus Sabadello: Would propose adding a note to the section changed in PR 44 because it currently is confusing.
… need to call out that the discussion is still on going.

Orie Steele: dlongley: standards also cause that problem, thats why browsers warn about mishandling media types..

David Waite: Answers to questions:.

Dave Longley: +1 to add an issue on the VC JWT spec related to PR #44 that the WG does not have consensus on it.

David Waite: 1. Once the data is mapped into RDF, the mapping is gone and you need to restore that to get back to JSON.
… 2. @context does not provide semantic interop it allows you to express it..

Dave Longley: "Libraries or processors that support JSON-LD can process the @context property using full JSON-LD processing as expected." https://www.w3.org/TR/vc-data-model/#contexts.

David Waite: 3. We don't have that media type today, but wants people to handle JSON-LD when that media type shows up but also allows those to ignore it when they don't want to use it.
… 4. Kind of, but kind of not. Doesn't want this to be the case..
… this would be overly restrictive..

Dmitri Zagidulin: I think question 4 is better phased as "Can be converted to LD".

Brent Zundel: Change 4 to record.

Phil Fariller: reword.

David Waite: Don't want groups like CBOR to go create their own type of VC because they feel excluded by LD inclusion. That will make interop harder with those groups..

Orie Steele: ld+cbor is not a registered media type: https://www.iana.org/assignments/media-types/media-types.xhtml.

Phil Fariller: ,,, 6. It doesn't change anything. But changes what I can do with VCs..

Joe Andrieu: Going through the questions: apologies in advance for feather ruffling.
… 1. No, it is enough to understand the data model if you ignore @context.
… 2. Likes the middle ground, versioning == semantic operability over time..
… 3. You can't have a representation that can't map back to the base. That is what we are trying to avoid.
… 4. No, but that need to be able to map back to that base type.
… 5. Keep lossless transformation.

Orie Steele: I think we should focus on the "mapping" concept..

Dmitri Zagidulin: @Orie +1.

Joe Andrieu: 6. Can't manage version without introducing a new property that effectively recreates the functionality of @context in a restricted way with unknown dragons You also can't expect implementers to support @context, thus disenfranshising communities uninvolved in shaping the default context Can't automate disambiguation Can't escape large players defining what is allowed to be represented in VCs, thanks to two party power dynamics where indiv[CUT].

Phillip Long: +1 to Joe's concerns about making @context optional (versioning and equity).

Michael Prorock: -1 media types handle versioning fine.

Michael Prorock: and we have typ and cty.

Dave Longley: +1 to JoeAndrieu's answers.

Phillip Long: +1 to Joe's concerns about making @context optional (versioning and equity).

Dave Longley: +1 to Joe.

Joe Andrieu: to sam's pie point: IP4 datagram is the biggest interop on the planet..

Joe Andrieu: Can't escape large players defining what is allowed to be represented in VCs, thanks to two party power dynamics where individuals face the power of the worlds largest corporations.

Steve McCown: +1 Joe for "finding the anchor" similar to IPv4.

Joe Andrieu: Agreement that vc-jwt is not a VC. Maybe they won't need an @context but they need to transform back to base type. Doesn't think that having JWTs adopt VC standards is our scope.

Joe Andrieu: "This family of specifications consists of documents that each define how to express and associate proofs of integrity for Verifiable Credentials and concrete serializations for each of the defined syntaxes.".

Joe Andrieu: it is the scope of the IETF working group for JWT.

Dave Longley: +1 to Joe.

Joe Andrieu: as constituted he believes the vc-jwt is out of scope.

Dmitri Zagidulin: Questions:
… 1. No absolutely not, you can't losslessly go from RDF to VCDM JSON-LD without out of band knowledge.
… 2. @context Provides global disambiguation..
… 3. This is not a helpful question. No one is arguing for that..
… .3. Misunderstood, but I am not arguing for this media type..

Michael Prorock: re charter scope: the verbiage where jwt is listed uses the term "concrete serializations" which implies a different representation (e.g. it is a serialization of a vc).

Dmitri Zagidulin: 4. No they should not include LD. But requirement it MUST be transformed to LD.
… 5. yes, transformation constraints.
… 6. Losslessly convert between representations.

Samuel Smith: Addressing question for 6. IPv4 is a spanning layer because it is the weakest layer that everyone could agree to. Making the layer weak grows the pie the biggest. Analogy to JSON-LD being HTTP instead of IP.
… I can't expand the version mechanism to avoid malleability attacks that can occur. So better to define a narrowly constrained versioning mechanism that is harder to attack.

Dave Longley: When we invert the question we create a nirvana fallacy..

Brent Zundel: Gabe wants to discuss a possible proposal with the group..

Proposed resolution: . (Gabe Cohen)

Gabe Cohen: - @context is optional - change to SUGGESTED.
Gabe Cohen: - Base media type is credential+ld+json.
Gabe Cohen: - Utilize parameterized media types to create lossless translations to/from the base media type.

David Waite: when we do talk about a transformation layer, we should talk about a VC to JSON-LD credential but not proof types because it may not be viable across proof types.

Gabe Cohen: - add a required version property.

Dave Longley: btw, simplest example of what happens when you don't have @context is the introduction of ambiguous terms and confusion.

Dmitri Zagidulin: @decentralgabe - can you give an example of how it's possible to use media types for lossless translation?.

Manu Sporny: Would not run the proposal as is. Thinks some version of the proposal may be workable. +1 to one base media type.
… still @context is mandatory in that media type.

Gabe Cohen: perhaps - - @context is required in the base media type; SUGGESTED in other media types.

Dave Longley: decentralgabe: ^maybe that could work.

Manu Sporny: agrees that parameterized media types may be a a way to avoid proliferation.
… JSON-LD @context versions everything in the graph.
… last item doesn't address the issue..
… we are not just talking about versioning one thing so that's why adding one version property works.

Michael Prorock: We should not have the version language in the proposal.
… in the case of JWTs we have typ to specify as a JWT with ways to provide version.

Orie Steele: In vcdm 1.1, typ is JWT for vc-jwt..

Michael Prorock: could handle addition versioning with cty for example. Should be applicable to serialization format..
… Modified proposal: Adopt the ActivityPub paragraph as a starting point..

Ivan Herman: as a reminder, the paragraph Mike is referring to:

"ActivityPub defines some terms in addition to those provided by ActivityStreams. These terms are provided in the ActivityPub JSON-LD context at https://www.w3.org/ns/activitystreams. Implementers SHOULD include the ActivityPub context in their object definitions. Implementers MAY include additional context as appropriate.".

Michael Prorock: if you don't use @context you better provide a mechanism for the semantics.

Joe Andrieu: @orie "typ" is not normatively defined in the VCDM.

Dave Longley: +1 to Orie for focusing on where there's agreement.

Orie Steele: One of the areas of agreement: There are compact serializations that you can map to JSON-LD version of VCs. The question is how much of that mapping must be normatively defined in the spec?.

Brent Zundel: +1 to Orie for focusing on agreement.

Orie Steele: For example: Injecting @context in various data formats to create graphs. Access tokens, identity tokens, random JSON objects. NPM package.json for example. Adding @context enables importing package.json into a graph database..
… changing the @context can change the shape of the graph. We have protected terms so they can't be redefined but with another @context added you can change the shape and will that still be a verifiable credential?.
… do we have to define rules around how different those graphs are allowed to be..
… Using additional @context you can change the shape of the graph for other formats to the same n-quads you get from the current VC.

Dave Longley: lossly mappings and mappings (plural) for the same media type are a problem.

Dmitri Zagidulin: @selfissued - re using media types for lossless mapping, are you suggesting something like "application/credential+jwt+json;context=default" ?.

Gabe Cohen: updated proposal:.

Michael Jones: About proposal for parameterizing media-type... mappings are part of the problem with 1.1. Lossless translation from VC to vc-jwt implies that everyone is using JSON-LD. We don't need a base media type but there need not be lossless transfromation.

Proposed resolution: (1) @context is required (MUST) in the base media type; SUGGESTED in other media types (2) Base media type is credential+ld+json. (3) Utilize parameterized media types to create transformations to/from the base media type; the transformations SHOULD be lossless. (Gabe Cohen)

Gabe Cohen: - add "Verifiable credentials define terms in a JSON-LD context at https://www.w3.org/ns/credentials/v2. Implementers SHOULD include the verifiable credential context in their object definitions. Implementers MAY include additional context as appropriate.".

Gabe Cohen: - all representations of the VCDM MUST have a property that conveys versioning information.

Brent Zundel: queue closed, we will go through the existing queue and run Gabe's proposal.

Gabe Cohen: Clarify versioning. You must always include a version indicator in all representations..
… updated proposal to include that. Also included transformation to SHOULD.

Manu Sporny: re ActivityPub: That text ended up because the group was in the same deadlock we are in right now. Hoping that text would get them passed deadlock. After years of examples, we have a bunch of non-interoperable implementations..
… ended up with islands of interoperability.

Orie Steele: Do we have any "interoperable ones", because... that seems to be the success criteria..

Orie Steele: There are always examples of "non interop"..

Michael Prorock: my server seems to be federating across a log of stuff quite well with thousands of users - with multiple implementations on other servers.

Dmitri Zagidulin: @mprorock - and is your server using @contexts?.

Dmitri Zagidulin: @dwaite - versioning mechanism AND global disambiguation..

David Waite: Speaking to Brent question #2. The reason @context is there is to provide a versioning mechanism with a clear upgrade path to JSON-LD. The URIs are providing a bit of a semantic versioning contract..
… If it turns out that the versioning mechanism is @context, we need to understand that. There are now 2 separate concerns being addressed by the same thing.

Michael Prorock: ours is.

Brent Zundel: POLL: @context is required (MUST) in the base media type; SUGGESTED in other media types.

Michael Jones: -1.

Manu Sporny: -1 (only because "suggested" is not clear).

Gabe Cohen: +1.

Orie Steele: -1.

Joe Andrieu: +1.

Phil Fariller: +1.

Michael Prorock: -1 SHOULD.

Will Abramson: +1.

Mahmoud Alkhraishi: -1.

Brent Zundel: POLL: @context is required (MUST) in the base media type; SHOULD in other media types.

Michael Jones: -1.

Gabe Cohen: +1.

Joe Andrieu: +1.

Manu Sporny: -1 (SHOULD should be a MUST).

Orie Steele: -1.

Will Abramson: +1.

Dave Longley: +1 if "other media types" MUST be able to losslessly transform to the base media type (i think that's implied).

Christopher Allen: +1.

Shigeya Suzuki: +1.

Ivan Herman: +1.

Steve McCown: +1.

Dmitri Zagidulin: -0.5 (base media type is the wrong lens to think about this. Advocating for lossless conversions instead.).

Oliver Terbu: 0.

Ted Thibodeau Jr.: +1 w/dlongley's caveat.

Dmitri Zagidulin: I would change to a +1.

Samuel Smith: -1.

Brent Zundel: POLL: @context is required (MUST) in the base media type; SHOULD in other media types and "other media types" MUST be able to losslessly transform to the base media type.

Michael Jones: -1.

Christopher Allen: -1.

Samuel Smith: -1.

Dmitri Zagidulin: +1.

Kevin Griffin: -1.

Phil Fariller: -1.

Ivan Herman: +1.

Manu Sporny: +1.

Orie Steele: -1.

Andres Uribe: +1.

Joe Andrieu: +1.

Phillip Long: +1.

Dave Longley: +1.

Will Abramson: +1.

Gabe Cohen: +1.

Shigeya Suzuki: +1.

Oliver Terbu: 0.

Ted Thibodeau Jr.: +1.

Markus Sabadello: +0.5.

Steve McCown: -1.

Michael Prorock: 0.

Mahmoud Alkhraishi: +1.

Christopher Allen: (I don't know if I can be here this afternoon).

Christopher Allen: (I'm fine with -LD datatypes, not clear with others).

Michael Jones: Lossless transformation to the VCDM effectively means that all representations are using a form of linked data.

Michael Jones: -1.

Dmitri Zagidulin: +1.

Christopher Allen: What is "base media type" now?.

Mahmoud Alkhraishi: credential+ld+json.

Dmitri Zagidulin: @selfissued - not sure that's accurate. Lossless transformation /just/ means that it /can/ be transformed to linked data..

Joe Andrieu: @ChristopherA It's a single representation that other representations can transform to..

Ivan Herman: +1 to dmitriz.

Christopher Allen: I really want the current default media type to be in the proposal.

Orie Steele: eats popcorn and watches the fun.

Christopher Allen: my DRAFT PROPOSAL: @context is required (MUST) in the credential+ld+json; other media types SHOULD be able to be losslessly transformed to the base media type..

Brent Zundel: POLL: @context is required (MUST) in credential+ld+json; other media types MUST be able to losslessly transform to the base media type..

Michael Jones: -1.

Gabe Cohen: +1.

Orie Steele: -1.

Joe Andrieu: +1.

Dave Longley: +1.

Dmitri Zagidulin: +1.

Ivan Herman: +1.

Will Abramson: +1.

Phillip Long: +1.

Paul Dietrich: -1.

Manu Sporny: +1.

Michael Prorock: -1.

Christopher Allen: -1 (other media SHOULD would be +1).

Samuel Smith: -1.

Kevin Griffin: -1.

Phil Fariller: -1.

Shigeya Suzuki: +1.

David Waite: 0 (+1 for media types SHOULD).

Brent Zundel: We do not have consensus on this poll.

Samuel Smith: -1.

Oliver Terbu: 0.

Christopher Allen: It is *:43.

Brent Zundel: POLL: Verifiable credentials define terms in a JSON-LD context at https://www.w3.org/ns/credentials/v2. Implementers SHOULD include the verifiable credential context in their object definitions. Implementers MAY include additional context as appropriate. Other serialization formats MUST provide a mechanism that maps terms used in that media type to provide semantics that are defined by the context in the core data model..

Gabe Cohen: +1.

Michael Prorock: +1.

Dave Longley: -1.

Joe Andrieu: -1.

Michael Jones: -1.

Phillip Long: -1.

Orie Steele: +1.

Christopher Allen: -1.

Mahmoud Alkhraishi: +1.

Samuel Smith: -1.

Oliver Terbu: 0.

Phil Fariller: -1.

Paul Dietrich: -1.

Will Abramson: -1.

Ivan Herman: -1.

Dmitri Zagidulin: -1.

Kevin Griffin: -1.

Steve McCown: -1.

Manu Sporny: -1 (only because I'm confused) :(.

Andres Uribe: -1.

Shigeya Suzuki: 0.

Christopher Allen: my DRAFT PROPOSAL: @context is required (MUST) in the credential+ld+json; other media types SHOULD be able to be losslessly transformed to the base media type..

Brent Zundel: POLL: @context is required (MUST) in the credential+ld+json; other media types SHOULD be able to be losslessly transformed to the base media type..

Orie Steele: +1.

Joe Andrieu: -1.

Phil Fariller: +1.

Dave Longley: -1 because being able to transform is not a MUST.

Brian Campbell: +1.

Samuel Smith: +1.

Michael Jones: -1.

Gabe Cohen: +1.

Michael Prorock: +1.

Mahmoud Alkhraishi: +1.

David Waite: +1.

Christopher Allen: +1.

Andres Uribe: +1.

Manu Sporny: -1 (because it's easy to come up with very good reasons why you shouldn't do something).

Kevin Griffin: +1.

Ivan Herman: -1.

Steve McCown: +1.

Phillip Long: -1.

Christopher Allen: It is closer.

Shigeya Suzuki: +1.

Dmitri Zagidulin: -1 (due to the SHOULD instead of MUST).

Ivan Herman: +1 to manu; SHOULD is too much open ended here. What about just restricting it to specific cases like JWT?.

Christopher Allen: @dmitriz my challenge is MUST isn't always possible..

Michael Jones: Orie: It's like telling another media type that it has to be able to divide by zero.

Dmitri Zagidulin: @ChristopherA - say more? Why is it not always possible?.

Joe Andrieu: @ChristopherA then it isn't a good representation of a VC.

Joe Andrieu: e.g., I wouldn't recommend Haiku serialization.

Dmitri Zagidulin: @ChristopherA - deterministic lossless mapping is fairly trivial. At the cost of only a few bytes..

Dave Longley: this "SHOULD" is really just a "not really".

Kaliya Young: I would really like to say something very short before the lunch break - that is a a high level comment.

Christopher Allen: (there are other graph models — it is a great SHOULD if you can, but I can't guarantee it).

Dave Longley: it's not a real SHOULD :).

Dmitri Zagidulin: @ChristopherA - but again, it's pretty easy to add fields so that graph models are isomorphic.

Christopher Allen: Can someone ping my on signal when you actually return from lunch?.

Dave Longley: ChristopherA: if the SHOULD were treated the way you're suggesting i think that could be ok, but that's not what the SHOULD we be used for here, it would be used to create totally different formats without bothering to have any transforms..

Dmitri Zagidulin: @ChristopherA - I'll try to ping you on signal..

Kaliya Young: I was going to say - but not aknowledged - that there is a issue that we may not be considering - the lost of reputation if a breaking change of this magnitude is made..

David Chadwick: Has the meeting started without the Zoom people?.

Gabe Cohen: https://imgur.com/a/y15dqFg.

Proposed resolution: . (Gabe Cohen)

Gabe Cohen: 1. The base media type for Verifiable Credentials is credential+ld+json.

Gabe Cohen: 2. @context is required (MUST) in the base media type; other media types MAY choose to include @context.

Gabe Cohen: 3. You MUST be able to transform from the base media type to other representations with losslessly hold for exceptions to be specified by the working group such as where the transformation is not possible due to extenuating circumstances..

@melvincarvalho
Copy link

melvincarvalho commented Feb 27, 2023

It might be an idea to bottom post the resolution to this closed issue in 1-2 sentences, for those that have followed it for 200+ comments. If I'm right a new @vocab item ( is it "https://www.w3.org/ns/credentials/issuer-dependent#" ? ) has been added to the context to allow both JSON and JSON-LD to be used.

@brentzundel
Copy link
Member

RESOLVED: The base media type for the VCDM is credential+ld+json. @context is required (MUST) in the base media type; other media types MAY choose to include @context. Serializations in other media types (defined by the VCWG) MUST be able to be transformed into the base media type. Another media type MUST identify if this transformation is one-directional or bi-directional. Bi-directional transformation MUST preserve @context. Transformation rules MUST be defined, but not necessarily by this WG.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests