What if Firefox became the best Fediverse client? Could be very powerful and timely.

http://benlog.com/2022/12/28/firefox-should-become-the-best-freaking-fediverse-app/

Builds on ideas from @luis_in_brief

Firefox should become the best freaking Fediverse app

The always awesome and insightful Luis wrote a post 9 years ago about how the web browser should become an RSS reader. Super important set of ideas and right on. Meanwhile, Mozilla has announced th…

Benlog
@ben @luis_in_brief Which of those capabilities should be built into the browser and NOT feasible for an extension to implement? I’d argue that an extension should be able to do all of that, and then there’s no advantage to having the browser do it itself. Also users shouldn’t have to use a different browser to get the best Fediverse experience; imagine substituting “Microsoft Edge” or “Safari” for “Firefox” in your post.

@briansmith @luis_in_brief

I'm a batteries-included kinda person. Sure, make the functionality pluggable so an extension can take it over. But build it in by default. "Go install an extension" is hostile to less techy users.

As for other browsers becoming great fediverse clients... That's great! I got no issue with it. Let's compete on that front.

@ben @luis_in_brief That’s the exact argument for bundling browsers with operating systems and encouraging people to use the bundled browser. To a large extent any advantage that built-in functionality has over third-party extensions is a bug in the browser, in the same way that any advantage the built-in browser has over third-party browser is a bug in an OS.

@briansmith @luis_in_brief you are confusing emerging tech and established tech. The end goal is not maximally modular architecture. The end goal is to strike a balance of usability and user choice. In what way would my proposal reduce user choice? Maybe in 5 years when Firefox is the operating system and other extensions are fighting for relevancy :)

Right now the glaring need is more usability. Let's fix that first, and evolve the architecture later.

@ben @luis_in_brief i#In what way is it a usability advantage? Start at “I use Safari on iOS” and go through the steps to install Firefox (same steps as for a Safari extension or any standalone app, btw) through posting the first message. It can’t be any less friction for users. And it can’t be less friction for the development of the product as the browser (any browser) and existing organizational inertia & risk management are giant boat anchors.
@briansmith @luis_in_brief people installing mobile apps is a well understood concept and they can generally do it. And what's the alternative for this particular use case? Installing a different native app?
@ben @luis_in_brief First, I think the ideas in the post are great. The only point I was trying to make is that this could be done by anybody. I tend to dislike apps that are tied to a specific browser, so I prefer the idea that such things are developed independently.

@briansmith @luis_in_brief

I hear you, but I think in this case I'm proposing (and really only building on what Luis was proposing) that this social aspect could become an integral part of web browsing. Instead of social apps like Twitter embedding a web browser, why not have a web browser embed social functions, especially when those are built on open protocols.

@ben @briansmith @luis_in_brief I will add that at least the mastodon approach (have not tried other fediverse clients) leaves me wishing for some entity to act as my personal user agent.

The current architecture is shared server-centric, and it is evident to me that a team focusing on being the best user agent possible might make different tradeoffs.

1/2

@ben @briansmith @luis_in_brief several examples of this, but one: the client does not attempt to retrieve information from other servers—if I load profiles of people in my stream, they are usually empty or nearly so.

My server hasn’t loaded those posts, and maybe that’s the right tradeoff for the server. But a good client acting as my agent would realize that I clicked on a profile, please load the posts! I don’t care where they are stored, just effing do it.

@danmills @briansmith @luis_in_brief totally agreed. The crazy thing here is that native clients are inherently better than web, because of big paper cuts like the one you point out.
@ben @danmills @luis_in_brief I think the Fediverse can’t scale unless each user’s server caches and proxies profiles, images, etc. If you have 1M followers you shouldn’t have to pay for 1M image downloads; you should only have to pay for N downloads from users’ N proxies, and we must design so that N is small. So a client doing extra direct downloading would be a negative application of Postel’s law, and eventually such clients should probably be blocked at the server level as a DoS prevention / cost containment measure.
@briansmith @danmills @luis_in_brief agreed that there are architectural optimizations that will be required. But that has to be transparent to the user.
@ben @danmills @luis_in_brief similarly, ever users’ server needs to be aggressively discovering and prefetching all the replies, etc. that are currently “unknown” so that the server effectively knows everything relevant for that user. Otherwise the thread mechanics don’t work and performance & scalability are horrific. Oversimplifying a bit, but the client talking to only the users’ server is pretty much the right thing to do in all cases.

@briansmith @ben @luis_in_brief I agree about scalability considerations. But the current feature mix is… bad?

1. Identities are tightly coupled to the instance. My server is just me bc I want this identity. So server side sharing optimizations are moot anyway, no resources are being shared in my case.

2. Servers push future data to each other from the point of subscription, but don’t query old posts, even when it should be obvious to do so (profiles are empty).

@briansmith @ben @luis_in_brief so the “solutions” currently on offer are:

1. Give up on using my identity and let’s everyone join the one big server. Screw federation I guess?

2. Use the client as a sort of notification system but open threads and profiles by visiting the source in the browser every time, so that I can load the content directly and bypass my instance. This is a usability disaster, and really basic stuff doesn’t work (eg can’t click to follow)

@danmills @ben @luis_in_brief RE 1: I think most people agree that we need to agree on and deploy a separation between identity and server. RE 2: Basically that, but all that networking should be proxied through your own server, and your server should be prefetching/caching/etc. to make that fast. Again, this might require protocol improvements.

@briansmith @danmills @ben @luis_in_brief

>> I think most people agree that we need to agree on and deploy a separation between identity and server

I think most people don't give a flying fuck, they just want a well-run place to write and read posts. Mastodon's ability to migrate smoothly from instance to instance solves 80% of the problem and I’m not sure the remaining 20% is worth much effort. All the sovereign identity schemes are, relatively speaking, terrifyingly complex.

@timbray @briansmith @danmills @luis_in_brief

I'm certainly not advocating for some complex identity scheme (or any particular scheme at all), but I do think users will care when a username they picked and get attached to becomes associated with a moderation policy they didn't understand and got defederated for. Not sure existing migration tools are sufficient.

@ben @timbray @danmills @luis_in_brief just to drive this point home: I can’t see Tim’s post here presumably due to the types.pl moderation policy, which I don’t agree with. I’m working to switch to a single instance server with my own identity, though I also disagree with the idea of single-user instances because they hurt scalability.
@briansmith @timbray @danmills @luis_in_brief wow! That's... way more problematic than i anticipated.

@briansmith @ben @danmills @luis_in_brief

Oh… I used a phrase beginning with “don’t give a flying… ” which seems to suggest that types.pl suppresses posts with basic Anglo-Saxon profanity. That’s pretty shocking.

Is there any data on how common that is? Wondering if I should censor myself in future.

@briansmith @ben @timbray @luis_in_brief yikes, I guess that’s another reason for me to run my own instance, so I can set my own parental controls. But I would really prefer not to fwiw, it’s an annoying chore that I’m not sure I’ll keep up long term.
@timbray on top of that 80%, I'd settle for a gossip-based, signature-based identity migration system, as a fallback; to have a chance to retain one's identity if an instance admin becomes hostile. I realize most people don't know what a private key is but they can probably be walked through the process when they create an account.
@briansmith @danmills @ben @luis_in_brief

@diego @ben @luis_in_brief @danmills @briansmith

Can't agree. Civilians have essentially zero chance of taking adequate care of a private key. This is sad, because there are lots of compelling identity protocols you could use if you could assume everyone had their own private key.

@luis_in_brief @diego @timbray @ben @briansmith @danmills since most of the Apple stack is built on private keys underneath… disagree?

One needs to have a relatively large stack to provide Apple level of UX. But also: we’re about to have PassKeys roll out.

Still mediated by a lot of tech giants for mass market usage, but … progress!

@timbray @ben @luis_in_brief @danmills @briansmith

Fair point, I’m more hopeful than convinced to be honest.

Here in Spain we have government-issued client certificates for government websites, and people manage that fine, but the government acts as the central CA and there are several means revoking and recovering a digital identity based on one’s legal identity. On the other hand we have a federated root CA system for the web, and multi-vendor collaboration which does a decent job managing trust.

So I hope we can eventually put together a federated solution that allows people to manage their identity with enough affordances to make it usable by the general population.

@timbray @diego @ben @luis_in_brief @danmills @briansmith so, surely, we need to give civilians better tools to manage private keys.

Obviously that's a partial solution, they need education too, but the current generation of high-strength key management tools are not really accessible to non-geeks.

(I strongly believe, too, that those tools need to run on the device in the non-geek's hand, not in the cloud anywhere).

@danmills @ben @luis_in_brief Yes, the current situation is unworkable. The server software needs to change so that when your client asks for a profile it doesn’t have, the server fetches it, instead of saying “I don’t have that.” Most of the networking and caching in a Mastadon client needs to be done server-side by your server, including image resizing and optimization and discovering all the replies in a thread, etc. (Note that I think a users’ server shouldn’t be expected to serve anything to anybody except authenticated users; a user’s server shouldn’t be expected to be publicly/anonymously browsable.)

@ben @briansmith @luis_in_brief
If you are a FF user, and don't use the Fediverse this would feel pretty intrusive IMHO.

Like bloatware attached to your Samsung phone, or Ienova laptop.

A plugin, or a branded version of FF or even Chrome would be fine though.

@InfamousUnkown @briansmith @luis_in_brief this could easily be turned on only if you've ever visited a Mastodon site, or maybe it's one prompt and then it goes away if you say no.

Lots of ways of doing this that doesn't require people knowing they have to go install an extension, which is an almost guaranteed way to fail at this particular goal.

@InfamousUnkown @ben @briansmith to be blunt, Mozilla as “plain web browser” has been thoroughly defeated in the market. If every new feature (especially one deeply aligned with Mozilla’s values!) is “bloat”, we should just shut it all down now and stop wasting our time.

@ben @briansmith @luis_in_brief make it a web app.

Firefox should have finished their PWA desktop integration and they could ship a client.

@robcee @briansmith @luis_in_brief did you read my original post and all the features I'm hoping we could get out of this? Even a great PWA couldn't do it. It has to be the user agent / a powerful extension to the user agent.
@ben @robcee @briansmith yeah, websites are now in many ways just a thing people get to from their social networks. So you want the two deeply integrated.

@luis_in_brief @ben @briansmith ok, I have now, (sorry for jumping on).

I think a web-first experience is still going to be preferrable. There are some useful Bookmarklets for interacting with remote instances. An Add-on could do a lot.

My point still stands: If Mozilla had shipped a “Gecko-shell” like Chrome’s Electron, they could build it in an app. Including a social media network in a browser that isn’t just an extension would feel, kind of gross. IMO.

@luis_in_brief @ben @briansmith I mean, I don’t wanna poo poo your blog post. It’s a cool idea. Hard sell tho.

@robcee @luis_in_brief @briansmith poo-poo away, it's a discussion :)

What I'm describing is bigger than a dedicated app for tooting. It's social integrated into the web browser experience. I just don't think it can be done as a pure Web app.

@ben

With Mastodon only one, and arguably the most limited, of Fediverse implementations, Tumblr coming 'round the bend, Flickr hopefully as well, and the anticipated changes in Instagram's Terms of Service probably giving rise to a move to Pixelfed... would a "Mastodon Client" in a web browser really hit the spot?

That's not decentralization, that's recentralization inside a new regime, especially if Firefox only knows how to read and speak that Regime's language.

@robcee @luis_in_brief @briansmith

@mikka @robcee @luis_in_brief @briansmith maybe Firefox can be a client for those other fediverse apps, too. Maybe there's a client API that can be built to hook in different Fediverse clients, letting them render in web content while extending the browser's APIs to facilitate the social web.

I think it starts by trying with one that's having a breakout moment, and generalizing from there.

@robcee @ben -- "Including a social media network in a browser that isn’t just an extension would feel, kind of gross" -- can we probe that a bit? Until 2018, Firefox included native support for Atom/RSS, which could be used to aggregate news, but was mostly used to aggregate blogs. I'm going to start with the assumption that Atom in Firefox didn't feel "gross"; correct me if I'm wrong. Now, if there were some extension to Atom that let you post comments -- are we getting closer to "gross?" 1/
@robcee @ben -- Okay, and how about if the native feed support included a way to post to your blog, with pingbacks? That also seems pretty natural, and not at all gross to me. And at that point, you're about 90% of the way to the *functionality* of Mastodon. Where does the line to "gross" get crossed? Is it when we add "favorite"? When we add "reblog"? Because with those, you're at like 99% of Mastodon, and close enough as to make no real difference.

@abr @robcee @ben

If I recall right, Firefox has already shipped features with extensions out of the box.

Containers is one, I think Normandy is another?

@emmah @abr @ben oh sure. lots of ‘em. I think for some classes of feature, it’s almost preferred because it reduces the amount of browser code required to ship and maintain.

@robcee @abr @ben

And it makes for nice boundaries that can be controlled with a feature flag.

@robcee @emmah @ben -- Right, and for certain classes of behavior, that works fine. In practice, those kinds of addons mostly shipped UI for a complex feature that was implemented deep in the browser. "Containers" is an excellent example: the `contextualIdentity` feature was large and deeply browser-integrated. The addon just provided user-facing controls and indicia for it.

@robcee @ben @emmah @abr I’d also add that features built as add-ons have mostly been converted to integrated features. The promise of “less to maintain” has rarely paid off, usually it’s more work and less stability.

I’m not convinced that a “native”client is the right thing for Firefox, but I think there’s a lot of user agency gaps that we should definitely solve in the browser.

@mconnor @robcee @ben @emmah -- Yes, and... what I see in Ben's post has a lot of the same feel to me as the hypertext and hypermedia stuff that Ben Schneiderman was working with in the '80's, updated to incorporate human connections. Maybe it's not a good final form, but it's chock full of important ideas, and it's something we would ideally develop to figure out what it *should* be longer-term. It feels like there's a big opportunity for someone to step in and shepherd hypersocial networks...
@mconnor @robcee @ben @emmah ...and it would be a neat full-circle if Mozilla could step in and be the Mosaic (or the Netscape, if you will) of this next phase of how we interact with the network and each other. What I find exciting about his description is that it basically provides the benefits that Web3 proponents hold forth as key, without being mired in what I'll simply describe as "controversial" implementation details.

@abr @mconnor @robcee @ben @emmah

I've wanted Firefox Accounts to come with web hosting for years now. So, part of me reads this and goes heck yeah: "you’re prompted to join the Fediverse ... by creating a Firefox account, publishing as @[email protected]"

But, the tech isn't the hardest part. A thing that would be hard yet valuable is if Mozilla slowly built up a space with active moderation - i.e. not just "Mozilla opens yet another enormous public Mastodon instance with a client built into Firefox" but also "Mozilla explores moderation tools and policy through careful growth"

I know Vivaldi opened a public instance not-quite-integrated into the browser. I've seen a few moderation problems and defederation reports versus that instance. Some of that seems to be bad actors using throwaway accounts, some are just plain jerks. Would be neat if Mozilla could avoid repeating that sort of thing, with a semi-neglected instance except with a great client.

@lmorchard @abr @mconnor @robcee @ben

Yes, it'd need great moderation. I know someone who just finished a contract with Mozilla on a privacy project who I think they should hire full time at a handsome salary to manage doing people-first moderation at scale.

@abr @ben sure, and I miss that feature a lot, but it was also subscribe only, without any account and payment services attached to it. A fully capable fediverse client app would be quite a different thing.

From the other direction, I don’t think any RSS/Atom providers felt like Firefox was making an attempt to usurp control of, or become an authority on RSS. The fediverse on the other hand, is a little wary of creeping centralization, for good reason.

@robcee @ben -- Can you say more about "payment"?

@abr Ben’s post suggested an integrated donation mechanism for host providers. Ergo, payment service.

@ben

@abr @ben (apologies for all the replies) Re: payment service, don’t read too much into that. I pulled it out of Ben’s post and held it up as an example of “services bundled into the client”, but it’s not like any of these are hard requirements.
@robcee @ben -- Ah, yes. In practice, I'd love to see a browser-integrated micropayment service (there are several models here; Scroll and Coil have some interesting experiments in this space), independent of any use in the Fediverse. Properly designed, tipping Mastodon instance operators would be one of many, many uses.
@robcee @ben UGH. I just checked to see how things were going, and Scroll was bought by Twitter. Oh, well. Was an interesting experiment anyway.
@abr @robcee @ben Coil is still around though? fun fact: i met a few of the folks at Scroll when for a brief moment in time they were going to work with Mozilla and they would have had to work with SUMO on support! Fun times! Could have been a different universe if that had succeeded!
@ben Seems promising although to be honest I don't remember why I never really used the RSS reader built into Firefox and ended up using an external RSS reader. My largest questions have to do with content moderation issues (parts of this proposal are eerily similar to TrackBack which died in a heap of spam, didn't it?). Content moderation calls for a multifaceted solution including good block/mute features and showing rules during sign up (yes, friction) and probably others.