-
Notifications
You must be signed in to change notification settings - Fork 45
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
Is support for RFC7232 Conditional Requests mandatory? #33
Comments
Indeed, every MUST can be expensive, but my opinion is that to have sufficient performance in a decentralized system, we have to enable caches in every way we can. I definitely think we should have a MUST there. |
Okay, but:
|
Right! The way I see caching is that there are essentially three directions:
Notifications is future work, RFC7234 is hard to get commitments for, so conditional requests is really the low-hanging fruit. Then atomicity is another important reason to do it, but it also requires strong validators as per the spec, and that does not sit very well with RDF, because we can have several semantically equivalent representations. We could look into a third class of validators for this purpose. RFC7234-based caching could be enabled in some cases (e.g. chat logs that after a day become immutable), but in general, much UX work should go into helping people state their expectations for future validity. Only when we get to that point are we ready to state the case for that more strongly. |
As long as the ETag is not tied to a specific representation, we should be fine? |
It would be stretching the spec a bit since it is explicitly for differentiating between different representation of the same resource... I do believe that this stretching is appropriate, but I also believe we need to be careful about how we do it, and that a new type of validator is an approach that should be explored. |
True, I had misread
|
Just an organizational note, we might want to keep spec (semantics) issues in https://github.com/solid/solid-spec/issues and keep the issues list in this repo strictly for rewrite (syntax) issues. |
@michielbdejong This specific issue came up due to the rewrite. As I've argued before, this rewrite is necessarily more than just syntax/grammar. That is because v0.8 is too vague and high-level, and it does not even get to issues like this one. This issue came up because we write the text at a much more detailed level, so some details that were not expressed in v0.8 now need to be discussed. |
OK, so are there any issues that we should still file at the current spec, or should we just say the solid-spec repo is frozen, and move to this issue tracker? |
Probably only important bugs like #31 (comment)
For all other purposes, I would say yes. |
Also link #60 . |
I don't see the direct connection between having PATCH available (let's say as MUST .. pending #39 #85 .. ) and changing server's RFC7232 from MUST to SHOULD. Or if/how they can be interchangeable - not sure if that's what you're hinting at. My understanding is that, they can address different things. I think having RFC7232 as a MUST for servers is relatively a low-hanging fruit. Worth to emphasise that the current TSE doesn't have any requirement for a client. So, there is no particular guarantee to reach the performance that's seeked (in this discussion). Depending on the degree we want to achieve that, we may need to actually state and bump client's requirements as well. I would also note that RFC7232 doesn't have to be all or nothing - although that'd be simple to get across. Alternatively, we can pick and choose e.g |
Noting here that LDP already mentions |
I am in favor of RFC7232 being a MUST for solid. LDP already enforces Etag support, and forces servers to honor LDP:Etag is explicitly enforced:
Servers MUST check If-Match conditional requests when clients use them on PUT:
|
Coming back to the original comment: Solid servers should be required to implement RFC 7232 because currently there is no rule for mutating non-RDF resources with PATCH. Hence, for Solid servers to support conditional requests on any resource, MUST is necessary for interop. |
No description provided.
The text was updated successfully, but these errors were encountered: