ActivityPub Could Be the Future
kyefox.com
kyefox.com
Useful things that are built, brought to market, and meet user needs that may happen to use ActivityPub under the hood are the future.
Knowing what is useful for whom and how to bring it to market in a sustainable manner for the people it's intended for is a super critical element. One that's often overlooked.
Specs are like plumbing pipes. People care about sinks, showers, and stuff like that. The pipe fittings, materials, and sizes enable a lot. But, it's not what the end users tend to care about.
If you're installing lots of sinks and showers, it's OK if you make the pipe fittings, materials, and plumbing a bit easier to work with. Coming up with dozen of all all new sets of pipe fittings, materials and plumbing designs every other week doesn't make installing sinks and showers easier.
Imagine walking into Home Depot and discovering there are about 100 'standard' styles of sinks, faucets, fixtures, pipes, fittings, etc. all with varying degrees of support from none to complete for interoperability. Not only that, every other month, 10 of each of those pieces are no longer manufactured or supported and 20 complete new designs are created with all the same cavets as before.
Meanwhile, you install these sinks daily and the customer really doesn't care at all about how elegant the back pieces are from a mathematical or structural view, they just want a functioning sink that they can assume is easy to fix or replace parts on when it breaks. Not only that, they want to be able to call any plumber and have that done without the plumber spending 2 weeks just figuring out what the hell the previous plumber did before they figure out just how to fix it. At which point they decide its easier to just rip everything out, set it on fire, and pick the latest sets of pipes and fittings for no necessarily justifiable reason than it will cost more in time and effort to deal with the previous sink install than to start from scratch.
After recently spending three whole days trying to make one part of Kubernetes talk to another part of Kubernetes (and eventually giving up), that brought me so much joy that I’m wondering if I should give up on software and get into carpentry full-time...
[severe emotional trauma flashbacks to previous contracts]
I've seen some heroically constructed Gaudi-esque crystal cathedrals of systems and every one of them could have been replaced by a toolshed and done the same job.
At Southern California Linux Expo, I joined a discussion session to learn more about ActivityPub and the Fediverse. What I took away is that the flagship apps supporting ActivityPub are designed to cater to people who want a single app for each type of social media interaction that they have. One app, e.g. Pixelfed, for posting/looking at photos like Instagram. One app, e.g. Mastodon, for posting/looking at text notes or articles like Twitter/blogging. When each of these apps implement ActivityPub, it becomes possible for people to communicate across apps. (Presumably there's one for music listening...)
I understand the drive toward cross-app communication, but I don't understand the "one app per use" way of thinking. Perhaps it's because I rarely use FB and have never used Twitter/Insta/Pinterest. To the extent that I want to broadcast my online social activity at all, I want to do all my posting with one UI, in one place (i.e. in one "app", my CMS) , and I don't care whether someone looks at my stuff by reading my website or subscribing to my feed. I think if someone just wants to see photos, or articles, or "tweets", or whatever, why build a separate app? Why not just filter the incoming content?
Running e.g. a Mastodon instance requires someone to administer the server. Once that's in place, a community can grow up on that server. This seems to mimic more traditional web forums. Is that part of the draw? A central meeting point for your community -- with ActivityPub letting you use your identity in that community while interacting with people from other communities?
Probably the easiest way to participate in both the IndieWeb and the Fediverse is by using Wordpress with a couple of plugins installed.
I'm still trying to understand ActivityPub / Fediverse completely, but once you manage to make several social apps use the same underlying protocol then the app just becomes an interface and the protocol runs the social network. And just like how a file system has various kinds of tools to interact with different kinds of files, it's not odd for a network of shared 'things' to have several tools to interact with different kind of things.
Thanks, contravariant! This was the key idea I was missing.
This issue of bridging the IndieWeb and the Fediverse is fascinating. I'd think it would be more naturally collaborative, but there's a lot to sort out yet.
Thanks, that helps me understand.
If I create an account on a Mastodon instance, and want to move it to another instance, do I lose everything?
And how does integration among the various platforms currently out (e.g., Mastodon, Plume, Pixelfed, etc) actually work? Is there some tool to see feeds aggregated from all these implementations? Or does it work differently?
I ask these questions as someone used Mastodon for a bit, has explored a handful of ActivityPub implementations. It all sounds very cool to me, but I still don't quite "get it".
Personally I prefer the approach of Secure Scuttlebutt, but I realize their P2P workings are probably unrealistic and impractical for the vast majority of people.
It would be cool if there was a protocol that was fundamentally p2p but with a federated 'tracker' layer that is basically indistinguishable from normal social media sites to casual users. The social media sites would help propagate the content and if one went down or refuses to track your content you can just peer with another one (or just continue to share content with your personal network of followers over a gossip protocol like SSB without the need for a tracker)
You can send a `Move` activity that will tell other instances that you moved, so people will (depending on their server) refollow you automatically. We (= people working on ActivityPub systems) are thinking about ways to create identities that don't belong to any one server, so you wouldn't lose your account even if your server went down.
> And how does integration among the various platforms currently out (e.g., Mastodon, Plume, Pixelfed, etc) actually work? Is there some tool to see feeds aggregated from all these implementations? Or does it work differently?
In general, systems display what they can. Pixelfed, Mastodon and Plume mostly send `Note`s and `Article`s around, which are easy to display in any of their respective interfaces. Other types like `Video`s will usually be displayed as good as possible, with a link to the originating instance. Unknown activities are usually just thrown away by the receiving server.
(Not the person you replied to) Thanks, this was helpful. The fact that there's a common activity vocabulary helps me understand the usefulness of an ecosystem of ActivityPub apps which focus on different ways to write and view posts.
Identities that could be somehow owned independent of servers would be a game-changer, I think.
Thank you for your work, and congratulations on 2.0 ;)
From what I understand, it's fairly trivial to post to _multiple_ ActivityPub accounts, but true _migration_ just doesn't exist per se.
The email analogy isn't always great with ActivityPub federation, but it's still a useful analogy as email is our most common federated service, and here ActivityPub migration is no worse than email address migration, and certainly at this point in some ways already better (follower migration is something email could have used; updating your email contacts list is still a very manual process).
I'll copy&paste a previous comment here:
>We need a protocol, a specification for completely decentralised, carry-with-us social networks.
I know it seems logical that a "social network protocol" is the answer to replace Facebook but after studying the mechanics of social networks, I've concluded that focusing on technical protocols is incorrect.
My suggestion to programmers seriously thinking of new solutions in the social networking space: don't get sidetracked into thinking about the protocol because if you do, your new social network will end up in the graveyard of previous failed projects like Diaspora. Instead, think about the database of real names.
Also, another previous comment on how focusing on protocols is (inadvertently) analyzing the wrong drivers for success: https://news.ycombinator.com/item?id=20231960
Another comment explaining why the free protocol "Signal" didn't solve the funding dilemma: https://news.ycombinator.com/item?id=20232499
My previous comment on why protocols like ActivityPub & Mastodon are not the answer for a general purpose social network adopted by the masses: https://news.ycombinator.com/item?id=18727230
The broader problem we're having and trying to solve is centralized power that is hostile to ordinary people. The internet could have been an even more democratizing force, but economic and political pressure have made it largely another tool of oppression and concentration of power for those who hold power.
A protocol can't fix that alone, but it is a piece of the puzzle to answering "How could we do this better?" It's a piece which is more accessible than overhauling society to eliminate incentives to sell out people's privacy, freedom and autonomy.
It's natural that here on hacker news we spend most of our time discussing protocols and implementation details. No, protocols alone are not a solution but they are important. What's the point of just re-inventing centralized social networks over and over again? That being said, in order for any of these protocols to reach the masses the protocol itself needs to be invisible to casual users. If the marketing for your new social network is "It runs on this cool decentralized protocol!" you will never reach a non-technical audience.
The end product needs to be as good and as easy to use as centralized equivalents even if that means making some compromises.
If one already existed then this title of this post would be 'ActivityPub is the Now' instead of 'ActivityPub Could Be the Future'. Efficiency isn't the only metric and comes at the cost of freedom and resiliency.
Check out https://IndieWeb.org to learn more.
Practically it seems more likely that the final method will be decided upon by the 99% of people following blogs, not the 1% making them.
How do ya'll feel about ActivityPub on a technical level? I read the ActivityPub, ActivityStreams, and JSON-LD specs a couple years back, and came away feeling like it was a bit much. Wouldn't JSON RSS with some sort of web push notifications get us 80% of the way there? Are there simpler alternatives already in the wild? Or am I missing something?
Some of that feeling is because my introduction to RDF was itself buried in dealing with the real world complexity of 90s and early 2000s RSS feeds. JSON-LD is no worse than early RDF, and in some ways better, clearer, easier to understand. Especially it feels easier to understand why it is useful to the ActivityPub standard, versus as complicated as RDF was it was sometimes hard to understand the impetus to bolting it on top of RSS, if for no other reason than that ActivityPub was built more directly around JSON-LD as opposed to RDF really was bolted on into the middle of the RSS soup (and its dozens of mostly compatible versions) and it was very confusing what/where/how RDF applied anywhere to RSS.
Some of the other parts of ActivityPub similarly seem smarter, simply better versions of now lapsed and/or only half-forgotten "standards" like PingBack/TalkBack or even the original goals of the (real) original OpenID efforts.
JSON Feed, the most widely accepted RSS in JSON standard, has so far managed to intentionally avoid depending on JSON-LD so far, but it's also tried to intentionally be a minimalist subset of RSS and all of the RDF in RSS stuff has been out of scope. Presumably should any of that be relevant again, JSON-LD would be the natural successor. (Similar too, that JSON Feed so far has left notifications support out of scope, but if it did expect to move in that direction they would be remiss to entirely avoid looking at what ActivityPub has already standardized.)
Any recommendation for a cloud provider to host a Mastdon server? DigitalOcean vs. AWS?
I personally like Vultr for VPS's, DigitalOcean is okay too.
If you want managed Mastodon hosting, I can vouch for https://masto.host/ - it's really good, have rarely had issues, and if ever I did, the support is amazing.
HTTP won big because it had the web -- Mosaic and Netscape. Spreadsheets won big after VisiCalc showed the way.
Where's the app for ActivityPub? I'm not sure I've ever seen "killer protocol, then killer app". It's always "killer app, then extract killer protocol". You need a carrot.
The network effect is powerful.
How can we create a more powerful network effect through a decentralised network without some centralised directory?
I'll quote it here
> My long term thoughts on aggregators for fediverses:
I think aggregation/curation sites (like pixelfed.club) can be a decentralized complement to the fediverse. The fediverse generates the content. Aggregators, can curate the content for specific topics and help new users discover content. Anyone can start a fediverse instance, and anyone can start a aggregation/curation instance.
I've wanted a Twitter/Facebook/Instagram replacement platform with syndication to ActivityPub.
The only way grassroot movements can succeed is through engaging in mass collaborative corruption. Thankfully, cryptocurrencies have proven the effectiveness of this concept. You just need to invent a financial instrument which has no value initially but which can grow in value as it becomes more popular - This gives your financial instrument 'potential value' - This potential value allows your financial instrument to be used to 'bribe' journalists to hype up your product and convert its 'potential value' into 'actualized value'.
It is a bit like a pyramid scheme, but everything these days is a pyramid scheme. The only way to compete within the gigantic pyramid scheme that is our financial system is through other even more elaborate pyramid schemes.
More concretely, the reason this is necessary is because corporations are constantly 'bribing' journalists by holding ad revenue over their heads and restricting the kinds of things that they are allowed to write about; so it's essential for grassroot projects to have a mechanism in place which can counteract such market forces which intentionally limit the visibility of new 'unproven' products.
For the public content, the lack of commercial advertising incentives is probably a big one. IME the client apps and server instances aren’t injecting trackers and selling ads based on user behaviors.
If an instance or client went rogue and started introducing such practices, it would likely be moderated out of relevance.
It's a great protocol and system but not a great product/brand.
Unfortunately nothing in such protocols prevents the gmail problem.
A crypto based protocol will be the only way to achieve true censorship resistance and decentralization.