So, an interesting issue came up in the #Fedify repo that I've been thinking about: [#629].
-
So, an interesting issue came up in the #Fedify repo that I've been thinking about: #629.
You know how every #fediverse server uses
schema:PropertyValuein actorattachmentfor profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict #AS2 validators like browser.pub reject it, because the AS2 spec saysattachmentshould only containObjectorLink—andPropertyValueis a schema.org type, not an Activity Streams 2.0 type.The thing is, we can't just drop the type like we did with
Endpoints(#576), because Mastodon and others rely on seeing"type": "PropertyValue"to render profile fields. But at the same time, it's technically not spec-compliant.I'm leaning towards writing a #FEP to formalize this existing practice rather than trying to invent a new type (like
toot:PropertyValueextendingObject), which would be a nightmare to migrate across the whole fediverse.What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.
#fedidev #ActivityPub #ActivityStreams #ActivityStreams2 #AS2 #PropertyValue
-
Something to cc @trwnh and @evan on. And @steve who wrote an ontology for the `toot` namespace (is this elsewhere defined differently?) ..
https://github.com/steve-bate/activitypub-ontology/blob/main/toot.ttl
Options:
- Break spec compliance with a pragmatic FEP hack. Acknowledging that the installed base creates the protocol and/or app (as the delineation is unclear) specs on-the-fly i.e. by means of follow the leader post-facto interoperability.
- Create a type that extends `Object`. What is the best-practice here? In what ways is this done already?
- Go multi-type, type property as a set. There are examples in AS2 specs, but it is unclear to me and I think never clearly defined how this works. Plus multi-type isn't widely supported on fedi either atm, I think.
For last option see e.g. Example 103 in AS2 Vocab spec:
`"type": ["Activity", "http://www.verbs.example/Check"]`
In this example btw, the "result" property, defined as Object or Link is of type "http://www.types.example/flightstatus"
-
Something to cc @trwnh and @evan on. And @steve who wrote an ontology for the `toot` namespace (is this elsewhere defined differently?) ..
https://github.com/steve-bate/activitypub-ontology/blob/main/toot.ttl
Options:
- Break spec compliance with a pragmatic FEP hack. Acknowledging that the installed base creates the protocol and/or app (as the delineation is unclear) specs on-the-fly i.e. by means of follow the leader post-facto interoperability.
- Create a type that extends `Object`. What is the best-practice here? In what ways is this done already?
- Go multi-type, type property as a set. There are examples in AS2 specs, but it is unclear to me and I think never clearly defined how this works. Plus multi-type isn't widely supported on fedi either atm, I think.
For last option see e.g. Example 103 in AS2 Vocab spec:
`"type": ["Activity", "http://www.verbs.example/Check"]`
In this example btw, the "result" property, defined as Object or Link is of type "http://www.types.example/flightstatus"
@hongminhee @trwnh @evan @steve
Regarding the option to create a spec-breaking FEP.. this is only one occurrence, of something that is a more general issue of protocol extensibility best practices to follow.
-
@hongminhee @trwnh @evan @steve
Regarding the option to create a spec-breaking FEP.. this is only one occurrence, of something that is a more general issue of protocol extensibility best practices to follow.
@smallcircles @hongminhee @evan @steve browser.pub is incorrect here -- having a range of Object or Link doesn't mean that schema PropertyValue is not allowed. it means that the value is inferred to be an Object or a Link *in addition to* a PropertyValue. there is no problem as long as there are no conflicting statements being made.
cc @js
-
@smallcircles @hongminhee @evan @steve browser.pub is incorrect here -- having a range of Object or Link doesn't mean that schema PropertyValue is not allowed. it means that the value is inferred to be an Object or a Link *in addition to* a PropertyValue. there is no problem as long as there are no conflicting statements being made.
cc @js
@smallcircles @hongminhee @evan @steve @js also, https://w3id.org/fep/fb2a exists for Actor metadata, and https://w3id.org/fep/e229 describes best practices for extensibility (although that one needs an update per the discussion thread)