How would that even work? Imagine you spin up a brand new instance and create a new user and want to subscribe to a community. Because there is no one source of truth does the new instance simply not have the posts and comments that were made before the instance was created? If it’s supposed to get historic data as well from where is it getting from? Does it pick a random instance and pull all the posts and comments from that instance?
What if that instance is defederated from another instance with the same community and doesn’t contain the posts and comments from the defederated instance? Does your new instance have to go ask all the posts and comments from all the other instances to rebuild the community dataset on your instance? What if these two instances that are defederated both create the same post with the exact same content? Is that one or two posts?
What if user on one instance changes the name of the post but there’s some weird bug that allows only half the instances to register that change. Did that change actually happen or not? How do you solve the data inconsistencies if there’s no central source of truth?
What about moderation? There’s no central authority to define moderators or moderation policies. How do you verify who is actually a moderator and not someone trying to impersonate a moderator? What if different instances have different moderation policies, how would communities agree on a moderation policy if in essence both instances can claim authority over the community?
And these are still pretty high level questions. It would get more complex if we were to dig deeper into a possible solution. Even if it’s all technically solvable I think the solution would probably be so complex that it becomes unmaintainable which means it becomes unusable.
Setting up a new instance wouldn’t be significantly different than today. The difference would be instead of asking each instance individually for what communities they have you would use a distributed ledger to contain a list of communities with their primary and secondary instances. This would create the sigle source of truth for communities. As communities still have to physically exist somewhere, the designated primary instance would have the master record for the community and you could designate secondary instances for resilience and possibly spread out pulling that information.
Moderation doesn’t change significantly, primary instance admins would still be the fallback, but they could designate any user to be a moderator.
Defederation would be a little messy, but not a ton more than it is now. The primary would be the source of truth, if they don’t accept writes from an instance, then those posts and comments wouldn’t exist, (this is basically the same as one way federation now). If an instance wants to read from a community it’s on that instance to drop anything from instances they don’t federate with from the response from the primary.
As above, the primary instance is the source of truth, if a change doesn’t get there. There could be an eventually consistent cache on other instances for usability.
The difficult part would be how to handle changing the primary instance, or designating the primary for a newly created instance.
But that’s effectively what we’ll have right now. You can create multiple communities of the same name but one will eventually become the main community that people will visit. And we could already create “backup” communities because I’m pretty sure the data from the main community is already sent to all the instances that have users who are subscribed to said community. The data is already in other instances, it’s just a matter of reusing the data.
So the only crux of your solution is how the possible instance for the community would be chosen. And that’s a whole can of worms. It can’t be the same instance the community creator is a part of because that’s the solution we have right now. It can’t be completely random because I’m pretty sure there are instances that legally can’t have porn or piracy on their instance, or maybe the instance owner simply doesn’t want that on their instance. If there’s supposed to be distributed ledger that effectively prevents creating duplicate communities and that ledger is the same for all instances, then there must be a possibility that the new community ends up in an instance the community creators instance might be defederated from, otherwise a “pariah” instance (who are pretty much defederated from the majority of Lemmy) can reserve community names by defederating everyone and then creating communities. So that decision starts to have a lot factors which lets instances influence the decision. And in some ways there’s even an incentive to influence the decision because the more communities one instance has the more power they have over the entire lemmy side of the fediverse. If they defederate from another instance that instance can’t create those communities for the people on that instance (unless you go down the reddit route of having gaming vs games vs truegames).
And that’s just the decision of the primary source. There’s a whole other bucket of questions about the distributed ledger. For example how does the ledger change? If one community needs to be moved to a different instance who makes that decision? If it’s the primary source instance then how do other instances verify the ledger? If you have Instances A, B, C and C and instances A and B are defederated from C. Instance A has a community that gets assigned to instance D. Instance A sends a ledger change to instances B and D and then instance D send the change to C, but how does instance C know that the sent data is correct? Instance D could send the message that instance A set the community to instance B and there’s no way for instance C to verify that message. In fact most of my questions in my previous comment apply to the ledger as well because the ledger would have to exists on every instance.
And then there are other factors like what if Mbin sets up a community/magazine? Mbin doesn’t care about any ledger. Will we turn Lemmy into a walled garden and prevent Mbin from participating because they don’t want our ledger?
Backup communities don’t really exist right now. There are copies of things on other servers l, but they can’t become functioning communities. This has caused some communities to disappear when their instance went down. The biggest I remember is movies and TV related things.
Having a ledger helps with discovery, because instances now don’t know about other communities by default, it requires extra effort to seek them out until someone else has found them and subscribed. It’s not a big deal for established communities, but it does hurt building a new one.
I don’t have a great solution for admin of creation/movement of communities, but this isn’t meant to be a 100% solution. Distributed consensus is a concept that exists though. There’s no reason a community can’t go on a users instance as default, it just enables a community to potentially migrate for various reasons.
This doesn’t necessarily create a walled garden, as no one owns the walls. It does encourage everyone within Lemmy to maximally federate. I can’t say it significantly changes integration with other implementations as they were never very robust in the first place.
lol I’m trying to follow along with all your comments but it just feels like you’re trying to recreate reddit but with some type of block-chain servers handling the load instead of centralized servers.
Like, I get it. When you break it down, what’s the difference between reddit and Lemmy? You don’t like c/Games@lemmy.world, you can make c/Games@sh.itdoesnt.work. On reddit if you don’t like r/games, you can make r/games! or some other bullshit.
Only 2 big differences for me is 1. the hope that just having different instances gets people away from the “Main Hub” communities, 2. multiple instances means less chance of corporation enshittification. Your solution would just promote the eventual lose of both of the reasons I’m on Lemmy to begin with.
I do heavily encourage cross-posting though. Would love some sort of “tag” or something where it’s easier to cross-post to all of the communities that opt-in to be tagged in that category. Could have it so you can filter multi-posts using this feature so you’re not blanketed with the post if you’re subscribed to multiple communities in that category (could even choose a default like only the one with the most comments or your most active community gets highlighted while blocking all the rest, while still having the links in the post like how crosspost currently displays).
It’s not so much recreating reddit, as it is realizing that the content is the important part, not what server holds it. I want centralized content, because that’s how you get critical mass for communities to flourish. Decentralizing the ownership and hosting is where the federation benefits are anyway.
How would that even work? Imagine you spin up a brand new instance and create a new user and want to subscribe to a community. Because there is no one source of truth does the new instance simply not have the posts and comments that were made before the instance was created? If it’s supposed to get historic data as well from where is it getting from? Does it pick a random instance and pull all the posts and comments from that instance?
What if that instance is defederated from another instance with the same community and doesn’t contain the posts and comments from the defederated instance? Does your new instance have to go ask all the posts and comments from all the other instances to rebuild the community dataset on your instance? What if these two instances that are defederated both create the same post with the exact same content? Is that one or two posts?
What if user on one instance changes the name of the post but there’s some weird bug that allows only half the instances to register that change. Did that change actually happen or not? How do you solve the data inconsistencies if there’s no central source of truth?
What about moderation? There’s no central authority to define moderators or moderation policies. How do you verify who is actually a moderator and not someone trying to impersonate a moderator? What if different instances have different moderation policies, how would communities agree on a moderation policy if in essence both instances can claim authority over the community?
And these are still pretty high level questions. It would get more complex if we were to dig deeper into a possible solution. Even if it’s all technically solvable I think the solution would probably be so complex that it becomes unmaintainable which means it becomes unusable.
Setting up a new instance wouldn’t be significantly different than today. The difference would be instead of asking each instance individually for what communities they have you would use a distributed ledger to contain a list of communities with their primary and secondary instances. This would create the sigle source of truth for communities. As communities still have to physically exist somewhere, the designated primary instance would have the master record for the community and you could designate secondary instances for resilience and possibly spread out pulling that information.
Moderation doesn’t change significantly, primary instance admins would still be the fallback, but they could designate any user to be a moderator.
Defederation would be a little messy, but not a ton more than it is now. The primary would be the source of truth, if they don’t accept writes from an instance, then those posts and comments wouldn’t exist, (this is basically the same as one way federation now). If an instance wants to read from a community it’s on that instance to drop anything from instances they don’t federate with from the response from the primary.
As above, the primary instance is the source of truth, if a change doesn’t get there. There could be an eventually consistent cache on other instances for usability.
The difficult part would be how to handle changing the primary instance, or designating the primary for a newly created instance.
But that’s effectively what we’ll have right now. You can create multiple communities of the same name but one will eventually become the main community that people will visit. And we could already create “backup” communities because I’m pretty sure the data from the main community is already sent to all the instances that have users who are subscribed to said community. The data is already in other instances, it’s just a matter of reusing the data.
So the only crux of your solution is how the possible instance for the community would be chosen. And that’s a whole can of worms. It can’t be the same instance the community creator is a part of because that’s the solution we have right now. It can’t be completely random because I’m pretty sure there are instances that legally can’t have porn or piracy on their instance, or maybe the instance owner simply doesn’t want that on their instance. If there’s supposed to be distributed ledger that effectively prevents creating duplicate communities and that ledger is the same for all instances, then there must be a possibility that the new community ends up in an instance the community creators instance might be defederated from, otherwise a “pariah” instance (who are pretty much defederated from the majority of Lemmy) can reserve community names by defederating everyone and then creating communities. So that decision starts to have a lot factors which lets instances influence the decision. And in some ways there’s even an incentive to influence the decision because the more communities one instance has the more power they have over the entire lemmy side of the fediverse. If they defederate from another instance that instance can’t create those communities for the people on that instance (unless you go down the reddit route of having gaming vs games vs truegames).
And that’s just the decision of the primary source. There’s a whole other bucket of questions about the distributed ledger. For example how does the ledger change? If one community needs to be moved to a different instance who makes that decision? If it’s the primary source instance then how do other instances verify the ledger? If you have Instances A, B, C and C and instances A and B are defederated from C. Instance A has a community that gets assigned to instance D. Instance A sends a ledger change to instances B and D and then instance D send the change to C, but how does instance C know that the sent data is correct? Instance D could send the message that instance A set the community to instance B and there’s no way for instance C to verify that message. In fact most of my questions in my previous comment apply to the ledger as well because the ledger would have to exists on every instance.
And then there are other factors like what if Mbin sets up a community/magazine? Mbin doesn’t care about any ledger. Will we turn Lemmy into a walled garden and prevent Mbin from participating because they don’t want our ledger?
Backup communities don’t really exist right now. There are copies of things on other servers l, but they can’t become functioning communities. This has caused some communities to disappear when their instance went down. The biggest I remember is movies and TV related things.
Having a ledger helps with discovery, because instances now don’t know about other communities by default, it requires extra effort to seek them out until someone else has found them and subscribed. It’s not a big deal for established communities, but it does hurt building a new one.
I don’t have a great solution for admin of creation/movement of communities, but this isn’t meant to be a 100% solution. Distributed consensus is a concept that exists though. There’s no reason a community can’t go on a users instance as default, it just enables a community to potentially migrate for various reasons.
This doesn’t necessarily create a walled garden, as no one owns the walls. It does encourage everyone within Lemmy to maximally federate. I can’t say it significantly changes integration with other implementations as they were never very robust in the first place.
lol I’m trying to follow along with all your comments but it just feels like you’re trying to recreate reddit but with some type of block-chain servers handling the load instead of centralized servers.
Like, I get it. When you break it down, what’s the difference between reddit and Lemmy? You don’t like c/Games@lemmy.world, you can make c/Games@sh.itdoesnt.work. On reddit if you don’t like r/games, you can make r/games! or some other bullshit.
Only 2 big differences for me is 1. the hope that just having different instances gets people away from the “Main Hub” communities, 2. multiple instances means less chance of corporation enshittification. Your solution would just promote the eventual lose of both of the reasons I’m on Lemmy to begin with.
I do heavily encourage cross-posting though. Would love some sort of “tag” or something where it’s easier to cross-post to all of the communities that opt-in to be tagged in that category. Could have it so you can filter multi-posts using this feature so you’re not blanketed with the post if you’re subscribed to multiple communities in that category (could even choose a default like only the one with the most comments or your most active community gets highlighted while blocking all the rest, while still having the links in the post like how crosspost currently displays).
It’s not so much recreating reddit, as it is realizing that the content is the important part, not what server holds it. I want centralized content, because that’s how you get critical mass for communities to flourish. Decentralizing the ownership and hosting is where the federation benefits are anyway.