mastodon.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
The original server operated by the Mastodon gGmbH non-profit

Administered by:

Server stats:

343K
active users

@reiver ⊼ (Charles) :batman:

1/

A Fediverse Custom Feed is — part UI/UX and part Protocol.

🧵

2/

The Protocol part of a Fediverse Custom Feed is a new Actor Type — the "Feed".

We already have Actor Types:

• Application
• Group
• Organization
• Person
• Service

w3.org/TR/activitystreams-voca

Add "Feed" to that list.

3/

The UI/UX part of a Fediverse Custom Feed is making apps understand what to do with a Actor type="Feed" actor.

For example — when the user "Follows" an Actor type="Feed" actor, then the app could make the content from that actor show up next to the home-feed, as an alternative feed.

4/

Fediverse Custom Feeds are a powerful technology!

And are one piece in creating a "plug-in" system for the Fediverse.

@reiver you don't need a new type for this btw

@trwnh

I think, if you care about user-experience (UX), you probably do need a new Actor type (or somewhere else to put the information).

I will explain, by explaining the problem that the new Actor type="Feed" is trying to address.

...

@trwnh

I think you can get a feel for this if you consider the Lemmy Fediverse software and compare it to Mastodon.

So, let consider 2 Fediverse IDs that on a Lemmy server.

Here is one:

@memes@lemmy·world

And:

@cm0002@lemmy·world

(Note I used U+FF20 for the at-symbol rather than U+0040, to prevent tagging them.)

...

@trwnh

The former one (@memes@lemmy·world) is Actor type="Group".

The latter one (@cm0002@lemmy·world) is Actor type="Person".

...

@trwnh

When I look at the latter (@cm0002@lemmy·world), which is Actor type="Person", I see this in the Lemmy front-end.

(Which is reasonable.)

...

@trwnh

When I look at the latter (@cm0002@lemmy·world), which is Actor type="Person", I see this in the Mastodon front-end.

(Which is also reasonable.)

@trwnh

When I look at the former (@memes@lemmy·world), which is Actor type="Group, I see this in the Lemmy front-end:.

Which is good. It is a reasonable UI for this type of thing.

...

@trwnh

And note that Lemmy is showing something different depending on whether Actor type="Person" or Actor type="Group".

And I think this is a good thing from a user-experience (UX) point of view.

...

@trwnh

Now, how does the former (@memes@lemmy·world), which is Actor type="Group", look like in the Mastodon front-end.

The answer is — currently, not good. It is actually a mess.

...

@trwnh

And, the reason that any Actor type="Group" is a mess in Mastodon is that it presents Actor type="Person" and Actor type="Group" the same.

But to have a good user-experience, it shouldn't.

Mastodon should do something more like Lemmy, and present them differently.

@trwnh

So, now lets consider feeds.

To create a good user-experience (UX), the front-end should NOT present Actor type="Person" and Actor type="Feed" the same.

And the front-end need way to be able to tell when to show one presentation versus another.

That information should be somewhere in the activity file (i.e., the application/activity+json file).

A new Actor type seems like a reasonable place to put that information.

@reiver or mastodon could just display things differently using existing types — which btw, actors in AP are not limited to the 5 types in AS2. anything can be an actor as long as it has an inbox and outbox. protocol-wise there’s nothing stopping you from following a Collection for example. it’s a mastodon limitation that they only allow those 5 and force them through the same interface/abstraction.

@reiver i built on #fedialgo to make a customizable feed algorithm that is pretty much how i interact with #mastodon these days. it's available as an #npm package.

here's the demo app: github.com/michelcrypt4d4mus/f

this is what the demo app looks like:

@cryptadamist

Cool.

Is a fedialgo custom-feed exposed over ActivitPub / ActivityStreams?

@reiver no, #Fedialgo isn't an app - it's an npm library for usage in other apps. i've thought about deploying the demo app linked above to vercel or something so non-devs can use it more easily (not that it's very hard to run locally but you do need to run a few commands in terminal) but so far have not.

i will probably see if i can integrate it into #Phanpy at some point.

@cryptadamist @reiver This is super interesting. I have been working on something similar to create my own custom feeds as well but this might get me ahead. I’ll check it out.

@schmeeds @reiver i was able to build on a solid foundation but i think i made significant improvements to the original codebase such that it's hopefully easier to work with (and much better documented / commented). let me know if you have any questions.