Ahh, attributedTo
, my behated…
We started with the author property from AS1.0. Somewhere along the way that got lost, then reintroduced as attributedTo
, and the scope got widened so now anything can be attributedTo
anything. attributedTo
in what sense? Well right now everyone means what AS1.0 called “author” - what we started with - though they probably mean “publisher”,
(What did AS1 implementations mean? That’s actually simultaneously more and less clear. What we today call Create(Note)
, AS1 would call post(note)
; there, publisher as the actor
of the post
activity as distinct from the author
of the note
makes more sense than it does with Create
’s actor vs the note’s attributedTo
)
–
Anyway, what I’m trying to get at is that in the road to the creation of AS2.0, there was an awful lot of semantic generalisation. Create
is the result of squishing create
, post
and author
together (yes there was also an author activity! no I don’t think anyone had a concrete use case for it or ever used it!). attributedTo
is a generalisation of author
Some of this makes sense: if we’re using attributedTo
to strictly mean author
, we’re probably using it wrong (if you imagine a properly rich implementation of AP by a news site, probably people would want to stuff the publication’s name into the attributedTo
property for backwards compatibility, and add a new author
property for the actual authors of the article); but you have to wonder how this useful generalisation got extended further to the point the Range of the property is now Link | Object
.
The result of this applied to the entirety of AS2 is a deeply, deeply unhelpful and implementer hostile situation where nearly every property applies to any object and can point at any object.
(If I were placed in the position of AS2 spec editor, I think I would look at what variants are used by real world implementations and ruthlessly deprecate every other option)
So while AS2 as written permits this use case, I deeply dislike the use of it (I also dislike the use of the Add
activity here, though not as much; as an implementer concern, it results in a proliferation of URI indexes which are annoying to scale in a way that supports tiered storage on long-running instances with growing databases if you have to track the URI of every special collection - especially exacerbated if you have to do so for every post to track the replies collection)
Broadly though, I like the implementation; I just think:
- We shouldn’t use
attributedTo
. Yeah, I know AS2 says we can, but that way lies implementer madness; and
- If we’re using the
Add
activity, we add some required property to signal the relationship the container has to its’ parent)