In the last weeks Lemmy has seen a lot of growth, with thousands of new users. To welcome them we are holding this AMA to answer questions from the community. You can ask about the beginnings of Lemmy, how we see the future of Lemmy, our long-term goals, what makes Lemmy different from Reddit, about internet and social media in general, as well as personal questions.

We’d also like to hear your overall feedback on Lemmy: What are its greatest strengths and weaknesses? How would you improve it? What’s something you wish it had? What can our community do to ensure that we keep pulling users away from US tech companies, and into the fediverse?

Lemmy and Reddit may look similar at first glance, but there is a major difference. While Reddit is a corporation with thousands of employees and billionaire investors, Lemmy is nothing but an open source project run by volunteers. It was started in 2019 by @dessalines and @nutomic, turning into a fulltime job since 2020. For our income we are dependent on your donations, so please contribute if you can. We’d like to be able to add more full-time contributors to our co-op.

We will start answering questions from tomorrow (Wednesday). Besides @dessalines and @nutomic, other Lemmy contributors may also chime in to answer questions:

Here are our previous AMAs for those interested.

  • @NuclearDolphin@lemmy.ml
    link
    fedilink
    English
    346 days ago

    No questions right now. Just wanted to say thank you for your hard work.

    I know y’all catch a lot of shit and get hammered with requests/demands, so I wanted to let you know that your work is greatly appreciated.

    Thanks for dedicating your time and energy to making a non-corporate, federated social environment possible.

    Being on Lemmy has been a breath of fresh air.

  • diamat
    link
    fedilink
    English
    105 days ago

    Thanks a lot for the work you do! How do you get by with such a limited amount of funds? How sustainable is your financial situation if donations don’t pick up considerably?

  • @CheeseToastie@lazysoci.al
    link
    fedilink
    English
    186 days ago

    Just wanted to say I LOVE lemmy! It’s a really positive community, the atmosphere is great and I like how it’s unique but also familiar. I really appreciate your work on it. I know this is AMA… what’s your favourite animal?

  • asudox
    link
    fedilink
    English
    75 days ago

    Do you plan on moving away from GitHub to something else like Forgejo?

  • @interdimensionalmeme@lemmy.ml
    link
    fedilink
    English
    24 days ago

    When will users be able to frictionlessly migrate between instances without losing their posts, their comments, their history, their relationships, their reputation etc? (Without requiring the consent of the exiting instance owner, or that this server still even exists, as they sometimes don’t)

  • ☆ Yσɠƚԋσʂ ☆
    link
    fedilink
    English
    317 days ago

    What have been the biggest challenges with the project over the years, both in terms of technical and non technical aspects. I’d be interesting to hear a bit of retrospective on how has the stack’s been working out, and what surprises you might’ve run into in terms of scaling and federation. What recommendations you’d make based on that and what you would’ve done differently knowing what you know now.

    • @nutomic@lemmy.mlOPM
      link
      fedilink
      English
      176 days ago

      The stack is great, I wouldnt want to change anything. Postgres is very mature and performant, with a high focus on correctness. It can sometimes be difficult to optimize queries, but there are wizards like @dullbananas@lemmy.ca who know how to do that. Anyway there is no better alternative that I know of. Rust is also great, just like Postgres it is very performant and has a focus on correctness. Unlike most programming languages it is almost impossible to get any runtime crashes, which is very valuable for a webservice.

      The high performance means that less hardware is required to host a given number of users, compared to something like NodeJS or PHP. For example when kbin.social was popular, I remember it had to run on multiple beefy servers. Meanwhile lemmy.ml is still running on a single dedicated server, with much more active users. Or Mastodon having to handle incoming federation activities in background tasks which makes the code more complicated, while Lemmy can process them directly in the HTTP handler.

      Nevertheless, scaling for more users always has its surprises. I remember very early in development, Lemmy wasnt able to handle more than a dozen requests per second. Turns out we only used a single database connection instead of a connection pool, so each db query was running after that last one was finished, which of course is very slow. It seems obvious in retrospect, but you never notice this problem until there are a dozen or so users active at the same time.

      With the Reddit migration two years ago a lot of performance problems came up, as active users on Lemmy suddenly grew around 70 times. You can see some of that in the 0.18.x release announcements. One part of the solution was to add missing database indexes. Another was to remove websocket support, which was keeping a connection open for each user. That works fine with 100 users, but completely breaks down with 1000 or more.

      After all there is nothing I would do different really. It would have been good to know about these scaling problems earlier, but thats impossible. In fact for my project Ibis (federated wiki) Im using the exact same architecture as Lemmy.

      • ☆ Yσɠƚԋσʂ ☆
        link
        fedilink
        English
        76 days ago

        It’s great to hear things mostly worked out. Stuff like scaling bottlenecks is definitely tricky to catch until you have serious loads on the system, but sounds like the fixes very mostly trivial validating overall design. It also looks like you managed to get a way with a fairly simple stack by leveraging Postgres and Rust. I’ve had really good experience with using pg myself, and really don’t see a point in using anything else now. You can use it both as a relation db and a document store, so it’s extremely flexible on top of being highly performant. Keeping the stack simple tends to be underappreciated, and projects often just keep adding moving pieces which end up adding a lot of overhead and complexity in the end.

    • DessalinesM
      link
      fedilink
      English
      126 days ago

      2nding @nutomic, that I’m really happy with the stack.

      The one that seems really magical to me, is diesel. With it we get a compile-time-checked database, that’s tightly integrated to the rust objects / code.

      Every single join, select, insert, etc is checked before lemmy is even run, and it eliminates a whole category of errors resulting from mismaps.

      Its made adding columns, and changing our data structures so much less error-prone than when I lived in the java-world.

      Whenever we find that we’d want to do things differently, we usually do a refactor ASAP so as not to keep rolling spaghetti code. We’ve had to do this many times for the federation and DB code, and even have 2 major refactors that also add features ongoing. But luckily we’ve been able to stay in the rust eco-system for that.

      As for UI, leptos didn’t exist when I built lemmy-ui, so I went with a fast react-like alternative, inferno. Its showing its age now, so @sleepless1917 is working on lemmy-ui-leptos, which hopefully will supercede lemmy-ui.

      • ☆ Yσɠƚԋσʂ ☆
        link
        fedilink
        English
        36 days ago

        I briefly worked with Hasura which does this sort of magic to produce GraphQL API on top of Postgres. Incidentally, also written in Rust. I do like Leptos approach, it sounds similar to HTMX approach where you just treat the DOM as a dumb terminal.

    • dullbananas (Joseph Silva)
      link
      fedilink
      English
      56 days ago

      The stack is overall amazing, but not perfect. Waiting for the Rust code to compile is sometimes very annoying, but I wouldn’t want to use a different language. And we had to implement somewhat complicated things that existing Rust libraries did not do. For example, I made the “i_love_jesus” library so Lemmy could have cursor pagination that uses indexes well and allows bringing back the “back” button, we have a few custom QueryFragment impls because of diesel’s limitations, and we have a custom migration runner to do fancy stuff (see crates/db_schema/src/schema_setup.rs).

      • @can@sh.itjust.works
        link
        fedilink
        English
        46 days ago

        I made the “i_love_jesus” library so Lemmy

        Could I ask if there’s any meaning behind that name?

        • dullbananas (Joseph Silva)
          link
          fedilink
          English
          7
          edit-2
          6 days ago

          Nothing related to the library. I love Jesus. I’m Catholic and a little silly. Also my GitHub profile picture is Jesus.

          • @can@sh.itjust.works
            link
            fedilink
            English
            4
            edit-2
            6 days ago

            I don’t know what I expected lol. Cheers.

            Edit: I don’t mean this disrespectfully, it was just a very direct and obvious answer.

        • flamingos-can
          link
          fedilink
          English
          46 days ago

          Oh, to be able to develop Lemmy with something like SLIME or Geiser, now that would be a dream. Too bad the CL’s library ecosystem is so much worse than Rust’s.

          • ☆ Yσɠƚԋσʂ ☆
            link
            fedilink
            English
            56 days ago

            Clojure has a lot better story in that regard living on the JVM, but the overhead of using the JVM is a downside of its own. It’s a good platform, but definitely not what you’d call lightweight.

            • flamingos-can
              link
              fedilink
              English
              3
              edit-2
              6 days ago

              Yeah, if I was building something production ready in Lisp, Clojure would be my choice even though I prefer CL. Ecosystem is ultimately king.

  • @OsrsNeedsF2P@lemmy.ml
    link
    fedilink
    English
    257 days ago
    1. From a code architecture perspective, how close is Lemmy/ActivityPub to reaching its maximum capacity for posts/comments per second? Are there any ways to 10x the load ActivityPub can handle?
    2. With Nicole in everyone’s DMs, what does the future of spam filtering look like on Lemmy?
    • @nutomic@lemmy.mlOPM
      link
      fedilink
      English
      18
      edit-2
      6 days ago
      1. There is no specific maximum capacity, in theory it can scale indefinitely with horizontal scaling. Also see my reply here regarding scaling.
      2. 0.19.10 already includes a fix to remove private messages when a user gets banned which should help a lot. There is an issue about disabling private messages by default, but Im not sure if that will be necessary. Also 1.0 will include a plugin system, so other devs and instance admins can write their own checks. That way spam waves can be fought in a more flexible way, without having to get a change merged into Lemmy and then waiting for a new release.
    • Tiff
      link
      fedilink
      English
      56 days ago

      I can answer the first point.
      We’ve already tackled part of that problem with the Parallel Sending feature that can be enabled on instances with a tremendous amount of traffic. Currently the only instance that makes sense to enable that is LemmyWorld and the only reason is so servers in geographical far away can get more than 3-4 activities/second.

      With that feature, servers that eventually house and generate the biggest amounts of traffic will be able to successfully communicate all of those activities to everyone else who needs them.

      I predict a 10x increase is well in our grasp of easily accessible by all of our current systems. 1000x? That’s a different story which I don’t have the answers too.

      • Blaze (he/him)
        link
        fedilink
        English
        66 days ago

        Currently the only instance that makes sense to enable that is LemmyWorld and the only reason is so servers in geographical far away can get more than 3-4 activities/second.

        For the context, it’s still not enabled at this moment: https://lemm.ee/post/59055817

  • @eldavi@lemmy.ml
    link
    fedilink
    English
    35 days ago

    How would you improve it?

    a way to filter out posts that have no engagement or comments from others would be helpful since the larger instances flood my feed w hundreds/thousands of news links that flood out the discourse on lemmy.

  • Draconic NEO
    link
    fedilink
    English
    35 days ago

    Do you plan to introduce some kind of post tags into Lemmy, preferably something that will behave like Hashtags on Mastodon and other activitypub platforms? I know that Lemmy has been embedding community name as a hashtag for a while now, though having tags that can be populated by users would help discovery greatly.

  • @daytonah@lemmy.ml
    link
    fedilink
    English
    14 days ago
    1. I have no idea how and which server I joined, is there any manial I can read better yet visually see how servers are connected that are federated? Thx. And when we search something does it search across all servers? Thanks.
  • @Itte@sh.itjust.works
    link
    fedilink
    English
    12
    edit-2
    6 days ago
    1. What is your opinion on Bluesky being more popular than Mastodone because it is easier for most?

    2. Will Lemmy can become easy like Bluesky? Are there plans like that?

    thanks

    edit: lemmy dev replies only please

  • @jsomae@lemmy.ml
    link
    fedilink
    English
    167 days ago

    Communities should be more unified across servers, especially for niche ones. I want to see an active Metroid community, I don’t give a crap what instance is hosting it (or if it’s a mostly-opaque medley of instances) so long as I’m federated with it. This is probably the biggest UX misunderstanding new users have.

    • DessalinesM
      link
      fedilink
      English
      226 days ago

      Having distinct communities is a feature, not a bug. If two cities set up their own lemmy instances, say lemmy.sao_luis.br, and lemmy.lagos.ng, they can each have a news community, without them overlapping.

      Do a search for metroid, and subscribe to whichever ones you like.

      • @NuclearDolphin@lemmy.ml
        link
        fedilink
        English
        66 days ago

        It would still be a huge benefit, especially for more niche topics, if we had something like a federation-wide comm like /f/niche_hobby that you could subscribe to instead of 20 different /c/niche_hobby communities.

        Maybe comms could opt in/out of behavior to avoid the issue you described.

        This would also benefit smaller instances because few people will subscribe to their comms because they are too inactive, making it so their content never gets traction.

        My biggest complaint with Lemmy is that it is too hard to group & categorize content. Sometimes I want politics, sometimes I want nerd shit, but my only three options are subscribed, local, and all, which doesn’t have any categorization unless you are on an active, niche server.

        Multireddits are pretty much the only thing I miss from reddit.

      • @jsomae@lemmy.ml
        link
        fedilink
        English
        2
        edit-2
        6 days ago

        Look, this is just my take – I think this is bad UX. I’m not saying federation isn’t a good idea – on the contrary, I like the idea that many different posts in the same community are all hosted on different instances. Sure, for a community like news it doesn’t make as much sense – fixes for this would be that some communities don’t have the behaviour I’m suggesting, or the convention is to call it sao_luis_news or something.

    • Cowbee [he/they]
      link
      fedilink
      English
      146 days ago

      Consolidation isn’t always a good thing, communities on different instances will have different styles and trends, and that’s a good thing. The benefit of federated social media is just as much in local instances as it is in federation, unique niches are going to have unique comments even if the post is the exact same.

      • @jsomae@lemmy.ml
        link
        fedilink
        English
        56 days ago

        I think the benefit of federation is that nobody controls the whole ecosystem. The downside of federation is splintering.

        • Cowbee [he/they]
          link
          fedilink
          English
          46 days ago

          Less that nobody can control the whole thing, more that you can have full control of your own thing. Basically the same thing you said, but I think it’s important to note that many niche communities thrive on Lemmy.

          • @NuclearDolphin@lemmy.ml
            link
            fedilink
            English
            26 days ago

            Many more niche communities languish because they can never get enough traction to be seen.

            If I subscribe to /c/dubstep, chances are I don’t care if it is lemmy.ml/c/dubstep or lemmy.world/c/dubstep, but neither community is likely to be active because one comm on one instance needs to be the popular one for other users to sub and want to post there. What I really want is /f/dubstep

            • Cowbee [he/they]
              link
              fedilink
              English
              56 days ago

              I disagree, actually. The issue here is relying on communities to be active, rather than instances with a healthy size and sorting by new rather than active. Hexbear has a bunch of communities, but people sort by New so any post will have some traction.

              Lemmy works best when instances rely on themselves, and not federation. Federation is a bonus, not the point itself. Thinking of this massive fediverse as a single entity would mean it’s probably better to use Reddit, anyways.

              • @jsomae@lemmy.ml
                link
                fedilink
                English
                36 days ago

                Federation should be the point. I didn’t join Lemmy to join yet another reddit-like service but with far fewer users. I joined it because I want to be on something like reddit but which no one group controls. Otherwise I’d use threads, bluesky, etc.

                • Cowbee [he/they]
                  link
                  fedilink
                  English
                  26 days ago

                  Federation is one side of the equation, the fact that no one person controls it relies upon the fact that it isn’t centralized into few communities. It’s a double-edged sword, the same benefit is also potentially a drawback for others.

      • @Ferk@lemmy.ml
        link
        fedilink
        English
        6
        edit-2
        6 days ago

        It does not have to be something mandatory…

        I mean, there could be some form of “metacommunities”, something like being able to group multiple communities together in a “view” that shows them to you visually as if they were a single community despite being separated. Bonus points if everyone can make their own custom groupings (but others can subscribe to them… so there can be some community-managed groupings).

        In theory you could have multiple “metacommunities” for the same topic still… but at least they could be sharing the same posts if they share communities. I feel grouping like this would be helpful because small communities feel even smaller when they are split.

        I think reddit has something similar to that, multireddits or something I think they are called.

    • JackbyDev
      link
      fedilink
      English
      76 days ago

      To be totally honest, a lot of communities aren’t big enough yet to really necessitate splitting into niche communities yet. I don’t know if gaming/Metroid is an example of one that does or doesn’t meet that. It’s just an observation.

    • Zagorath
      link
      fedilink
      English
      107 days ago

      What exactly is it you’re asking for, though? A change in user behaviour towards consolidation? Some new feature of the platform similar to multi-reddits? How exactly do you suggest that should work?

      • @jsomae@lemmy.ml
        link
        fedilink
        English
        -66 days ago

        Not a change in user behaviour. How about: communities on different instances with the same name appear as one community essentially. As in, all instances’ version of that community appear in your feed if subscribed, and when viewing posts in a community, all instances versions of that community are visible.

        Perhaps the user can restrict to just one instance’s community or just the local instance’s community with a button (like local/all), if that’s their preference.

      • @tfm@europe.pub
        link
        fedilink
        English
        45 days ago

        Proposed solution 3: Communities following communities

        Really, really like that idea!

      • @Microw@lemm.ee
        link
        fedilink
        English
        76 days ago

        The problem here is that a community news@connecticut.social will have a completely different topic than news@mmorpg.net . In some cases the same name means same topic, in some cases not.

    • @murd0x@lemmy.ml
      link
      fedilink
      English
      47 days ago

      This should be among the first priorities. It would really help kick things off. Not only niche communities, but bigger ones as well. They represent topics of interest. I think I’ve seen a thing like macro community in one of the clients?! Could that be it?

      • DessalinesM
        link
        fedilink
        English
        86 days ago

        How would two communities named news, work for say, a server about star trek, and another located in a city.

        • @murd0x@lemmy.ml
          link
          fedilink
          English
          -16 days ago

          Well, what is each meant to represent? Should communities be constructed around the concept of topics, or should there be a server for each topic?

          And please don’t use any variant of “everybody can do it whichever they want”, because this just avoids the responsibility of offering a personal answer and shifts it to them.

          Personally I think the first (communities=topics)., while servers should provide voluntary redundancy for each other in case one of the servers has an inconvenient change of policies or circumstances for the users.

          But I am not on the creative team of Lemmy, so my vision might differ from theirs. Also, I’m willing to change my belief if more solid arguments are presented.

      • @murd0x@lemmy.ml
        link
        fedilink
        English
        67 days ago

        Eternity Android client allows grouping communities into a multi community, but it only helps on getting consolidated feed, not necessarily reaching the same people