As someone who creates ActivityPub services, it's often a puzzle to figure out exactly how someone else's service federates. Like, what does service X do when I send it a Delete/Note activity?
In an attempt to be a good citizen, I've drafted up a FEDERATION.md file for my fediverse event organizing service I'm working on. Here it is:
I've also started a meta-discussion about how we might start documenting this stuff generally:
But it can be hard to navigate, so I wrote a guide to navigating it here:
I agree that we need a solid place where we discuss the Codes and Codices of Interoperability.
@redaktor (my baby) has got the same problem with the "multilanguage" and "topics" and "OAuth weblayer" - commented at the thread.
It sounds you don't want mastodon but one of the other software where the UX is more organic, just like yak wool ;)
I am doing https://socialhub.activitypub.rocks/c/software/redaktor-me/22
Server - 60% ready.
Basic components - ready
overall 50% ready before release
@darius for what it worth, this is what we have for Funkwhale: https://docs.funkwhale.audio/federation/index.html
Maybe we could agree on a nodeinfo field to put a link to this kind of documentation?
@eliotberriot that's very nice! I will read this in more detail when it's not midnight
@darius sure! Also, if we can agree on a format to describe activities, we could also expose this in nodeinfo directly, e.g:
SupportedActivities: [Create/Event, Delete/*, Follow/*]
@darius I’ve wondered this a LOT! What a great idea
@darius Sounds Great ! Good luck!
@darius excellent idea
Having a question about events being actors
-> The spec. says "Represents an individual person"
I would rather expect "Service"
or ["Service", "Event"]
See "The core Actor Types include"
@sl007 Does any activitypub software allow someone to "follow" a Service? (like, spec aside, I want this to work with existing software and am willing to fudge the types)
@darius @sl007 not yet, but the thing I work on makes no distinction between types of actors. It's missing the important bits though, federation and distinguishing between actors than can allow/deny a request and the ones that the server should just accept for (like a service).
Any software should allow multiple values unless not specified else (maybe only 'id') so it could also be ["Service", "Event", "Person"]
Personally I think "Person" is semantically misleading.
But "Service" is a Core Actor Type and the spec. clearly defines how to deal with Actors.
If activitypub software does not allow to "follow" an actor something must be wrong with the software ;)
> Personally I think "Person" is semantically misleading.
I'm not disagreeing but wondering about your reasons for thinking that?
(I have my own.)
Well, I guess the reason for the different https://www.w3.org/TR/activitystreams-vocabulary/#actor-types are that they are semantically distinct.
Also an event isn't always organised by a 'Person', it might also be a 'Group' or 'Organization' …
> an event isn't always organised by a 'Person', it might also be a 'Group' or 'Organization' …
Usually is unless it's a small party.
I mean, since I am doing an ActivityPub server / client myself, I would have the following problem to federate with gath.io :
See https://github.com/redaktor/widgets-preview (still a mess) –
The widgets e.g. "Cards" do render _all_ the AP types and differently.
I am currently working on the layout for "Event", see screenshot (random words)
It will have "where" and "when" below the headline (after coffee) …
However, for all gath.io events it would now render a "Person" card …
I doubt that it helps ActivityPub if we try to downgrade anything to the very limited possibilities of mastodon UI.
I think mastodon would "convert it".
Also see e.g. https://www.w3.org/TR/activitypub/#conformance
ActivityPub conformant Server
"This designation applies to any implementation of the entirety of the server portion of the client to server protocol."
This does not mean "only Note object type, only Person actor type, no i18n support, few properties etc."
It means "the entirety" …
@sl007 @cwebber why would I release AP software that publishes events nobody I know can consume today? If there were a way for me to publish these as both an Event and as a Person for compatibility I would definitely consider it. That way, the gathio software can get used by current popular software, newer clients that are more compliant could benefit from gathio in the ecosystem, and then the popular software could hopefully eventually support the "correct" object vocabulary.
How about a task for the
• "Event Federation"
Apart from being an actor and "type" a lot of 'flows' might be involved like "Offer"/'tickets' or "Question"/'are you going?'
I would be thrilled to let Hometown and redaktor federate like a superhero.
Also Hometown currently supports all Actor types, see https://github.com/hometown-fork/hometown/blob/hometown-dev/app/services/activitypub/fetch_remote_account_service.rb
So how about ["Application", "Event"] because mastodon/hometown flags "Service" as '(bot)'
@sl007 sorry it was very late last night and there are some critical issues with the actual semantics here that I'm worried about. It seems that Application would be the thing someone would follow? But that would mean I'd have to create an Application for each event, which would then emit Events, right? I can't just have a top level Application for Gathio because people don't want to follow the entire instance, just individual events (lower case, the human concept of a birthday party I mean)
@sl007 the big big problem for me is that I believe parties and concerts should be able to be Actors in and of themselves. This is not supported by the AS 2.0 spec if we are being strict about hewing to it.
@sl007 also, I forgot because it's been a long time, and it's possible that I may need to update FEDERATION.md but the gathio Person does emit Event objects, which are consumed correctly by Friendica
I see, then it is not very different from like redaktor will handle it …
Do you attend the Conference?
I would like to make it a task for the Hackathon of
or a Birds of Feather session.
So, which software would _not_ support it ?
I think any software supports "Actors" ?
For mastodon and pleroma it is described here :
[only downside: mastodon will show '(bot)' after the event name in the profile]
Redaktor does it the same way than pleroma (and skohub, see previous comment) …
@darius when I worked on kibou I wanted to write down how Masto does things and I never managed to
@darius do you really send Delete/Event in your requests instead of Delete/EventID ? That seems like a terrible data redundancy.
@mariusor Yes. I've found that in the wild, sending Activity/Object generally always works, whereas a lot of implementations don't dereference correctly, so I err on the side of embedding the object unless it's like, media files.
What is the issue with sending redundant data out? Ultimately if I send a dereferenceable URI, the receiving server will ask me for the data regardless. At least this way I'm packing it into a single HTTP request instead of multiple.
@darius probably I haven't thought this through, but why would a server require the full object to be deleted if the authoritative instance(the one that generated it) is requesting its deletion? What is the server to do if the representation you're sending is slightly different than the one it already has? Besides the ID no other information in that object is relevant.
Outside of Create/Update I don't see reasons why an Object property should be anything else than an IRI or a list of IRIs.
Hometown is adapted from Mastodon, a decentralized social network with no ads, no corporate surveillance, and ethical design.