Thanks for the great work on this @ernest, and every contributor who's dove in and made a PR.
lml
There is also Kbin (that I use) which can communicate with Lemmy. Since they both share the "sections/communities/groups with threads in them" concept, they can interact pretty well.
I've seen folks calling it the "Threadiverse" because of the different software that servers run.
Federation is the process that pulls content in from other servers (e.g. lemmy.world, beehaw.org, fedia.io, mastodon.social, etc.) All of these different servers can communicate and share content with each other.
If you turn federation off, you only see content from your "home" server, which in your case is kbin.social (in mine it's remy.city).
Well said, thanks for this info! I was in the camp of thinking "of course the money goes to Wikipedia's upkeep" but I never examined it closely enough.
There are ways to write links in such a way that they should keep you on your instance, but I'm not too familiar with them. I wonder if it would be possible to "precheck" links that load on a page, and if any point to content that can be federated, kick off the process of pulling that content in. Then when the user clicks that link, it would take them to the content on their home instance, where they can interact. That way users wouldn't need to deal with formatting links a certain way, it would just happen automatically (if your home instance software supports it).
That's the one--thanks!
The thing about federation is that every server basically copies any content that the users on it want to see. So if a comment/post is made on lemmy.world, lemmy.world sends out an update to every other server on which a user is subscribed to the thread/community/user. So each instance that has a subscribed user ends up having to process the new comment/post. If a Meta community came in with say, a million users, now every instance has to process the comments for all those users (that is, if folks on those instances want to see that Meta content).
It is a bit inefficient, but it's just the way a decentralized network has to function. I could see many people thinking that any time you open a thread, the data comes in from the originating instance, i.e. that your home instance doesn't store the data you are viewing. It is unfortunately, and I think it will be a problem in the future as communities grow.
The problem is that if I want to communicate with Meta users, then my content gets copied onto Meta's servers, just because of how the fediverse works. Everything is a local copy first, then gets federated. So if I reply to someone who is a Meta user, in order for them to see my comment it must get copied to Meta servers. The only way to stop this is to defederate with them (which means the server you are on would not send anything to Meta servers).
That's a good breakdown, thanks! The bad thing is that I could see these issues happening even unintentionally, with the fact that we have a few large instances vs. many smaller ones. So far we seem to have everyone running the same code, straight from the repositories (at least functionality wise). For my own kbin instance though, I have technically changed things. I changed some code to make a custom logo appear nicely, I've added some padding here and there, etc. I have also thought about implementing an automatic job that clears posts tagged with 'nsfw' or other related things in the microblog feed.
I might implement that, and then submit it to the kbin devs if it works well. There's no guarantee that other admins/devs would do that as well. If they implement a feature that makes their community more popular, they would seem to have incentive to keep it private. And that's where stuff like Meta comes in. If they implement rigorous content filtering, I doubt that would make it into the actual AP protocol. It would be the differentiating factor between using their 'safe' instance, vs. going rugged on an independent instance.
They could say "we implement the ActivityPub protocol as specified" and they wouldn't be wrong. They would just have some extras added onto the top to make their experience more polished. Easy to do when you are a for-profit and have plenty of devs. They would just argue that those are the features that make their interface different, like kbin and lemmy are different.
The only way around it is for communities to agree that they will run the software as released, maybe with only cosmetic changes. Any improvements to functionality should be submitted to the devs so that the wider community can benefit.
Wikipedia is a good example. It is annoying when they ask for the $3 every year, but it's true that a small contribution like that across the many users can keep a free/libre project sustained. Things like Usenet used to be part of your ISP bill anyhow, so a small monthly/annual amount to your instance host makes sense to me. Of course, we pay ridiculous amounts to our ISPs without services like this nowadays, so it does hurt a little
A community can be made of very few people. It just takes a desire to keep it going!
That'll be slick!