The value of the
blockedOfproperty of a collection is the actor for whom the collection is the value of itsblockedproperty. It is the inverse property ofblocked. As with other ActivityPub properties, theblockedOfproperty MAY be referenced in the actor byidor as an embedded node object.
I was referring to how descriptive it is or isnāt without the need to consult the spec.
I donāt think thatās a design goal.
What is the benefit of these new terms versus
as:attributedTo?
First, when a client gets the collection ID, you can tell pretty quickly that it is the blocks or blocked collection of an actor. So, the client might not let the user Add or Remove from the collection directly, since itās a special collection managed directly by the server.
A fallback is to use the attributedTo property, and then fetch that actor and check if the blocked or blocks property is identical to the ID (or is an embedded object, or whatever). Thatās perfectly fine, too; blockedOf or blocksOf saves a tiny bit of ambiguity.
Iām trying to provide inverse properties when I can to give more clarity and information, especially when itās a one-to-one relationship. If you donāt find them useful, and canāt imagine your users finding them useful, just leave them out.
On a different topic, the way the FEP is written implies that Block-related collections literally exist in and are managed in the server (see the āProcessing requirementsā section). However, the dereferenced collections are generally just serializations of some internal server representations of blocking relationship.
Youāre right; itās an abstraction. I donāt think it would be clearer to say, āmodify your internal representation so that the collection object you produce will appear to have a new object in it.ā
I think the properties would be more clear if they were named something like
blockedActorsandblockActivities. I find myself repeatedly going back to the FEP to try to determine if I should useblocksorblocked.
I think the names are fine, and Iāve already implemented them, so Iām not going to change them.
If I just implement
blockedand not the reverse properties, would my software still be considered an implementation of this FEP?
The properties are there for you to use if you want, as a tool to help other clients and servers interact with your software. If you use them, please structure the objects they refer to in the way described in this document. If you donāt do that, clients or other servers will not be able to use the information in those objects as easily or effectively; theyāll have to special case their software for your implementation.
Is your naming proper English formulation that I can use in a sentence? Does it equate to good ubiquitous language that is broadly understood, intuitive? That would serve best in the specs. Or is blocked_of a kind of technical notation, maybe a convention in naming linked data relationships, and therefore useful?
āYou can find that in
blockedOf.āāBlocked off? Who is blocked off?.ā
I completely agree. That wouldnāt be clearer although itās about the same level of abstraction as the current wording in the FEP.
Thanks for letting me know. Itās sometimes difficult to determine if an FEP is intended to be documentation oneās personal AP project or a call for community discussion and consensus.
Or, if someone publishes an alternative FEP for this topic, a developer may need to special-case their software for your implementation. ![]()
They are generally a call for feedback, and improvement to the text that is to the discretion of the author, as is the implementation of course. Then afterwards the spec lives on to inform the broader dev community.
Itās absolutely a call for discussion, but this FEP is at its final feedback stage. Itās already been through multiple rounds of renaming and rewrites. You can always define synonym terms as mnemonics:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://purl.archive.org/socialweb/blocked",
{ "blockedActors": "bl:blocked",
"blockActivities": "bl:blocks" }
]
}
Letās hope that if someone does that, they use another namespace, in which case nobody has to special-case anything.
I disagree. I think parallelism for inverse properties is more important:
inbox ā inboxOf
followers ā followersOf
liked ā likedOf
blocked ā blockedOf
If itās important to you, you can define a synonym as a mnemonic:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://purl.archive.org/socialweb/blocked",
{ "blockedCollectionOf": "bl:blockedOf" }
]
}
Oh, I forgot to note: using inverse properties helps with spoofing, too. If A claims that A has a property with value B, it can help to check that B has the inverse property with value A. Probably less of a problem with blocks and blocked but a worthwhile habit to get into.