Hey #ActivityPub friends. Are there any new ActivityPub / Mastodon features I should add to #ActivityBot?

It's a small bot-only ActivityPub server in a single PHP file.

https://gitlab.com/edent/activity-bot/

It can be followed, post images, allow quote posts, etc.

Is there anything else you would like a bot-server to be able to do?

Terence Eden / ActivityBot ยท GitLab

A single PHP file which acts as a basic ActivityPub bot server.

GitLab

@Edent Here are some that I think could be worthwhile:

FEP-c0e0 Emoji reactions (https://fediverse.codeberg.page/fep/fep/c0e0/), I think all you'd need is to accept and maybe store them
FEP-8967 Embedded link previews (https://fediverse.codeberg.page/fep/fep/8967/), would like to see adoption/progress on this
FEP-11dd: Context Ownership (https://fediverse.codeberg.page/fep/fep/11dd/), part of a push for threads that survive reply chain gaps etc.

Also https://fediverse.codeberg.page/fep/fep/8fcf/ & https://fediverse.codeberg.page/fep/fep/8b32/ for infrastructure improvements.

See anything you like?

FEP-c0e0: Emoji reactions - Fediverse Enhancement Proposals

This document describes how emoji reactions are implemented in [ActivityPub] network.

To build on @[email protected]'s bit about threadiverse...

If your blog were exposed as a Group actor and Announce'd posts by the author (a regular Person actor), then your blog could show up on NodeBB as a category, and on the threadiverse as a separate community.

@[email protected]

@[email protected] Just to note, @Edent's blog doesn't run on ActivityBot, it uses the WordPress plugin, so implementation details there are (presumably) not up for discussion here. But ActivityBot improvements would percolate to @colours, @openbenches etc.
@[email protected] ah ๐Ÿ˜… then it should support 1b12 depending on configuration! ๐Ÿ™‚

@Edent Not a feature, but a bug report. The ActivityPub spec doesn't spell it out super clearly, but I'm pretty sure that an Actor's Outbox should be a collection of Activities, not Objects like the single-file server uses.

So the outbox should have "type" => "Create", and the Object will specify the type it is

@samedwards Interesting. Could you point out where it says that?
(Not saying you're wrong; saying I sometimes have difficulty finding the right spec!)

@Edent https://www.w3.org/TR/activitypub/#outbox

> The outbox stream contains activities the user has published

And then an example of a Create activity on a Note https://www.w3.org/TR/activitystreams-vocabulary/#dfn-create

ActivityPub

The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.

@samedwards Aha! Thanks.

So does this look right to you?
http://example.viii.fi/outbox

@Edent Yup, that looks like what I'd expect to see, and mirrors Mastodon as well, ie. https://mastodon.social/users/Edent/outbox?page=true
@Edent Delete and/or updating posts would be amazing. It would become a great reference implementation for basic ActivityPub interactions.
@threkk I'll have a think about how I could do that. Thanks ๐Ÿ™‚
@Edent No, thank you for making this <3

@threkk the bot can now send Delete messages. They're processed successfully by Mastodon.social - so I assume they work elsewhere ๐Ÿ™‚

Will have a think about editing.

@Edent wow, that was fast, thank you!

@Edent

https://example.viii.fi/posts/69aeb347-03d0-dc44-83c8-9c7c488ff6e0.json

It is served by an instance of your bot? The value of inReplyTo in this document is an empty string, which is not a valid URI.

A single file ActivityPub Server

ActivityBot is a simple PHP based server. Get the

@silverpill good spot!
I assume if it isn't a reply, the field should be excluded?

Or should it be null?

@[email protected] I've learned that it should be excluded altogether, and not a null value

@julian @Edent Yep

(although I think we should bring back null)

@silverpill @julian @general
Ah, I assume that `cc` should also be null if it isn't copied to anyone?
@[email protected]  I was passing null around like candy but some implementations choke on that. In general, tolerance of odd values in cc is well handled, but I would just omit or send [].
@Edent @julian It should either be omitted or be an empty array (opinions differ).
@Edent @silverpill don't use nulls. Just omit it.