Define Storage Description Resources as a specialization of CID-1.0#183
Define Storage Description Resources as a specialization of CID-1.0#183acoburn wants to merge 3 commits into
Conversation
Co-authored-by: Pierre-Antoine Champin <pierre-antoine@w3.org>
|
There are a few tensions between the current definition of an LWS Storage Description resource and a CID 1.0 document. These tensions are not unresolvable, but it would be good to have some feedback from the group. The current state of this PR describes the storage description like so: This formulation is problematic due to the CID requirements on the One option I considered was to co-locate the storage description resource at the storage root, relying on content negotiation to modulate between different representations ( That leaves two main alternatives:
In the early discussions of this topic (LWS Meeting 2025-12-15), there was general consensus on having the subject of this document be the storage. Option 1 is in line with that consensus while option 2 is not. |
|
@acoburn I totally agree with your analysis above. And I don't like option2, precisely for the reason you outline in the end. The spec currently says (emphasis is mine):
If we want to make the storage description a compliant CID, then the URI identifying the storage and the URI identifying the root could not be identical. In fact the URI identifying the storage could not even dereference (even indirectly, via fragment removal or 303 redirect) to the storage root, because it is required (for the CID to be valid) to dereference to the storage description. I could live with that, but it is unfortunate. It creates an incompatibility with Solid:
Maybe we are better of reusing the CID vocabulary (and potentially even the CID context), but not claiming CID compliance for the Storage Description :-/ As @dmitrizagidulin pointed out during the last WG call, CID compliance is important if we were to verify signatures (or other proof) issued by the storage; I don't think we have use-cases for that... We are merely reusing the vocabulary used in CID documents... |
well, we currently have: https://w3c.github.io/lws-protocol/lws10-notifications/#signature-verification
|
We most definitely have: server authentication, provenance tracking, integrity checks, legal compliance (auditing) ... I believe one important conclusion from our face-to-face meeting in London was that storages and storage roots do not need to be the same. Whether Solid currently aligns with that or not should not matter. Option 1 is thus perfectly applicable. |
|
https://w3c.github.io/lws-protocol/lws10-core/#terminology
https://w3c.github.io/lws-protocol/lws10-core/#container-model
Given efforts like @jeswr's Can the containment tree starting with the root container be a service as well? {
"@context": [
"https://www.w3.org/ns/cid/v1",
"https://www.w3.org/ns/lws/v1"
],
"id": "https://storage.example/",
"type": "Storage",
"service": [{
"type": "RootContainerService",
"serviceEndpoint": "https://storage.example/root/"
}]
}Since LWS containment has to be explicit and asserted with {
"id": "https://storage.example/id",
"type": "Storage",
"service": [{
"type": "RootContainerService",
"serviceEndpoint": "https://storage.example/"
}]
}{
"id": "https://id.example/storage",
"type": "Storage",
"service": [{
"type": "RootContainerService",
"serviceEndpoint": "https://storage.example/"
}]
}Technically this could still probably allow root to be the same as the storage, but we may need to add a note that implementation doing it may need to have exception for CID content type in their access control mechanism. |
You are right, I stand corrected. Then this PR seems the best way forward. I also like @elf-pavlik's suggestion to declare the root container(s) as a special kind of service. |
I checked the minutes again, and found some observations of the discussion:
Indeed, there is still the choice to make, but it seems to me that the old consensus no longer takes that much priority in this thread, given that CID compliance changes the basic assumptions of the discussion. To me, if there has to be a choice of either restricting the location of Storage Root or restricting the location of Storage Description, I'm more inclined to restrict the second. It makes more sense to allow arbitrary placement of Storage Root than Storage Description, both for flexibility and being intuitive. @elf-pavlik's comments also make sense to me. Happy to hear what that leads to. |
This defines the Storage Description resource as a specialization of a Controlled Identifier Document (CID 1.0). There are three notable changes:
application/lws+cidmedia type.@contextproperty:https://www.w3.org/ns/cid/v1https://www.w3.org/ns/lws/v1Otherwise, the basic shape of the JSON serialization of a Storage Description Resource remains the same.
Preview | Diff