Follow

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:

github.com/dariusk/gathio/blob

I've also started a meta-discussion about how we might start documenting this stuff generally:

socialhub.activitypub.rocks/t/

@Darius Kazemi @˗ˏˋ wakest ˎˊ˗

FWIW, we accept Accept/Event, Reject/Event, and TentativelyAccept|TentativelyReject/Event as RSVP responses. Question seems ill-suited to the task. I believe this is also what Friendica does, but I'll have to verify. ActivityPub didn't exist when I originally created the Events interface forthat project.

@mike @liaizon Question is not an RSVP response: it is an invitation to RSVP directly from your client.

@mike @liaizon (thanks for reading, btw! I'm glad that the document is doing what it should: enabling us to instantly have substantive conversations about interop)

@Darius Kazemi @Mike Macgirvin ⚡ It appears we're not spec compliant either. AS-Vocab implies that events are sent as Invite/Event with possible responses of Accept/{Invite/Event} (which is a recursive or embedded activity) along with Reject and the two Tentatives. If I'm going to change our implementation, I'd prefer to change it to precisely match the spec rather than create a separate poll and two separate activities. Currently a Create/Event is treated as an implicit invitation to those in the activity distribution list as that's the model we started with a decade ago.

@darius
Is there an #RFC for #ActivityPub like there is for every(?) other protocol on the Internet?

This should link to the RFC for #HTML:
https://tools.ietf.org/html/rfc7231

@dsfgs It's a W3C protocol divided among 3+ documents. The main page for it is here activitypub.rocks/

But it can be hard to navigate, so I wrote a guide to navigating it here:

tinysubversions.com/notes/read

@darius

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.

and pinging
@bascht

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
will hurry

@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/*]

@eliotberriot

"agree" sounds like a pledge that everyone should sign …
This can be helpful as a guide for others. I write a proposal.
We could discuss it in a closed meta group, ok ?

@darius come and see europe where it is still bright ;)

@sl007 @darius sorry if it came out wrong, I'm not implying anyone must "sign" this, mostly that if a handful of implementation can agree on a lightweight format/schema/vocabulary, it could make sense to expose this programatically :)

@sl007 @darius sorry if it came out wrong, I'm not implying anyone must "sign" this, mostly that if a handful of implementation can agree on a lightweight format/schema/vocabulary, it could make sense to expose this programatically :)

And I'd be happy to join a discussion about this

@eliotberriot @darius

No, you don't came out wrong.
The pledge has some other aspects.
But to put this in has the nice factor of reminding.
Just let me write it before we maybe send it to trash - will do anyway - need to fight fever anyway to become clear for typescripting again ;)

@darius

Having a question about events being actors

'id':`https://${domain}/${eventID}`,
'type': 'Person'
-> The spec. says "Represents an individual person"

I would rather expect "Service"
or ["Service", "Event"]

See "The core Actor Types include"
https://www.w3.org/TR/activitystreams-vocabulary/#actor-types

@sl007
What meaning of the word "event"?
Like something that some people put on and others go to, like a conference or a show?
Or something that happened, like somebody did some work on something, like I mopped the floor?
Or some other meaning?
@darius

@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[1] 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).

[1] https://github.com/go-ap/fedbox

@mariusor @sl007 this is a cool project, I especially love the `processing` repo!

@darius @sl007 that's the one I'm having the most issues with as there are very little details in the spec for it. :D

@darius @sl007 In #SkoHub (https://skohub.io) SKOS concepts are also an as:Service and can be followed. See e.g. the ActivityStreams representation of https://w3id.org/kim/hcrt/slide - > https://w3id.org/kim/hcrt/slide.jsonas

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 ;)

@sl007
> Personally I think "Person" is semantically misleading.

I'm not disagreeing but wondering about your reasons for thinking that?

(I have my own.)

@bhaugen

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' …

@sl007
> 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.

@sl007
Are your issues with Person coming from that other thread where @darius proposed Event.type = Person apparently following gath.io?

If so, I understand and agree.

Or do I misunderstand..???

@bhaugen @darius

Yes, it is coming from that thread – (?)
I am confused as well with mastodon UI here, sometimes it shows the "Zeige Konversation" note [maybe "show conversation"] but sometimes it does not.

@darius

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 …

@darius

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" …

cc @cwebber

@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.

@sl007 @cwebber (I'm working on Event support for Hometown by the way)

@darius @cwebber

How about a task for the
https://conf.activitypub.rocks
Hackathon

• "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.

@darius @cwebber

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
"SUPPORTED_TYPES"

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

@darius

I see, then it is not very different from like redaktor will handle it …

@darius @sl007 the way I would do it to remain compatible to the spec, I would have a Group actor represent the addressable part of the Event. The top level actor for the whole server I would make into a Service actor.

@sl007 @darius Hey Sebastian, no I didn't plan to attend. I have too much going on at the moment to dedicate to other things, sorry. :)

@mariusor

shame, however, the keynote of
@darius
and all talks will go to peertube so at least you can watch them anytime :) here
@apconf

@sl007 @darius @apconf despite not attending I feel like I thank you for putting this together. :)

@darius @cwebber

So, which software would _not_ support it ?
I think any software supports "Actors" ?
For mastodon and pleroma it is described here :
https://git.pleroma.social/pleroma/pleroma/-/merge_requests/1616

[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.

Sign in to participate in the conversation
Friend Camp

Hometown is adapted from Mastodon, a decentralized social network with no ads, no corporate surveillance, and ethical design.