Skip to content

Multiple inbox feeds with different sorting and filtering algorithms #490

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
evanp opened this issue Jan 20, 2025 · 5 comments
Open

Multiple inbox feeds with different sorting and filtering algorithms #490

evanp opened this issue Jan 20, 2025 · 5 comments
Labels
Needs FEP Needs a FEP Needs Primer Page Needs a page in the ActivityPub primer

Comments

@evanp
Copy link
Collaborator

evanp commented Jan 20, 2025

The use case is the ability to browse a home timeline with different, user-selected algorithms for sorting and filtering the activities there.

With the ActivityPub API, we have essentially one inbox feed (but see cardinality of properties). It's required to be in reverse chronological order by the AP spec.

I think it's reasonable for ActivityPub API clients to do sorting and filtering of that inbox feed. (Some siloed social networking platforms explicitly disallow this in their developer terms of use, for various reasons, but I don't know of one of those platforms that implements the ActivityPub API.) So, the client fetches the activities in reverse chronological order from the server, and then re-orders or filters them according to the user-defined algorithm.

Performance-wise, this is not a great solution. It would probably require a lot of pre-fetching happening in the background.

I think it would be out of scope to define how those clients would present the different sorting/filtering options to a user.

We don't have an easy way for an ActivityPub API server to provide multiple inbox-like feeds with different algorithms. We have the streams property, but it's really loosely defined, and it's not just restricted to Collection objects that represent something like an inbox or home timeline.

I see a few ways to implement multiple server-side "home feed" collections:

  • Use the inbox property with multiple values. This would probably break a lot of Fediverse software, which expects this property to be a single value, and usually a single URL.
  • Define a way to add multiple inboxes to the streams property, and maybe have a way to signify that they are essentially the inbox sorted or filtered in some way.
  • Define a new ActivityPub extension property to provide a list of available inboxes, like, I dunno, availableInboxes.
@evanp
Copy link
Collaborator Author

evanp commented Jan 24, 2025

This was initiated by Bob Wyman on the public-swicg mailing list.

@evanp
Copy link
Collaborator Author

evanp commented Jan 24, 2025

In terms of work to be done, I think there are a few items to discuss.

  • Adding a primer page on the topic. There doesn't seem to be one on the topic right now.
  • Add a FEP.

@evanp evanp added Needs Primer Page Needs a page in the ActivityPub primer Needs FEP Needs a FEP labels Jan 24, 2025
Copy link

This issue has been labelled as potentially needing a FEP, and contributors are welcome to submit a FEP on the topic.
Note that issues may be closed without the FEP being created; that does not mean that the FEP is no longer needed.

@ThisIsMissEm
Copy link

It's worth noting that in the linked data world, the go-to solution recommended for filtering and sorting datasets is to implement a SPARQL endpoint, however, I do believe we'd be well served by having some basic "views" or similar existing within ActivityPub.

These two FEPs may be relevant:

@nightpool
Copy link
Collaborator

This is, to my understanding, the intention of the streams property. I think it would be reasonably straightforward to give each streams ordered collection a name and display it in the user's clinet UI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs FEP Needs a FEP Needs Primer Page Needs a page in the ActivityPub primer
Projects
None yet
Development

No branches or pull requests

3 participants