Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Fine with me, can we already start that separate document? Will Solid 26 manifest in just those two documents or there are going to be more of them? |
|
Should solid26 recommend more items from https://solidproject.org/TR/ to give a fair representation of what is relatively widely implemented and deployed? For instance, taking the data from https://jeff-zucker.github.io/solid-load-profile/ as one source of input, we can infer what's out there in the ecosystem and use that for the implementers guide. I'll let the group be the judge of how to make a cut (e.g., based on count or other criteria) for what's reasonably deployed. I think it is hard to argue against the fact that Solid WebID Profile and Solid Type Indexes are used out there. If solid26 doesn't suggest anything beyond a WebID, it downplays personalisation and the social aspect of Solid, and if anything, looks strange for the state of things in 2026. If there is other concrete data on the ecosystem, let's have a look. |
This comment was marked as resolved.
This comment was marked as resolved.
|
There should be a general recommendation that latest published versions of specifications should be used. That could be expressed along the lines of: at the time of this publication we recommend x but implementers are strongly encouraged to use latest published when available, and if you like to live on the bleeding edge, use the editor's draft. On that last note, solid26 should also take the opportunity to thank implementers (somewhere upfront like in the Introduction) for helping to improve the Solid ecosystem, and any feedback on their implementation experience in meetings, issues etc., would be most appreciated. |
uvdsl
left a comment
There was a problem hiding this comment.
Comments based on my understanding from the meeting on 2026-04-15.
| For example, Clients might try to use a combination of HTTP GET and HTTP PUT to work around such limitation of a non-conformant Server. | ||
| </li> | ||
| <li> | ||
| Servers are strongly encouraged to implement Web Access Control (<a href="https://solidproject.org/TR/protocol#web-access-control">WAC</a>), see <a href="#web-access-control">below</a>. |
There was a problem hiding this comment.
Besides, the statement that there are clients that are not 100% conformant does not really provide guidance, i.e., is not really something an implementer can act on.
| <div datatype="rdf:HTML" property="schema:description"> | ||
| <div class="note"> | ||
| <h4><span>Note</span></h4> | ||
| <p>Work in progress: the content from the <a href="https://docs.google.com/document/d/1da2J-NsU3K-4kWEFOvhzIdrvy_KftewXdlxfu401kY0/edit?tab=t.j8ef1ds1wza#heading=h.r94tmffvqx0e">WebID guidance document</a> is to be integrated into this section.</p> |
There was a problem hiding this comment.
| <p>Work in progress: the content from the <a href="https://docs.google.com/document/d/1da2J-NsU3K-4kWEFOvhzIdrvy_KftewXdlxfu401kY0/edit?tab=t.j8ef1ds1wza#heading=h.r94tmffvqx0e">WebID guidance document</a> is to be integrated into this section.</p> | |
| <p><a href="https://solidproject.org/TR/oidc">Solid-OIDC</a> (CG-DRAFT/FINAL, v0.1.0) is included with the following comments:</p> | ||
| <ul> | ||
| <li> | ||
| <p>Despite Solid26 including Solid-OIDC v0.1.0, it is not widely implemented. In particular, the Solid-OIDC recommended flow of User-Managed Access (UMA) is not supported by any open source Solid Server implementation. Current implementations rely on the access token issued by the OpenID Provider of the user to authenticate the user at a Solid Storage.</p> |
There was a problem hiding this comment.
I'll update this section once I have the draft for "State of Solid-OIDC 2026" (or however might be called), see github.com/solid/solid-oidc/issues/250
| For example, Clients might try to use a combination of HTTP GET and HTTP PUT to work around such limitation of a non-conformant Server. | ||
| </li> | ||
| <li> | ||
| Servers are strongly encouraged to implement Web Access Control (<a href="https://solidproject.org/TR/protocol#web-access-control">WAC</a>), see <a href="#web-access-control">below</a>. |
There was a problem hiding this comment.
Indeed the CG consensus is to recommend WAC based on data. Moreover, if "clients often" can be acknowledged based on data, one can acknowledge that "most servers and clients support WAC" based on data.
The Solid ecosystem is already aligned on WAC. If solid26 serves anything, it needs to acknowledge that reality so that it accomplishes the following:
- Implementations already supporting WAC have nothing to do because they are aligned with the rest of the ecosystem.
- Implementations only supporting ACP should support WAC so that they are aligned with the rest of the ecosystem. They can optionally drop ACP.
- New implementations are encouraged to support WAC so that they are aligned with the rest of the ecosystem.
That is quite literally what's useful here for readers. And I'd like to see the guideline along those lines.
| <p>Servers that do not conform with this section can still interoperate with Solid26 clients that do not read or modify access controls.</p> | ||
| </div> | ||
| </div> | ||
| </section> |
There was a problem hiding this comment.
I don't buy into the criteria to only include what is recommended by other drafts. Even when we entertain that idea of a criteria, it is evidently not applied consistently since there are "random" suggestions being made into solid26 that are neither grounded on actual specifications, data, let alone CG consensus. So, I suggest taking a moment and reflecting on that.
One of the key goals of solid26 is to encourage implementations to improve the ecosystem based on the entirety of CG's output: https://solidproject.org/TR/ . Where we have data, we make use of it to the best of our abilities, and where we don't, we try to make some educated guesses or at the very least make non-overly controversial suggestions without venturing off into personal opinions, and certainly not undermine existing efforts or mischaracterising them.
Solid WebID Profile is used in the ecosystem. It is also a fair representation of what is implemented out there. It may not be "perfect" but that is no different than any other specification in the Solid CG or anywhere else for that matter. Repeatedly diminishing it to nothing despite the data (as referenced numerous times now) indicating its substantial use is a disservice to the CG as well as a disruption in this workspace. Please stop doing that immediately!
Co-authored-by: Christoph Braun <christoph.braun@protonmail.com>
| <p>If a server does not support HTTP <code>PATCH</code> requests, the client can HTTP <code>GET</code> the resource, apply the change locally, and then HTTP <code>PUT</code> the resource back. If the server supports <a href="https://datatracker.ietf.org/doc/html/rfc9110#name-etag"><code>ETag</code> headers</a> or <a href="https://datatracker.ietf.org/doc/html/rfc9110#name-last-modified"><code>Last-Modified</code></a> headers, clients can achieve the concurrency-control behaviour of HTTP <code>PATCH</code> by issuing a conditional <code>PUT</code>. <code>ETag</code>-based validation is more precise than date-based validation and should be preferred when a server supports both, because <code>Last-Modified</code> has only one-second resolution and may not reflect sub-second changes.</p> | ||
|
|
||
| <p>The flow is:</p> | ||
|
|
||
| <ul> | ||
| <li>On <code>GET</code>, the server returns an <code>ETag</code> — an opaque validator identifying the current state of the resource (often derived from a content hash, but the exact derivation is up to the server). For example, imagine the server returns <code>ETag: "xyzzy"</code>.</li> | ||
| <li>The client then makes a conditional <code>PUT</code> using the <a href="https://datatracker.ietf.org/doc/html/rfc9110#name-if-match"><code>If-Match</code></a> header: <code>If-Match: "xyzzy"</code>. The server applies the <code>PUT</code> only if the resource's current <code>ETag</code> still matches <code>"xyzzy"</code>; otherwise it responds with <code>412 Precondition Failed</code>. This guarantees the resource has not changed on the server between the <code>GET</code> and the <code>PUT</code>.</li> | ||
| <li>The equivalent using dates is <a href="https://datatracker.ietf.org/doc/html/rfc9110#name-if-unmodified-since"><code>If-Unmodified-Since</code></a> paired with the <code>Last-Modified</code> value from the <code>GET</code> response. Note that <code>If-Modified-Since</code> is the header used for cache revalidation on <code>GET</code>, not for lost-update prevention on <code>PUT</code>.</li> | ||
| </ul> | ||
|
|
||
| <p>Note that <code>If-Match</code> uses strong comparison, so weak ETags (those prefixed with <code>W/</code>) will not match.</p> | ||
| </li> |
There was a problem hiding this comment.
I worry about all of this, and not because I necessarily agree/disagree with its contents. I don't question is usefulness either. It is just that it is too much in the weeds of trying to figure out what should be recommended. We've spent a lot of time on discussing most of what's written above, and what we came to was more or less what's in the Solid Protocol right now.
So, unless all of this that's written here is building on or drawing from 1) existing discussions, or 2) very rough consensus, or 3) based on implementation feedback, I suggest to not venture too far in this guide. It shouldn't repeat what existing specifications say. It should serve as a pointer or what the implementers may want to look up. "If you want to do accomplish this particular thing, then this and that will be handy to consider / do..." .
Here is an excellent example of what works as a guide on the subject matter:
Editing the Web - Detecting the Lost Update Problem Using Unreserved Checkout
"Saving a Document Not Known to Exist, Saving a Document Known to Exist, Handling Conflicts..."
I think referring to material like that is useful to implementers.
(In dokieli, to detect changes, we've followed those guidelines some of the base functionality for offline support: dokieli/dokieli#456 )
There was a problem hiding this comment.
I can see where you are coming from. This is somewhat related with my concern on recommending something to Clients that they might not be able to use - which is addressed by the first paragraph (if etags are there, use them). I would prefer to keep the first paragraph.
On the particular flow spelled out here, I am a bit torn: On one hand, it does provide technical guidance. On the other hand, spelling this out bloats the bullet point a bit. Maybe a reference to [RFC9110 - Validator Fields] would suffice here to keep the granularity across the bullet points consistent, @jeswr?
|
This guide should include some basic security & privacy considerations. For example that WAC has no reliable way to authorize applications (assuming PR for conditions doesn't land) and ACP has only limited way of doing it for one's own resources as demonstrated in https://youtu.be/5Q1nUmGdaXE I think it is better to clearly communicate about known limitations up front. Otherwise people may realize it somewhere down the road and fairly find it disappointing that this information wasn't disclosed. |
Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
| <ul> | ||
| <li> |
There was a problem hiding this comment.
Lines 333 & 334 here are now on lines 341 & 342. Delete these existing 333 & 334.
| <ul> | |
| <li> |
There was a problem hiding this comment.
I believe (and I might be wrong here) that those elements (former L333-L334, now L360-L361) belong to the outer list whereas the mentioned L341-L342 (now L368-L369) belong to the inner list structuring the "etag flow". Did I catch that right?
clarifying target audience as requested by @kaefer3000 adding conformance test and verification statement as requested by @csarven
Co-authored-by: Tobias Käfer <6708974+kaefer3000@users.noreply.github.com>
This is the beginning of the implementors guide discussed in #773 - currently it just fixes the specs and versions to be included.
Additional specs such as #774 (which I acknowledge I still owe a response to) may be added to this guide if developed and CG endorsed in time.
A preview link can be found here.
EDIT since there is a lot of active editing on this PR -- I am marking comments as resolved as I implement changes to ease navigation (cc @csarven @elf-pavlik - I hope this is ok, as far as I understand anyone with read access can still expand and read the content as they desire).