👋 Everyone: see what you think:

The Seven Deadly UX Sins Part 2: The Road To Redemption: timothychambers.net/2025/06/24

Don't claim that these are final answers - but hope they help continue constructive motion to final answers!

cc: @renchap @dansup
@cheeaun @scottjenson @newsmast @andypiper @ricmac @evan @laurenshof @pfefferle @fediversenews @timbray

@tchambers @renchap @cheeaun @scottjenson @newsmast @andypiper @ricmac @evan @laurenshof @pfefferle @timbray

I think we are hitting the limitations of AP, but I have high hopes that one day it's rewired to use Fediverse Discovery Providers (or something similar) and stop relying on inbox/outbox

@tchambers @renchap@dansup @cheeaun @scottjenson @newsmast @andypiper @ricmac @evan @laurenshof @fediversenews @pfefferle @timbray

Just waiting for post #3 where you connect a funding model to all of these things. Where you sort out how the 12 people at Mastodon or the 1 person at PixelFed can make all of your dreams come true thanks to their newly discovered funding?

Look, it's great that you have ideas. All of those ideas would be more meaningful if they came with a check attached.

A number of folks are looking at conversation containers, now that this effort has solidified. This solves so many thorny decentralisation issues that at this point if you don't provide containers to do things like groups, circles, comment control, and conversation completion (one of the bullets), you've probably painted yourself into a corner. The only way out of that corner is to track down conversation elements across the fediverse.

Yeah, we did that too - and in case folks haven't noticed, it doesn't scale. So we looked for a solution.

That (scaling) doesn't bother me, because we provide a more intimate and personal social networking experience, but for the projects trying to compete with the corporate  silos;  if it doesn't scale it doesn't actually work. Conversation containers can provide complete, moderated conversations at scale. Moderated by the topic creator, instead of an instance admin that you've never met -- and whose values and anxiety triggers are unknown.

But to do this correctly, we also turned off the public timeline (it's optional) and stopped making everything public by default. These are all personal choices, but in a safer place, the defaults should be for more safety and less harassment potential. And we use OpenWebAuth for one click interactions with remote websites. This allows protected content both over ActivityPub and also to the same audience via the web -- by signing the web requests, just like you would do for requesting ActivityPub objects. OpenWebAuth just does this using webfinger and without requiring your browser to have a copy of your private key (which I probably wouldn't recommend).

So, I am still reading through this but I see a–to me– quite obvious issue with having a roulette of "trusted servers"

…What if your software barely even has other instances, letalone ones that would be considered "trusted"?

App.wafrn.net is to this day basically the only Wafrn instance that we know will be hear in 1-3 years from now; Even if only because we develop directly here; We simply don't have other instances to point to if we wanted to

Do we just note this down as being a painpoint of newer, less widespread software? Is the solution to just wait?

Granted we have some issues as to how we do updates that make running an instance sort of annoying; We don't do versioning, just to name one example. But I really feel like that point – while we were explicitly mentioned – kinda left out cases like ours

That’s Tim. Fantastic article! I’ll have more to say after I re-read this a dozen times, but I want to get out early with an answer to #3: remote actions…

This is why I built fep-3b86 “Activity Intents” which lets people take remote actions from their home server with one click and zero fuss. No JS, no funny protocols required.

Could you please weigh in on this?

@tchambers @renchap@dansup @cheeaun @scottjenson @newsmast @andypiper @ricmac @evan @laurenshof @pfefferle @fediversenews @timbray

I opened issues with many of the most popular projects. Fortunately, this kind of thing can be rolled out incrementally, starting with adding a few easy records to WebFinger results.

Further down the road, you could enhance it to include other kinds of interactions that aren't possible now (remote Blocks, anyone?)

Andy, what would be my best next step in getting this on the radar at Mastodon?

@andypiper @tchambers

@tchambers @benpate

I suppose it's https://codeberg.org/fediverse/fep/src/branch/main/fep/3b86/fep-3b86.md and I see it as a move away from activitypub: to me the central API seems to be activitystreams object sent in an inbox. This extension proposes platform specific changes _outside_ activitystreams

Can template point to AS objects to be filled ?

I understand wanting to bundle things into AP. Let’s fix the core and not abandon it, right?

But the use case here isn’t in ActivityPub. It happens when I’m visiting a website OUTSIDE of my home server. It’s how we see 90% of the internet.

So building this feature into AS doesn’t make sense.

These interactions need to tie more deeply into Fediverse servers in the same way that the FB “like” button does. That’s what FEP-3b86 does.

@rakoo @tchambers

I think I skimmed FEP-3b86 some time back and found it interesting, but then promptly forgot about it. Probably overkill for what I'm doing, but we've supported the ostatus subscribe mechanism for follows and it makes sense to use the same for comments and remote posting if it's available. The current rpost mechanism was to add support for some sharing protocol from 2011 that vanished in 2012 and I can't even recall the name at the moment. Could make it compatible with FEP-3b86 in a few days by just renaming (or adding) the new parameter names, depending on the legacy impact. Then our "wall-to-wall" posts/comments/likes could be signed correctly, which presents a minor federation issue otherwise. And it would work great with OpenWebAuth to auto-identify the remote actor and ascertain their permissions, so it would still be a single click.

That's a long way of saying "I'm in".

@ just small circles 🕊 It's not Fedi UX. It's Mastodon UX. Big difference.

Here on Hubzilla, I see the whole thread as one right away, all the way to the start post, without having to look at it at its origin.

The only improvement that I'm waiting for is the tree-style view that'll soon be rolled out with Hubzilla 10.4 (Friendica, (streams) and Forte already have tree-style views whereas Hubzilla had a strictly chronological thread view until the recent RCs).

# Long # LongPost # CWLong # CWLongPost # FediMeta # FediverseMeta # CWFediMeta # CWFediverseMeta # Hubzilla # Conversations # ThreadedConversations

@benpate

I do believe that it's part of ActivityPub, because that's exactly the usecase: there's an object you're currently seeing and you want to interact with it.

I'm no AP dev, I have no experience at all, only armchair ideas so my goal isn't to say what you're doing is bad; quite the contrary, you're building stuff so you'ro certainly more relevant ! I'm just commenting on the sidelines.

The thing I like about the idea of AP is that it is about manipulation and exchange of data structures, whereas the APIs are about RPCs. I like that because it makes my data more portable, less dependent on an implementation or an instance.

What I would love to see is the AP concept more widespread for interacting:
- when I see content I want to interact with, my user agent can pick the object url in the http headers and/or in a <link> tag if it's presented in an html document
- my user-agent allows me to send AP activities, optionally linking to object urls

This obviously requires changes in the browser (which is where Mozilla should put its brain but that's another discussion), but can be first done in an extension. Bonus: it works for *all* AP implementations
@tchambers

Yes, if browsers understood ActivityPub then the whole world would change. I’d love that.

We’d need everyone on board, but Ms, Apple, and Google might follow if Mozilla and Vivaldi proved it would work.

That would require a working C2S API.

And all of that is years away 😩

I think we get there with incremental, evolutionary steps that prove the Fediverse is viable, and attract more non techies to the community.

@rakoo @tchambers

@ Ben Pate 🤘🏻 In the words of a diaspora* developer, if Mozilla and Vivaldi "implemented ActivityPub", they'd actually "implement Mastodon". That'd mean catching more users with less effort than implementing vanilla ActivityPub and implementing features that Mastodon doesn't have. Besides, both used to have or still have a Mastodon server, but they don't seem to be aware that there's a Fediverse beyond Mastodon, much less what it's like and how it works.

In fact, they wouldn't even implement the ActivityPub C2S API at all. They'd implement the Mastodon client API and only the Mastodon client API.

CC: @rakoo @Tim Chambers

# Long # LongPost # CWLong # CWLongPost # FediMeta # FediverseMeta # CWFediMeta # CWFediverseMeta # Fediverse # ActivityPub # Mastodon # MastodonAPI

@tchambers It may solve one issue (ensuring the follow is valid), but you still need to fetch all the follower’s account into your instance, which may be a lot of them. Then would you fetch those user's own followers, recursively?
You would end up with million of accounts stored (database, profile picture, banner, pinned posts & their media…) on every Fediverse server.

@renchap The main problem I was trying to solve for was accurate remote visiblity of users followers and being able to browse and manually pick and choose one at a time those one would wish to follow. In that use case if this FEP implemented does the same resource hogging dynamic you describe still have to occur under the hood so to speak?

As always thank you for this discussion! cc: @silverpill

1+ more replies (not shown)
@tchambers @renchap what about is the following count is greater than 0 and the number of followings returned by the API isn't the same, then show a message "We only know about some the accounts that this account follows, view on their instance to view more"

Or something like that, much like how followers list is only followers that your instance knows about, not all followers listed by the actor.

@thisismissem @renchap@silverpill

So instead of:
• You → requesting all 600 followers
• Server → refusing or returning just an empty collection

It would work like:
1. When you follow someone, your server sends an Add activity to add you to their followers collection.
2. Their server replies (or updates) the original activity with a proof: “Yes, this person was added to my followers.”
3. Anyone (including remote servers) can then verify that proof without needing the full follower list.

1 more replies (not shown)
@tchambers

Your points are absolutely valid, and I would certainly hope, that somebody finds the time to implement your suggestions. Very nice to know, that Mastodon is already at some.

The thing is, I think right now, #Bluesky is just hotter than #Mastodon & the #Fediverse. But that will change again, and it would be really great, when this stuff is fixed by the time an new wave of incoming people arrives. If we like it or not, many people were thrown away by exactly what you're describing.

Cheers Tim for a good post again. I see you're getting pushback on the onboarding server idea. I would argue that had we a good account portability model that solved also post history, there would be no need for a centralized onboarding. Don't like your local community or service provider? Migrate somewhere else. Bluesky does have this slightly better thought out, if not yet practically proven.
@tchambers

Yeah - while I'm not entirely a fan of the "fedi is like email" argument (due to public vs private, identity and spam control differences), the migration question, I think, compares to number portability, which is basically 100% transparent across most markets today (though only within countries) and has improved mobile networks for both consumers and operators. Fedi should be less like email, more like mobile networks.
@tchambers

@tchambers
Excellent posts! As a new user just now wading into these waters, this sums up so much of my confusion.
I've been trying to figure out how to "do it right" - including the questions of identity and "should my own WP website be federated so content gets auto-posted", Bluesky etc.

The UX (and guides) for this whole thing feels like 2010. When most people are used to modern UX.

I think there is a deeper layer of 'identity management' that could address a lot of the issues.

I think I deeply disagree with this on a fundamental level: as I understand it, you think about decentralization as an engineering strong point, but as a product/UX problem. For me, what is important is the polar opposite: decentralization is key on a product level. I don't support the Fedi because I want a world with a single community-run social network. I support the Fedi because I want a world without any single social network with more than a few thousand uses. I don't want a new, better Twitter. I want an internet that's wild and truly decentralized again. You can't wild the internet by asking people to own their homes but then imposing an HOA that defines how those homes should look like. As Gabbo said, that's just the bluesky model. I don't want bluesky. I want weird platforms developed by a Peruvian teenager where you can't upload any picture that is not of a cat and have three dozen users being as first class Fedi citizens as the flagship mastodon instance. Actually, I want no flagship mastodon instance to exist as the flagship anything.

If we want people to change their mindset about what internet should be, we can't mold ourselves to what they already expect internet to be.

@tchambers

my problem with #1 is that it fails to take the power structure of a decentralised system into account. there is no topdown actor who can decide this. Even in a hypothetical scenario where a new platform software comes along, this does not actually solve the problem. You cannot coordinate all platforms and instances to implement this.

/1

@laurenshof Love this discussion! 👍 Will reply more during lunch work break.

But in short response now to the objection that there is no top down actor or actors who can decide to implement this or system and curate the round robin set of other servers:

Wouldn’t joinmastodon.org/
joinpeertube.org/
pixelfed.org/how-to-join and
joinbookwyrm.com/

(To use just a few examples)

…all be such current top down actor who each are big on-ramps now who could do this?

@tchambers assume that we get a new hypothetical platform 'oliphaunt' that implements such a system of an main onboarding instance that sends users to other instances over time. also assume that other independent instanes of 'oliphaunt' actually spring up

for people who now want to join the fediverse the situation got even more confusing: their choice set simply got expanded from 25k fediverse servers to 25k servers plus a special onboarding instance

/2

Also: i talk up the idea of #Lemmy and #Mbin and #Piefed and the #Threadiverse in the idea on surfacing content...

Much of that idea was spurred by this from Piefed on it's potential feed format that can pull in multiple other community fediverse acocunts into one feed:

https://join.piefed.social/2025/04/30/how-piefed-federates-feeds-aka-multi-reddits-or-multi-comms/

And would love to hear what @rimu thinks of my riffing on this for discovery fedi wide, and if he had notes.

@tchambers I have 2 main thoughts about this.

1. A lot of what you're describing is mastodon behavior, not universal properties of the fediverse.

2. This is more or less the same list of problems that I've been reading about for 3 years now. Listing the problems doesn't solve them. What would really help would be sustained support for one or more fedi backend projects. Research, docs, marketing, triage and prioritization, community management, and eventually design and implementation.

And in terms of feeds standards for the web. This article talks up from @surf but also @newsmast community feeds, and @Flipboard federated magazines.

I could imagine the same might work with Top WordPress or Ghost content publishers as well, but I'm still understanding the mechanisms for discovering surfacing such content from top federated wordpress blogs or sites, and top Ghost authors. cc'ing @johnonolan and @pfefferle

So for the Protocol hander discussion, I was particularly influenced by @timbray in articles such as this one: https://www.tbray.org/ongoing/When/202x/2025/04/16/Decentralized-Schemes

Curious both if TIm thinks I took the right lessons from his writing....

And very much interested in @evan and his thoughts on the idea as describe in the post. And @jenniferplusplus

As well as what browser tech folks like @jon and @jensimmons would think of my rendition of the state of play and how to move forward on web protocol handler support.

@tchambers @timbray

i'm starting to get a little incredulous at the sheer number of times people suggest new protocol schemes and handlers for what is still fundamentally an HTTP resource

if we switched to serving web+activity: or fedi: or whatever, that'd be a horrific regression in UX because clicking/copying links would *break* for most people

the problem is most "fedi" apps are building a web browser inside a web browser. that's the fundamental ux sin. all else stems from that.

@trwnh @tchambers @timbray So, for a decent while I had a misunderstanding about "web+something" schema handlers: I thought part of their point was to use the registered handler if the person has one set up, and fall back to opening them in the browser if they don't.

I guess that isn't how they work in reality. But wouldn't it be useful if they did?

@trwnh @timbray

Wouldn’t this plus a JavaScript backup greatly reduce the remote engagement current UX issue?

I’m not sure the nature of your objections here are is: I think you may be saying if implemented that this new UX with basically only one prompt and then everything works, isn’t as much an improvement as I’m selling it to be?

@tchambers @timbray i’m saying that for anyone who doesn’t support the new scheme, which by default is literally everyone, you will be sending them broken links when you copy or share the rewritten web+ap: instead of https: links. you’d be fragmenting “fedi” from “the web”, since your links would only work with the former and not with the latter. you’re also not accounting for multi-account or multi-server cases.

the root cause of the ux issue is the double-browser pattern, inspired by silos.

@tchambers the rewriting is the issue, because there is a very real and very likely chance that there is no way to handle web+ap: links. they might work for you as a visitor to a mastodon-powered website, but the minute you send them to someone else you are necessarily expecting them to have a protocol handler set up, which they almost certainly will not. we want to preserve https: links in almost every single case. inside the fedi web browser, you can intercept clicks instead.
1+ more replies (not shown)
@r3t3ch @stefan @breakingnews Would need to think of that idea a bit more. For servers it was about curated lists of things already public via RSS and public over the fediverse, but curated by say the server community itself: for instance see this from @chrisaldrich trying to do this via several kudges and RSS.

Better still I propose that each server have a Servebot that boost the public posts of the public feed (with moderation etc)

https://boffosocko.com/2023/01/10/full-rss-feeds-for-mastodon-instances-with-openrss/

1 more replies (not shown)