Skip to content
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

[UC] Authoring Arbitrary Hypermedia #33

Open
CxRes opened this issue Dec 12, 2024 · 4 comments
Open

[UC] Authoring Arbitrary Hypermedia #33

CxRes opened this issue Dec 12, 2024 · 4 comments
Labels
triage Issues needing triage usecase LWS Use Case

Comments

@CxRes
Copy link

CxRes commented Dec 12, 2024

status: WIP, expect changes


As a content creator user
I want to be able to author (and store) arbitrary hypermedia,
So that my readers (and collaborators) can freely navigate, interact with (and possibly add to) the data.

As an app developer
I want to provide controls that enable my users to author arbitrary hypermedia and/or to author arbitrary hypermedia on behalf of my users,
So that I can provide other users (same or different app) with views, links, and options to interact with the authored data.

This is not a use-case, but a pattern that spans a family of use-cases that I would describe as knowledge work1. At the outset, I find the template not suitable for expressing patterns. I find that it is more important to express the concepts involved, rather provide examples that would never be exhaustive. Hence, my reticence in submitting this issue.

I am also certain that I am subsuming aspects covered in use cases already specified. It is not my intention to diminish the importance of specific use cases. Rather, this is an attempt at a broader view of what LWS must enable in order to serve a broad class of problems.

Definitions

For the purposes of this discussion, I shall be sticking to Roy Fielding's definition of hypermedia2:

When I say Hypertext, I mean ...

  • The simultaneous presentation of information and controls such that the information becomes the affordance through which the user obtains choices and selects actions.

Hypermedia defined this way provides data guided controls, which is necessary to implement both non-linear documents and selectable GUI controls to act on documents, the two main features needed for navigating documents on the web.

Use Pattern

Users of the linked web storage might want to (and should be encouraged to) conform to the REST architectural style when creating resources. A key constraint of the REST architectural style is “hypermedia as the engine of application state” (HATEOAS). This constraint, as you are all aware, allows clients to follow their nose starting from just a given resource identifier, without the need to rely on out-of-band knowledge.

Since, the linked web storage allows users to store arbitrary data, it follows that an author wanting to conform to the REST architectural style should also be able to generate/specify links as well as configure (expose/restrict) affordances on resources they create in the process. LWS needs to provide comprehensive and canonical mechanisms with proper guidance on how to create such “self-documenting” hypermedia in a consistent manner.

Caveat: When I say “arbitrary” hypermedia, I do NOT imply that Linked Web Storage cannot impose any restrictions on resources or the user's store (for example, container resources implement a part of LDP specification in Solid protocol). But those restrictions must be principled and limited to allow users to support the broadest class of hypermedia. Having said that, a server with some extension mechanism to allow stores to augment available affordances (say, for example, add pagination to containers) could also be valuable.

No place have these concerns been more conspicuous and contentious than in the case of containers (See solid/specification#69, solid/specification#134, solid/specification#198, solid/specification#525, solid/data-interoperability-panel#225). Currently, Solid does not have a canonical strategy for handling triples written by clients to containers. Solid implementations are inconsistent in their handling of such triples. It is unclear, for example, how links to resources outside the containment hierarchy are to be stored alongside contained resources.

One convention the community has developed is the use of index.ttl files 3. This convention is however undocumented, and they put additional burden on clients having to manage data, that nominally belongs to the container, in another resource. If not handled carefully, it can easily lead to inconsistent state, such as in the form of dangling links (say by deleting a contained resource but not removing associated triples from index.ttl). Having doubled paths also creates ambiguity for readers, which way to proceed.

Preconditions:

That users or their apps can create hypermedia resources on a linked web storage server.

Actors:

  • Users (and their applications) that author and engage (navigate, modify etc.) with hypermedia.
  • Storage (and Storage Providers) that expose affordances for hypermedia authors.

References:

List any relevant resources or examples that could inform this use case, possibly from other domains or solutions.

Footnotes

  1. Engelbart, Douglas C., The Augmented Knowledge Workshop, Presented at the National Computer Conference, June 4-8, 1973, AFIPS Conference Proceedings, Vol. 42, pp. 9-21.

  2. Fielding, Roy T., A little REST and Relaxation.

  3. W3C Solid CG meeting minutes for 2022-10-19

@CxRes CxRes added triage Issues needing triage usecase LWS Use Case labels Dec 12, 2024
@CxRes
Copy link
Author

CxRes commented Dec 12, 2024

I am personally of the view that we should get rid of resource container distinction altogether. If LWS wish to continue supporting the file-system as a backend as Solid does, and we were to switch to my strategy of mapping resources to file-system which also has a number of other benefits, then we can allow all resources to also be containers.

But these are design decisions for the WG to consider, hence I refrain from discussing them in detail.

@elf-pavlik
Copy link
Member

This is an essential input, but it communicates that it is not precisely a use case. I see it similar to #24 as a higher-level design principle. Possibly, a dedicated space could be created for these kinds of contributions.

@CxRes
Copy link
Author

CxRes commented Dec 19, 2024

This is an essential input, but it communicates that it is not precisely a use case.

Hence, my disclaimer at the very top. Also have raised this concern at CG meeting to be communicated to the WG (W3C policy is unfortunate that membership and not participation/contribution to input documents allows you into meeting at the WG "high table", unless you apply for special permission as an IE). Would welcome a design principles document and second @elf-pavlik's request!

But this is not in the same bucket as #24 which is a request for abstraction/indirection over the core protocol.

@TallTed
Copy link
Member

TallTed commented Jan 7, 2025

As a user

I think perhaps that would be better changed to

As a content creator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage Issues needing triage usecase LWS Use Case
Projects
None yet
Development

No branches or pull requests

3 participants