Description
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
andCollection
)? - 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 ofCollectionPage
.
Further work (optional)
- Introduce
Actor
core type, which is disjoint withActivity
andCollection
(discussion). - Introduce
SpecializedObject
core type, which extendsObject
and is disjoint withActivity
,Collection
andActor
.