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

MSC3574: Marking up resources #3574

Open
wants to merge 26 commits into
base: main
Choose a base branch
from
Open

Conversation

gleachkr
Copy link

@gleachkr gleachkr commented Dec 18, 2021

Rendered

Signed-off-by: Graham Leach-Krouse gleachkr@gmail.com

Implementation:

@turt2live turt2live changed the title Initial version of resource markup proposal MSC3574: Resource markup proposal Dec 18, 2021
@gleachkr gleachkr changed the title MSC3574: Resource markup proposal MSC3574: Marking up resources Dec 18, 2021
@turt2live turt2live added client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal proposal-in-review labels Dec 18, 2021
Copy link
Contributor

@HarHarLinks HarHarLinks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would be nice if this msc gave some rationale for its design choices and threads section in the alternatives section.
maybe it's to early but generally this seems like a thing that would integrate with widgets, so perhaps that's something to consider when speccing.

@@ -0,0 +1,157 @@
# Marking up resources

This MSC proposes a way to annotate and discuss various resources (web pages, documents, videos, and other files) using Matrix. The general idea is to use [Spaces (MSC1772)](https://github.com/matrix-org/matrix-doc/pull/1772) to represent a general resource to be annotated, and then a combination of child rooms and [Extensible Events (MSC1767)](https://github.com/matrix-org/matrix-doc/blob/matthew/msc1767/proposals/1767-extensible-events.md) to represent annotations and discussion. This MSC specifies:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you introduce the msc as relying on spaces, rooms (and formerly threads). if we read a bit further, we learn that a space will represent a "file" that is being discussed and seemingly rooms are the individual annotations. it is not clear to me how threads play into this?

to me it seems more obvious that an annotation would be represented by a thread start, and then the discussion of that annotation is the thread. what is your design intention with rooms instead?

this picture in my mind is a bit influenced by the idea of full screen widgets as we have seen them in twim and matrix live. the pdf and website annotation apps are specialized matrix clients. in my minds eye I see a mashup of these ideas. the annotations could be backwards compatible by loading "the file" in a widget and then compatibility of your markup spec with regular clients like element allows people to discuss using the regular ui.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I've mentioned the widget idea, and discussed the rationale for not focusing on threads.

* add discussions as threads alternative
* note possibility of a widget interface
Initial commit before PR
This approach fell away during drafting
* add discussions as threads alternative
* note possibility of a widget interface

1. In practice, near-term prospects for interoperability might be limited. There are not many [implementations](https://w3c.github.io/test-results/annotation-model/all.html) in the wild. Even, for example, Hypothes.is supports only part of the w3c data model, and [apparently only in an undocumented read-only capacity](https://github.com/hypothesis/h/blob/28c2c5bdf5d85f12307ed56f90995ad1c1f214ac/h/routes.py#L122). If desired, bridging might be better accomplished by using APIs for individual annotation services directly, together with the minimal serialization proposed above, rather than by routing through an incompletely supported data model.
2. The w3c spec's selectors for PDF annotation are somewhat limited, and more generally the set of selectors built into the spec are not likely to cover all use cases. The w3c spec does incorporate [an extension mechanism](https://www.w3.org/TR/annotation-vocab/#extensions), via JSON-LD contexts. Perhaps the matrix spec for document markup would want to eventually incorporate a well-documented JSON-LD context for any extended selector types that become important.
3. The w3c spec is sufficiently expansive that it overlaps to some extent with existing Matrix functionality. For example, you could have an annotation targeting a matrix event, whose "purpose" (a field allowed by the w3c spec) is "reply" (a value listed in the spec). Care would need to be taken not to create confusing duplications like this.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taking a step in the other direction, we could consider having a reply to an annotation as annotation.
I.e., given we already introduce a Room for annos about a Resource, why not go a step further and say an Anno is yet another Resource you can anno.

We'd need a URI in order to refer, eh! Luckily an event is uniquely identifiable by it's hash.
Which can be represented as a Hash URI.
E.g., hash://sha256/bafy...AliceAnno1

Not sure whether Web Annotation support JSON Pointer as Selector. Given it does, we can point to a specific bit of annotation user's interested in, likely it's text.
E.g., hash://sha256/bafy...AliceAnno1#/content/body
And bolt on range selector atop if user wants to reply to a particular bit of it. Akin to Rich Reply.

Whether this uniformality is a path to madness is an open question.:)

As a side note, Zettlekasten method is popular for knowledge engineering. Curious whether it could be modeled with Web Anno. Anyways, interesting idea, kuddos for thinking on it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants