@alineblankertz @malteengeler

Regarding the why: When coding Mastodon, Eugen used those parts of the #ActivityPub and #ActivityStreams standards he found useful. For functionality that was not (yet) covered by those standards, he came up with his own solutions and made them part of the Mastodon API which can be considered a quasi-standard now.

When Mastodon was a one person shop, this was a pragmatic way to make progress fast. Standardization bodies are famous for moving slowly, and maybe Eugen was also put off by some of the more eccentric personalities in the ActivityPub community. Now that Mastodon (the organisation) has grown, they should assume a more active role in standards bodies. Perhaps they have – I have not followed these processes closely in recent years.

At any rate, I think it is fair to say that the Mastodon makers and the Fediverse standards community have had a difficult relationship. This is my impression from visiting FediCamp and FediDay events (where Mastodon makers were absent), and some reading in the ActivityPub community forum, e.g.:
https://socialhub.activitypub.rocks/t/mastodon-monoculture-problem/3189/11
https://socialhub.activitypub.rocks/t/discussion-mastodon-and-the-fediverse/1967

Mastodon monoculture problem

I’m not quite sure that’s the answer. I see this forum pushing standardization, but the AP has already been standardized and used by the big players. If anyone or group wants to start adding more standardization beyond AP, they’d need to get buy-in from the “big players” (Mastodon, Pleroma, PeerTube, Hubzilla, Friendica, etc) because that’s who has all the fedi users. If these big players don’t agree with any standardization or FEP, it’s all just going to be ignored.

SocialHub

Linked Data in HTTP Headers rather than in JSON (i.e., JSON-LD), etc

Many Fediverse servers will give you different content depending on the "Accept" header in the HTTP request.

If "application/activity+json" you get ActivityPub/ActivityStreams JSON-LD metadata. If something else, you get actual file/payload.

If we encoded Linked Data as HTTP headers (key-value pairs), we could include the Linked Data with the actual file/payload.

#ActivityPub #ActivityStreams #FediDev #LinkedData #JSONLD

acct-URI like URI for content

We have acct-URI for referring to actors.

Ex: acct:[email protected]

We resolve this to an HTTP-URI using WebFinger.

We don't have an acct-URI like URI for referring to an actor's content.

Which would also be resolved with WebFinger.

Ex: obj:[email protected]/file.ext

I think there are many advantages to being able to refer to content separate from where it is stored.

#acctURI #ActivityPub #ActivityStreams #FediDev #objURI

Merging ActivityStreams Core & Vocabulary

It looks like there is an effort to try to merge the ActivityStreams Core specification with the ActivityStreams Vocabulary specification into a single specification 🎉

https://github.com/w3c/activitystreams/issues/707

...

(I think this merged specification should also rename "Activity Streams" (with a space) to "ActivityStreams" (without a space).)

#ActivityPub #ActivityStreams #FediDev

Combine Activity Streams 2.0 Core and Activity Vocabulary into one document · Issue #707 · w3c/activitystreams

The division between AS2 Core and the Activity Vocabulary goes back to Activity Streams 1.0 and the AS1 base schema. Does this division still serve a purpose for us in 2026? Would there be a benefi...

GitHub

Apparently there is another social-networking protocol (that is not ActivityPub) that uses ActivityStreams, named:

Distributed Social Networking Protocol (DSNP)

...

https://en.wikipedia.org/wiki/Distributed_Social_Networking_Protocol

https://dsnp.org/

https://web.archive.org/web/20130910101658/http://www.complang.org/pipermail/dsnp-interest/

#ActivityStreams #DistributedSocialNetworkingProtocol #DSNP

Distributed Social Networking Protocol - Wikipedia

@TimothyRoes @hpod16

The (over)use of "mastodon" is understandable. Mastodon played a pioneering role in implementing microblogging use cases with the #ActivityPub protocol and is also the most mature product at this point in that 'business domain'. Establishing itself as a brand.

#Fediverse is not a very descriptive name to people unfamiliar with it and the idea that it provides access to many apps that integrate with on a single social network (ideally) interoperably is foreign. They are used to 'platform thinking'. Fediverse weaves a social fabric that allows you to be "social together with others" online.

The europa.eu website now has a #Mastodon icon in its social channel list, that hides all that.

Perhaps most communicative is the name #ActivityStreams (name of W3C standard vocabulary of social actions to support). Then a person would subscribe to EU's activity streams and receive Posts, Articles, Videos, Events, Policies, News. Every service the EU offers adds to the stream.

Stable Outbox Collection Pages

5/

To me,, having the newest page of the collection be varying length one feels like a better strategy.

#ActivityPub #ActivityStreams #FediDev

Stable Outbox Collection Pages

4/

BUT, if instead — if the page with 3 items contains the 3 newest items, then —

Only the newest page would have to be recached. I.e., only 1 page churns not all.

All the other collection pages stay as is, and any cached copies of them are still valid.

Etc.

#ActivityPub #ActivityStreams #FediDev

Stable Outbox Collection Pages

3/

If the page with 3 items contains the 3 oldest items, then —

Every time a new items is added to the collection, then every single collection page will change. I.e., they all churn.

Which means that all cached copies of any collection pages will be invalidated.

Which means a static site generator will have to regenerate all of them again.

Etc.

BUT, if instead —

#ActivityPub #ActivityStreams #FediDev

Stable Outbox Collection Pages

2/

Let's say a collection has 23 items, and each page 10 items in length.

That means you will have 2 pages with 10 items and 1 page with 3 items.

Should that page with 3 items be the 3 newest items or the 3 oldest items.

The choice affects caching and static site ease quite a bit.

Here is the answer...

#ActivityPub #ActivityStreams #FediDev