After reading many Lemmy related discussions over the past days, it has become clear to me that what people expect from Lemmy / think it is, is quite different from what it actually is.

From the official documentation:

Lemmy is a selfhosted, federated social link aggregation and discussion forum. It consists of many different communities which are focused on different topics.

In other words, the Lemmy software tries to resemble Reddit and every instance that runs this software is (kind of) a Reddit clone.

Each instance is its own entire platform that is, due to federation, able to speak and pull in posts from other platforms that support the same federation protocol. Federation is often explained with the example of “imagine you could read all posts from Reddit, Facebook and Twitter on Reddit.” This is indeed true, just that in the case of Lemmy (and other Fediverse platforms) a considerable number of people have decided to run the same software for all their platforms. I.e., we now have a Reddit-A, Reddit-B, Reddit-C, Reddit-D and so on.

Lemmy is not a platform, Lemmy is an application, and people have decided to all use the same software to run their own social media platforms.

Most users, on the other hand (including me), expect a single distributed platform or system. This is also how federation is being (miss)explained by many members of the community. Users expect a network of nodes which all come together to form a single system, but at the moment we have a collection of identically looking platforms which all try to either be the same thing or something entirely different. While users are unable to tell them apart.

I believe this is either a major design flaw of Lemmy (or lack of any design) or it is precisely what the creators intended, and the software is being greatly misused.

To come closer to what many users expect from the platform, Lemmy should be split up into its structural components.

This means instead of the current instances, we would have two servers, user servers and community servers. Users would be solely responsible for providing user accounts to Lemmy users. Server admins can define registration policies as it is possible today and control who signs up to their server.

Community servers, on the other hand, would be responsible for hosting one or more communities and their sole purpose would be to distribute posts and their comments to users. These servers would still be able to define policies for how people are granted write access or who can create new communities, so there might be an application required to join a community server. Moderation would also happen on the community server according to the rules defined for the server and the individual communities.

A crucial point in this is that community servers do not federate with each other, there is no reason to. Federation mainly happens between user servers and community servers (user servers might also exchange details about their users).

This setup would truly resemble the analogy that is often cited when explaining the Fediverse, email. Email (in the context of Lemmy) consists of email providers like GMail or Hotmail, that enable their users to communicate via E-Mail, but they usually do not host the mailing lists a user might subscribe to.

Distributing Lemmy like this would greatly reduce what has to be considered when choosing a provider for a Lemmy account. User servers would solely be service providers that enable access to the platform, while community servers can provide hosting for communities as well as rules and moderation.

There is more that could be done in regard to distributing the platform, but this seems like the most obvious first step.

  • KNova@links.dartboard.social
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    This is essentially happening now. All the big servers (Lemmy.world / beehaw / Lemmy.ml) host the lions share of the content and discussion. Me and my users are essentially a user server in your example.

    • AngryClosetMonkey@feddit.deOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      1 year ago

      The problem, though, will be that you and your users have to create communities on your server as there is no way for them to create one on let’s say lemmy.world. This makes your instance yet another general purpose reddit clone which people have to discover to join your local communities. Or your users have to create alt accounts on lemmy.world just so that they can create a community, and that doesn’t sound great either.

      Ideally, the distribution would be the opposite of what you described and lemmy.world and lemmy.ml would be user servers, while there are many smaller community servers that focus on a particular topic, like infosec, memes and jokes, Q&A, tech, politics, NSFW and so on.

      • KNova@links.dartboard.social
        link
        fedilink
        English
        arrow-up
        5
        ·
        1 year ago

        I guess I’m not seeing any benefit to just having each of those communities you described run their own Lemmy instance. There is already LemmyNSFW.com for example. And then if they want a local community for music etc. they can have it, or subscribe to (a theoretical) LemmyMusic.com. Then users can have their home base but still subscribe to other remote communities.

        If discovery is the concern, that can be solved more easily than building out a entirely new infrastructure like you are proposing.

        • AngryClosetMonkey@feddit.deOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          Let’s say I create an account on LemmyMusic.com because that was the first instance that piped my interest. Later I discover a community on LemmyNSFW.com and I want to subscribe, but I can’t because LemmyMusic decided that they don’t want to federate with NSFW instances? For LemmyMusic this makes perfectly sense, but for my user it might not.

          People usually don’t create accounts because they want their data to be handled by music enthusiasts, but because they simply want access to the communities.

          Other example, my account is still on LemmyMusic.com but now I want to create a community for a thing that I came up with, it has nothing to do with music, so the only option I have is to create a different account on an other instance that is willing to host my community.

  • tebro@lemmy.tebro.fi
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    At least for me lemmyverse.net solves a lot of the discovery issue. If that kind of a crawling search feature could be better integrated into the platform it would be a lot smoother to find new stuff.

  • EccTM@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I believe this is either a major design flaw of Lemmy (or lack of any design) or it is precisely what the creators intended, and the software is being greatly misused.

    The design is as intended, and everything is federated at an Instance level, not a Community level, which always seems to be the thing that doesn’t click with people. You pick a home instance, and can view content across the fediverse from that location, regardless of platform. These platforms (Lemmy, Mastodon [twitter], Pixelfed [instagram], Friendica [facebook], PeerTube [YouTube], Funkwhale [Spotify-ish], etc…) are then independent silos of content accessible from anywhere.

    I don’t think we need to split users and content into separate instances, but I agree that having a platform agnostic approach to user accounts would probably benefit the fediverse in the long run, as currently when you pick your home instance (say Mastodon, for example) that user interface becomes the window you see the rest of the Fediverse through.

    Ideally, we should be able to have an account on a Mastodon instance @[email protected] that could be referenced and logged into from a Pixelfed instance for that experience, then jump to a Lemmy instance and see that content through that intended UI, all while playing some music on FunkWhale in another tab. I think we could expand the current system out to make this happen in time, but most of these federated platforms are still in their infancy.

    • AngryClosetMonkey@feddit.deOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      These platforms (Lemmy, Mastodon [twitter], Pixelfed [instagram], Friendica [facebook], PeerTube [YouTube], Funkwhale [Spotify-ish], etc…)

      This is the issue though. Pixelfed is not equal to Instagram, because Instagram is a platform while pixelfed is a software and once it’s being hosted on a server it becomes a new platform (every instance is it’s own platform). For things like pixelfed or mastodon which are one dimensional (I.e. users interacting with users) this is not much of an issue because federation opens up full access to the other platform.

      For lemmy and similar concepts this does not entirely work though, because they are two dimensional, users and communities. This creates an internal relationship between the two dimensions that is not equal to the relationship users from other instances have with the communities on the local instance.

      User accounts are also subjected to all the community rules an instance has chosen when (de)federation decisions are being made.

      There is really no reason why users and communities should live on the same instance, but it creates confusion and inconvenience for many users.

    • Meldrik@lemmy.wtf
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      The design is as intended, and everything is federated at an Instance level, not a Community level.

      Is that really the case? Instance A only know about specific communities from Instance B, if someone from Instance A subscribe to that specific community. So it’s by the communities that instances federated, right?

      • EccTM@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        The instances communicate which each other, not the communities. the communities are the data that is communicated. An instance requests info on a community if it wants that info, or else we’d just have every instance cloning every other instance completely. Instance A can have c/cats, Instance B can also have c/cats. Users on either instance can request both A/c/cats and B/c/cats.

        Maybe it’s a matter of perspective, but that’s what I would call federating on an server/instance level because the instances are doing the communicating.