-
Notifications
You must be signed in to change notification settings - Fork 90
Description
The AP spec states the following:
3.1 Object Identifiers
All Objects in [ActivityStreams] should have unique global identifiers. ActivityPub extends this requirement; all objects distributed by the ActivityPub protocol MUST have unique global identifiers, unless they are intentionally transient (short lived activities that are not intended to be able to be looked up, such as some kinds of chat messages or game notifications). These identifiers must fall into one of the following groups:
- Publicly dereferencable URIs, such as HTTPS URIs, with their authority belonging to that of their originating server. (Publicly facing content SHOULD use HTTPS URIs).
- An ID explicitly specified as the JSON null object, which implies an anonymous object (a part of its parent context)
The JSON-LD spec (version 1.0) states the following:
7.4.3) If expanded property is
@idand value is not a string, an invalid@idvalue error has been detected and processing is aborted. Otherwise, set expanded value to the result of using the IRI Expansion algorithm, passing active context, value, and true for document relative.
The JSON-LD spec (version 1.1) states the same thing:
13.4.3) If expanded property is
@id:
13.4.3.1) If value is not a string, an invalid @id value error has been detected and processing is aborted. When the frameExpansion flag is set, value MAY be an empty map, or an array of one or more strings.
Since these are in conflict, it is not possible to comply with both the JSON-LD specification and the ActivityPub specification simultaneously.
This was noticed as AP implementer Akkoma has recently started federating anonymous objects in accordance with the AP specification (explicit nulls), which has broken federation with implementations performing JSON-LD expansion (for example, Iceshrimp.NET).
Some solutions were proposed in this Akkoma PR thread.