Correct me if I’m wrong. I read ActivityPub standards and dug a little into lemmy sources to understand how federation works. And I’m a bit disappointed. Every server just has a cache and the ability to fetch something from another known server. So if you start your own instance, there is no profit for the whole network until you have a significant piece of auditory (e.g. private instances or servers with no users). Are there any “balancers” to utilize these empty instances? Should we promote (or create in the first place) a way how to passively help lemmy with such fast growth?

  • TinfoilBeanieTech@lemmy.world
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    1 year ago

    You are right. On the one hand, it’s kind of bad, naive distributed architecture (my day job), it could have been done much better. On the other hand, the more important point is that it demonstrates an alternative to centralized. We’ll learn a lot about usage patterns here, get new ideas, and either improve Lemmy or build something better from the ground up. Big thanks to Reddit for driving users this way to test scalability and get much better knowledge of usage.

    • falcon15500@lemmy.nine-hells.net
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      It’s not distributed architecture as you normally think it - it’s a decentralised federation. It’s an important distinction from your typical distributed architecture app.

        • Senator Bum Cuckets@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          A distributed architecture generally refers to a single application or service designed to be resilient to individual data center failures. For example, Reddit, a centralized application controlled by Reddit itself, operates data centers around the world to process user transactions. In the event of an outage in a specific location, such as California, Reddit would still be able to function because its infrastructure for handling user requests and serving data would automatically switch to other functioning data centers elsewhere, like Nevada, Arizona, or Washington. This is an example of a distributed architecture.

          On the other hand, a decentralized federation does not consist of a single application. Instead, it involves a software platform like Lemmy, which is hosted on multiple individual hosts. When a user signs up with one host, they can interact with users from other hosts, but each host manages its own infrastructure. For instance, someone could host a Lemmy instance on an old laptop they found in their closet and name it ballsuckers.com, while another person could host a Lemmy instance in the cloud with a properly designed distributed architecture and name it bingbong.com. Each host is responsible for managing its own instance. Users from both instances can interact with each other, but if, for example, the hard drive of ballsuckers.com were to fail, the entire ballsuckers.com instance would go down. However, this would not affect bingbong.com because its infrastructure is separate and managed independently.

          I hope this helps!

    • Senator Bum Cuckets@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      What makes a distributed system good that Lemmy hasn’t done? Seems like a pretty robust system to me, seems like scaling issues are on the instance host themself. With Reddit’s experience, I don’t see how there are issues

      • Terrasque@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Disclaimer: I’ve only looked a bit at the protocols and high levels descriptions of how it works, and this is just my understanding of it. But it seems to track.

        let’s take … Selfhosted@lemmy.world for example. Right now lemmy.world is the Source of Truth on this, which means if you sign up for it on a different host, let’s say myawersomeinstance.com, that first contacts lemmy.world, copies over posts, and then subscribes on new posts for that. Actually not 100% sure if lemmy.world contacts myawersomeinstance.com when there’s a new post, or myawersomeinstance.com polls lemmy.world… But anyway, point is, lemmy.world is authority on it. myawersomeinstance.com also have Selfhosted@lemmy.world data, but it’s a copy of it. And lemmy.world is only authority. So if you post something, your server then sends it to lemmy.world and waits a reply. Then lemmy.world contacts all instances that has at least one user following this to tell about the new post. And that new post now exists on a few hundred databases.

        The problem is the scaling is whack. Okay, you can have 5000 federated servers with users subscribing to Selfhosted@lemmy.world, but that means lemmy.world needs to update 5000 servers per post, and there’ll be 5000x storage used for that post, and ALL 5000 servers contacts lemmy.world to get the new good stuff.

        Frankly, it’s a scaling nightmare. As for a different approach, you could have private / public keys and sign updates from lemmy.world and allow the other instances to fetch the new data from each other. That would also allow more relaxed caching, since it would be generally lower cost to re-fetch the data. Now you need aggressive caching because you don’t want lemmy.world to keel over and die form every server on the planet wanting to hear the latest and greatest posts all the time.

  • 0xCAFe@feddit.de
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    A network of (“thousands of”) servers has — like most things — pros and cons.

    Some of the pros are:

    • The network is more resiliant against outages. If lemmy.ml is down, all other users can still access the network.
    • It’s hard to take legal action against the network or to buy it out (like Big Players™ like to do to get rid of potential competitors).
    • It allows various similar or even conflicting moderation policies. The network, i.e. the infrastructure doesn’t allow or prohibit any specific opinion (the communities do).
    • It allows for different ways to pay the bills: goodwill of the admin, donaitions, ads, fee or selfhosting. The latter also allows great control over the data so you control your privacy.

    Some of the cons are:

    • Content is replicated across servers, which increases the total amount of data stored.
    • Latency and speed suffer.
    • Interoperability with the wider Fediverse is less than 100%, which can create confusion and frustration.
    • Discovery is more difficult.
  • preasket@lemy.lol
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I’ve suggested a routing protocol to the lemmy devs - to use federated instances to route all the messages to other federated instances. The idea was received with some interest, but it seems that people believe that there’s still a ton of performance that can be squeezed out from the current architecture through optimisations.

  • Demigodrick@lemmy.zip
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    This has definitely been a problem with communities being created on the bigger instances and not utilising smaller instances. Happy for someone to say I’m wrong etc, but I think there would be merit in capping instances to x number of users or communities, to force the user base to spread out.

    Also, the way signups work, (ie you find a community you like then click sign up but that signs you up to that instance), further exacerbates the issue and the confusion around how federation works. The sign up links on each instance should lead either to a page with an instance finder, or to a random instance that matches the profile of, and is already federated with, the instance you were on. Otherwise the larger instances have a monopoly and are just going to lead to a bad user experience when they can’t cope with the traffic.

    It’s a self defeating prophecy if users only want to sign up to the instances with the big communities, because then everyone is going to keep creating communities there and nobody is going to want to join a smaller instance.

    I might be talking nonsense and am happy to be told why that is all wrong :)

    • splitcircus@beehaw.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Yes, there should be instance caps, and they should be visible to users.

      That way users can scale, choose, without much thinking.

      This same techinque works everywhere, for example MMO games. You have availability visible and choose servers according to it.

      This would fix scaling partially without much technical changes.

  • ComplexLotus@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Since Lemmy instance are not backed by commercial interest, but rather by nice volunteers and donors that have money and time to spare, they will be heavily affected by economic downturns (we still can see commercial interests still affect users negatively tho with reddit). Here are my thoughts on the matter:

    • as far as I understand the owner of the domain: https://lemmy.world even has to pay for this fancy domain name in the DNS system … every month subscription service style
      • (and tbh I hate the Domain name system) why should I fund it with my own money?
      • if you hosted with an onion site over tor that expenditure would not exist, but how would users discover your site then? Let me know if you know something about this
    • in times of deflation (meaning money becomes worth more, spending some money on a self hosted lemmy instance becomes nonsensical)
    • tbh if I hosted a lemmy instance and the users of my instance posted high quality content in quantity I would use it to train my own LLM, that would at least create some economic incentive for me to host such a page … but managing spam and bots will be HARD

    That is why you should always back up your comments on your personal device, would be nice if lemmy had an automated way of doing this (I should look into this more)

  • LookThere@fedia.io
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    I’m quite worried of how well this federation system will work in the long run, especially when more people coming from Rexxit. As people make more post/comments, every federated instance will have to cache more redundant contents from each other, which also will use more storage thus increasing the fee of every instance hoster. There’s also another problem of visibility in search engines. Because Lemmy/Kbin can be hosted by anyone, it makes searching on a specific domain impossible, unlike how I can just add “reddit” in the search query. Also since there are multiple Lemmy/Kbin instances, there’s a chance there’ll be similar communities spread over, fragmenting the communities even further. Until they can find a way to fix those problem, I don’t think federation is suited for large scale communities.

    As for fragmentation problem, maybe adding a global search for communities like this will help reducing fragmentation. Users can still make their own community in their instance, while other people who don’t need to can easily find the community they want.

  • goldenarchmage@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 year ago

    It’s a bit worse than that actually. I’m now seeing several communities with exactly the same name that originate on different servers - so clearly Lemmy doesn’t have a rule about duplication once you cross a server boundary. That’s going to get unwieldy quite fast particularly if, I dunno, “Aww” gets popular on two separate servers at the same time - I guess I’ll have to subscribe to both…

    • a1studmuffin@aussie.zone
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      This is a feature, not a bug. But we definitely need a solution to make subscribing/coalescing them easier for users. Mastodon allows subscribing to topics (hashtags) - I think something similar is needed here, but that will evolve naturally over time.

      • NuclearArmWrestling@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Maybe have them coalesce based on channel name, but have local mods on each server. It’d be great if you could share moderation between trusted servers or trusted mods on different servers as well (this could be on a per-community or per-server basis).

    • Ataraxia@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Well one instance shouldn’t monopolize a community. If it takes a dump on one instance at least it exists elsewhere. If I want to start up my own cat community I don’t see why that’s an issue.

      • Saik0@lemmy.saik0.com
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        I agree, I don’t particularly see this as an actual issue… Nothing stops you from subscribing to both.

        Just like there could be a saik0@gmail.com and a saik0@yahoo.com. Nobody is confused with emails when it comes to this… The difference is that it’s slightly more work than reddit because r/aww is one particular thing and it’s assumed we’re talking about Reddit because of it’s unique format. Here it’s just c/aww on lemmy.ml, but that’s a bit of the point of the !aww@lemmy.ml structure of naming.

        I LOVE that there’s !aww@lemmy.ml and !aww@lemmy.world. Different communities ran by different groups will end up with different content. Then I can shop for the content I want myself.

        Nobody can singularly own the name. I always found that to be a big problem on reddit. r/trees comes to mind, if there was an actual arborist community that want r/trees, well they were fucked. And that’s kind of jacked. This way it doesn’t matter. Just pick a different instance that doesn’t already have c/trees and post there… or better, start your own instance to host it.

        I don’t know… in the future people could even start up instances of lemmy on domains like lemmy.jobs, lemmy.help or lemmy.hobby to aggregate major communities based on topics. lemmy.jobs for instance could be an instance that houses professional the arborist and the domain would make it clear the intent. Or even better… drop the lemmy all together and register jobs.social or similarly descriptive domain names.

        I know we’re all a hodge-podge of domains now because a lot of us are just spinning up instance on domains we already have… but the potential is there.

        • Toribor@corndog.uk
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          I’m not sure how this would work, but what about the concept of cross-instance communities? For users it would be a bit like a multi-reddit where you group various communities together into one aggregate list but when posting content you’d have to choose which instance it lands on. Mods would have to agree on a set of rules (and you’d have some communities split off due to differences), but otherwise it seems somewhat plausible.

          That would be one way to solve the problem of every instance having a version of one specific type of community.

        • SickIcarus@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          r/trees comes to mind, if there was an actual arborist community that want r/trees, well they were fucked.

          There was. They ended up with, I think, /r/marijuana_enthusiasts or something like that. It was quite funny to both sides, at least it was like 15 years ago.

        • Master@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          1
          ·
          1 year ago

          This problem existed on reddit too still. You have r/games r/game r/gamers r/gamenews r/gamernews etc. All trying to do the exact same thing.