Skip to content

Disjointness of Activity Streams types #641

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

Open
silverpill opened this issue Mar 1, 2025 · 4 comments
Open

Disjointness of Activity Streams types #641

silverpill opened this issue Mar 1, 2025 · 4 comments
Labels
Needs primer page Need to add a page at https://www.w3.org/wiki/Activity_Streams/Primer on this topic Next version Things that should probably be resolved in a next version of AS2

Comments

@silverpill
Copy link

silverpill commented Mar 1, 2025

Activity Streams 2.0 defines 8 core types and a bigger number of extended types. All of them are sub-types of either Object or Link, which are described as disjoint, but specification doesn't say anything about disjointedness of derived types.

There are two situations where disjointness may matter:

  • Sub-typing. Is it possible to define a new type that extends two or more core types (e.g. Activity and Collection)?
  • Multi-typing. Is it possible to create an object with two or more extended types (e.g. ["Accept", "Person"])?

Most (if not all) of these combinations don't make sense, and as an implementer I would prefer to not deal with them, and fortunately I don't have to, because existing implementations don't use combinations. However, while there is no guidance on working with combinations of standard types, they are not explicitly forbidden. One of the core types, OrderedCollectionPage, is even defined as a sub-type of both OrderedCollection and CollectionPage, implying that multiple inheritance is possible.

Proposal

  • Discourage the use of type combinations in a Primer page (both multiple inheritance and multi-typing). Note that this only applies to standard types; for extension types, multi-typing is required by the standard.
  • Make this a requirement in AS-next. Re-define OrderedCollectionPage as a sub-type of CollectionPage.

Further work (optional)

  • Introduce Actor core type, which is disjoint with Activity and Collection (discussion).
  • Introduce SpecializedObject core type, which extends Object and is disjoint with Activity, Collection and Actor.
@silverpill silverpill changed the title Disjointedness of ActivityStreams types Disjointness of ActivityStreams types Mar 1, 2025
@nightpool
Copy link
Collaborator

nightpool commented Mar 1, 2025 via email

@silverpill
Copy link
Author

Accept, Note and Note, Question don't make sense to me. This is one of the reasons why I don't want to deal with them. The second is extra implementation complexity.

I think justification should be given to allowing documents with unusual types and undefined behavior, preferably in the form of implementations that use them.

@evanp evanp changed the title Disjointness of ActivityStreams types Disjointness of Activity Streams types Mar 14, 2025
@evanp
Copy link
Collaborator

evanp commented Mar 14, 2025

This is definitely worth a Primer page. I think having some understanding of how multi-typing and inheritance work in Activity Streams is important. It's definitely waved at in the spec, and could use more clarification.

I am reluctant to see non-backwards-compatible restrictions introduced in future versions of Activity Streams. We can definitely deprecate some behaviours and encourage others, but making strict requirements that previously acceptable features are no longer allowed is probably not the path we need to take.

I am going to mark this issue as Needs Primer. I think it is worth discussing for the next future version, so let's continue there. I would ask @silverpill if you could propose the idea of the Actor or ContentObject types in a separate issue, so we can track them separately.

@evanp evanp added Needs primer page Need to add a page at https://www.w3.org/wiki/Activity_Streams/Primer on this topic Next version Things that should probably be resolved in a next version of AS2 labels Mar 14, 2025
@silverpill
Copy link
Author

if you could propose the idea of the Actor or ContentObject types in a separate issue, so we can track them separately.

I am currently developing these ideas in FEP-2277. Will open issues later if that FEP gains enough support from other implementers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs primer page Need to add a page at https://www.w3.org/wiki/Activity_Streams/Primer on this topic Next version Things that should probably be resolved in a next version of AS2
Projects
None yet
Development

No branches or pull requests

3 participants