[freamon] Currently working on: Following Users

There's more than one way to do this, of course. For group-based forums like piefed, I think the most promising way is to automatically create a local community for each person that someone wants to follow. Incoming activity is then put into the appropriate community, and so you have a consistent UI of UserA has posted to technology@wherever, and UserB has posted to [UserB's community]@piefed.social. This avoids the '2 websites in 1' look that can happen when a site wants to display both lemmy-like communities and mastodon-like microblogs.

I haven't done too much work on it, in case this idea gets shot down in flames. So far, what I've got is:

  1. A user searches for another remote user, e.g. @freamon@pixelfed.dk

  2. When they're found, the user is offered the opportunity to create a 'Follower Community' (for want of a better name. I've been using 'fan club', but that's maybe a bit naff)

  3. The community is created, formatted from the profile id, so <a href="https://pixelfed.dk/users/freamon" rel="nofollow ugc" target="_blank">https://pixelfed.dk/users/freamon</a> becomes <a href="https://piefed.social/c/pixelfed_dk_users_freamon" rel="nofollow ugc" target="_blank">https://piefed.social/c/pixelfed_dk_users_freamon</a>

  4. A follow request is sent to the remote user (from the user doing the search, or a dedicated bot account, maybe)

  5. Incoming activity will just be to activitystreams and followers, so there won't be any matches in 'to', 'cc' or 'audience'. In that case, 'attributedTo' is looked at, using the same conversion as above: so something from <a href="https://pixelfed.dk/users/freamon" rel="nofollow ugc" target="_blank">https://pixelfed.dk/users/freamon</a> will be sent to <a href="https://piefed.social/c/pixelfed_dk_users_freamon" rel="nofollow ugc" target="_blank">https://piefed.social/c/pixelfed_dk_users_freamon</a> if it already exists.

  6. The posts will show in the community like any other. Other users can then subscribe to the community in the normal way, and get updates whenever the remote actor publishes something for their followers.

  7. Posts from Mastodon would need another post-type to look their best (something that simulates how they look over there). Posts from Pixelfed already display well using Masonry:
    On pixelfed:
    https://i.postimg.cc/L4rLKfMw/pixelfed-screensho.jpg
    On piefed:
    https://i.postimg.cc/pLP9RJcG/piefed-screenshot.jpg

  8. Post replies and upvotes (maybe) should make their way back to remote user, the same way they do if they'd actually made a post in a local community.

Random thoughts:
There would need to be an Undo Follow sent if the community was deleted.
A local community called c/pixelfed_dk_users_freamon looks a bit ungainly, but there's likely a way communities like this could be rendered as something like [SELF] in the homepage feed.
I realise pixelfed are planning to implement Groups, but that hasn't really worked out for mastodon, so we'll see how it goes. I think the ability to follow individuals will still be useful.
The remote user could be made a moderator for the local community, and it set to 'mod posts only' so it would only contain stuff from them.
This approach doesn't require any database changes.

I've just bashed this together for now - looking to get your thoughts before I continue ...

rimu,
@rimu@piefed.social avatar

Whoa. No way, sorry.

Both users and communities are represented in ActivityPub as actors (a 'Group' is just a type of actor). We would then have two actors for each user. I don't know how we would make WebFinger work well with this, or how other ActivityPub-based software would cope with it.

Because our users are Actors, we can easily code PieFed to do Follow activities on them in a way that other AP software will understand. It'll be the same as a Follow on a community, except with a different target. If we created a fake community for each user then we wouldn't need to code any new Follow logic (a very minor gain - Follow is one of the simplest activities there are) but we would need to work around the clumsy relationship between this fake community and it's user, in all parts of the system, forever. Nope, nope, nope.

I'm happy to work with you to impart the ActivityPub fundamentals you need to tackle this elegantly and discuss software architecture changes. We'd need a video call or two and share screens, etc. Please use https://cal.com/webdevsolutions/30min to book a time.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • piefed_meta@piefed.social
  • kavyap
  • thenastyranch
  • cubers
  • ethstaker
  • InstantRegret
  • DreamBathrooms
  • ngwrru68w68
  • magazineikmin
  • everett
  • Youngstown
  • mdbf
  • slotface
  • rosin
  • GTA5RPClips
  • JUstTest
  • khanakhh
  • normalnudes
  • osvaldo12
  • cisconetworking
  • provamag3
  • Durango
  • tacticalgear
  • modclub
  • Leos
  • megavids
  • tester
  • anitta
  • lostlight
  • All magazines