CommunitySolidServer / CommunitySolidServer

An open and modular implementation of the Solid specifications

Home Page:https://communitysolidserver.github.io/CommunitySolidServer/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature Request] PREP Notifications

CxRes opened this issue · comments

Continuing from our discussion in #1722, this is a formal request to add PREP notifications with Solid-PREP semantics for RDF resources to CSS.

Maintainers could consider adding support incrementally, such as for RDF resources first, and then scaling it to support Non-RDF resources (as the message format is identical to Solid Notifications for RDF resources). Ideally, users should be able to configure which resources provide notifications; the maintainers are better positioned in determining how such a configuration might be provided.


A personal note on architecture: I have previously spoken (in the Solid Chat) on the importance of deviating as little as possible from a REST-ful design in enabling notifications. Notification by definition require servers to persist knowledge about the client, but we can through careful design minimize this information (to only the duration for which a stream should remain open). I would propose that the GET handler only manage the subscription & stream whereas the notification (which could be in a few formats depending on content-negotiation) is generated whenever a write operation (PUT/POST/PATCH/DELETE) occur and be passed on to all of the open GET streams. This way notifications are generated once, rather than being generated for each client. Of course, the downside of this proposal is that notifications cannot be customized for the client beyond content-negotiation. Servers, not the clients, decides properties such as "rate" at which notifications are sent. This is likely to make intermediation easier as well, as an intermediary can predictably amplify notifications. Caveat being that this is a personal opinion and there is no compulsion that implementers to follow this advice!