solid / solid/specification

Deep change detection for containers

Open
#797 4 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

topic: resource access
Dominant language
HTML
Stars
563
Forks
108
Avg merge
4d 13h
Merged PRs (30d)
3

Description

Clients need a reliable and efficient way to determine whether any resource within a container hierarchy has changed and when, and ideally what may have changed, without having to traverse the entire tree on every sync.

(Aside: this may also need or want to incorporate if and what auxiliary resources of resources within a container hierarchy changed.)

As it stands, while the Solid Protocol expects servers to include the Last-Modified header in the response, update of that value is left to the discretion of the server, and there is no requirement that the container's Last-Modified also reflects a change that may have happened somewhere within a given container hierarchy ( https://solidproject.org/TR/2024/protocol-20240512#container-last-modified-comparison ). So, this issue is to revisit this topic since it was put aside at the time.

There may be a range of solutions with varying complexity and cost, from always requiring a server to use most up to date modified value (and the distinction between the container resource itself and a resource within a container hierarchy), to client's detecting server's capabilities, to client sending a preference signal, to sync or async updates (notifications), to querying, to... whatever. So, e.g., potentially using:

  • Last-Modified header
  • Prefer header
  • Preference-Applied header
  • Depth header
  • PROPFIND header
  • HEAD or GET methods
  • QUERY method

Re QUERY, e.g.:

QUERY /
Content-Type: application/sparql-query (or whatever)
Prefer: return=deep-last-modified (or whatever)

SELECT ?resource ?modified (or whatever)
...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Solid Protocol section on container Last-Modified comparison, then compare the listed header, method, query, and notification approaches. Done means the project has agreed on a concrete deep-change-detection direction and captured the resulting protocol requirements or specification changes.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.