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.

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

    Is there a way to move myself as an user from one server to another?

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

      This is the huge disconnect between what the fediverse is and what the users actually want.

      Users want the convenience of a single entity that floats around the different instances. They want to interact with community A on instance B and also commini X on instance Y.

      But most clients deal with it by letting you log in with multiple users on multiple instances

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

    What’s the vision for using lemmy? User should create an account on one server, and use all? Or should create users on multiple servers? The first one seems like the way to go, but it wasn’t quite clear for me when I signed up

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

    What are its greatest strengths and weaknesses? How would you improve it?

    There are some more obvious things, like mod tooling, but I’m gonna concentrate on smaller, niche UX issues that I think arise from how it is designed already, because I think there are probably already enough voices who will speak up for the bigger things.

    • Inconsistent language UX between lemmy-ui and Jerboa. Specifically, that Jerboa provides no way to specify the language of a post or comment.
    • Inconsistent parsing of markdown between lemmy-ui and Jerboa. Specifically. Superscript and subscript work fine on single words, but ^multiple words in superscript^ ~or in subscript~ do not display correctly in lemmy-ui. They do in Jerboa.

    It’s bad enough that third-party apps do these things (and others, like spoiler text) without following the spec consistently. But can they really be blamed when even the two main first-party UIs don’t do it right? The post/comment language feature is awesome, as is the fact that you can do such a wide variety of syntax including subscript. But if users are not getting a consistent experience with these across platforms, it leads to confusion.

    • Spoiler text syntax is clumsy. I like the idea of having collapsible text, but ::: spoiler [display text] is an insanely wordy way of doing it. In what other context is markdown do anything similar to requiring the literal text spoiler? It would be great if (a) an inline spoiler text syntax could be implemented, similar to >!Reddit's!< or ||Discord's||, and (b) if a more elegant collapsible text syntax could be created.
    • Lemmy has a nasty habit of transforming user input. I just found out it converts your backslashes into forward slashes (see this comment), but a while ago I noticed that it completely removes text posted between angle brackets <like this text>, which is annoying when trying to write pseudo-XML. {does it allow braces?} [square brackets?]. It feels to me like a relatively lazy attempt to sanitise user inputs, and it creates a poor UX, especially since I’m sure prepared statements and other safe data handling is employed. In my opinion any time you’re changing what a user wrote, that’s an anti-pattern. If you can’t just leave it how it is, it’s better to just block posting with a clear error message explaining why

    Basically, I’d just like to see an overall focus on the user experience and how it all fits together as a system.

    Also my little pet feature: keyboard navigation. Back on that other site, before the redesign, there was incredible keyboard navigation thanks to the Enhancement Suite. j/k to navigate up/down through comments. Enter to collapse. a/z to up/downvote. Etc. It’s a delight to use, and is a big part of the reason I could never move to the redesign, before I came over here. Not having that is a big drawback IMO.

    edit: looks like the angle brackets thing was <fixed> . Still need the backslash thing fixed.

    • Dessalines@lemmy.mlM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      All these are due to a lack of developers for open source in general. Jerboa needs more devs than just me and @MV-GH, but no one else has stepped up to take on fixing any of these. If there were 5 more of me, I could get these done, but I’m too busy.

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

        I had not. I had no idea that even existed, thanks!

        Do they have a Lemmy community for feedback? It’s super buggy right now unfortunately, with “a” taking me to the post on the poster’s instance, instead of upvoting (or at least taking me to the post on my instance…), and with all keyboard shortcuts handling alternative keyboard layouts in what I would consider to be the wrong way (though this is possibly debatable/up to preference).

    • Sleepless One@lemmy.ml
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Regarding the markdown point for lemmy-ui, I think part of the issue is that we don’t use a markdown parser tailored to our purposes. We use markdown-it, and our custom (non-common mark, so stuff like the spoiler blocks) stuff uses plugins for it like this one. One of these days I’d like to make a markdown parser specifically for Lemmy.

      • Nutomic@lemmy.mlOPM
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        The plugin architecture for markdown makes a lot of sense, because it allows other projects to mix and match markdown rules for their specific use case. I also used some of your Rust markdown plugins for Ibis.

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

    I’m just a user and don’t follow the project super closely so please forgive me if this has already been addressed somewhere.

    Is there any sort of JavaScript-less interface that would work properly on the Tor network with strict settings enabled? And could you set up instances only with a .onion domain? That way you don’t have to pay for a domain and you’re not at risk of having your domain yanked by ICANN, etc.

    If I remember correctly, there was a mastodon instance that was using like a Pakistan domain or something like that and they yanked it.

    Also, Federation between Onion and Standard Domains that way tor users would not be isolated.

    My main reason for asking is that in my worldview, governments want to break encryption and break freedom of speech, if at all possible, and so the dark web is going to be more and more necessary as time goes on.

    • Tiff@reddthat.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Federation between Onion and Standard Domains that way tor users would not be isolated

      This is the hardest part as you would need to be both have an onion and have a standard domain, or be a tor-only Federation.

      You can easily create a server and allow tor users to use it, which unless a Lemmy server actively blocks tor, you’d be welcome to join via it. But federation from a clearnet to onion cannot happen. It’s the same reason behind why email hasn’t taken off in onionland. The only way email happens is when the providers actively re-map a cleanet domain to an onion domain.

      This is what Lemmy would need to do. But then you would have people who could signup continuously over tor and reek havok on the fediverse with no real stopping them. You would then have onion users creating content that would be federated out to other instances. & User generated content from tor users also is … Not portrayed in the best light.
      I’m sure someone will eventually create an onion Lemmy instance, but it has it’s own problems to deal with.
      This is especially true for lack of moderation tools, automated processes, and spammers who already are getting through the cracks.

    • Nutomic@lemmy.mlOPM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      There is documentation for running a Lemmy instance over Tor, and one of the many frontends probably works without JS. If not someone could implement it with the API. Anyway there doesnt seem to be much interest in practice, because the clearnet works good enough for now.

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

        Okay, that shows how to make the interfaces available over the network. But is there planned functionality for making Federation work? Even if you don’t federate to clearnet domains, you could have several onion instances that could federate with each other and have a network of onion instances.

        • Nutomic@lemmy.mlOPM
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          Federation uses standard HTTP so it shouldnt require any specific support. If you want to send outgoing federation over Tor you can set a proxy via environment. Youre welcome to test these things and update the documentation with your results.

  • m_‮f@discuss.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Not really a question, but something to think about is being more strict about backwards compatibility so that people don’t get burnt out on having stuff break. Coming from this post by the Tesseract dev, who did not like the breaking changes to the v3 API in 1.0: https://dubvee.org/post/2904152

    To formulate that into an actual question, do you think the changes are still worth it and you’d make the same decision to break backwards compatibility?

    • sabreW4K3@lazysoci.al
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Having a tantrum because breaking changes were announced is asinine. The Tesseract developer comes across like a proper twat.

    • Dessalines@lemmy.mlM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      This is all a matter of dev resources. If we had maybe 6 full-time devs, we could handle things like backwards compatibility.

      People forget that lemmy, like other open source hobby projects, don’t have the resources that large corporations do. People understandably get frustrated when there’s breaking changes, but they also need to not put enterprise-level expectations on a small number of people.

      If someone wanted to work on that, of course we wouldn’t be opposed, but you should know how monumental a task that would be.

    • Nutomic@lemmy.mlOPM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      I would reply directly to that post, but it looks like the admin (who is also the Tesseract dev) has completely blocked federation with lemmy.ml by IP block or useragent block. So Im going to respond here to his complaints:

      Lemmy didnt have a single breaking change since version 0.19 which was released 1 year and 4 months ago. And the breaking changes in that version were quite minor. Before that was 0.18, 1 year and 6 months earlier. That version only removed websockets, so most third-party app devs who used the HTTP API didnt notice any difference. Meaning the API has been almost unchanged for over three years which is quite long for a project that hasnt reached a stable version yet. 1.0 includes all the breaking changes that were held back over the years, so that we dont need any more breaking changes for a long time.

      That said it would be great if we could keep backwards compatibility with the existing API in Lemmy 1.0. Problem is with all the major changes we are doing now, it would take a huge amount of work to implement this kind of backwards compatibility. If we had twice as many fulltime developers working on Lemmy this would be doable, but our resources are very limited so we have to make some compromises.

  • pleasegoaway@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Reddit has far more niche communities. There’s the saying that “there’s a subreddit for everything.”

    What do you think the trajectory/timeline looks like for lemmy to develop a more robust array of niche communities (aka niche subreddits)?

  • lorty@lemmygrad.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Do you feel a recommendation algorithm of some sorts is something lemmy will need for bigger audiences?

  • Itte@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year 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

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

    More customization for site owners. I have an independent instance and there’s a lot of things on there that are confusing for people unfamiliar with the fefiverse or lemmy. It would also be nice to remove the donation beg at the top. I know Lemmy needs funding, but it makes it look like I’m asking for donations.

  • ☆ Yσɠƚԋσʂ ☆@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year 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.

    • Dessalines@lemmy.mlM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year 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σɠƚԋσʂ ☆@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year 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)@lemmy.ca
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year 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).

    • Nutomic@lemmy.mlOPM
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year 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σɠƚԋσʂ ☆@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year 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.

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

    Dunno if I’m too late, but here goes. My question is about federation between instances.

    On PeerTube an instance follows another instance and then federates every channel and videos available.

    On Lemmy, the user can follow a specific community and then that community will federate with the users instance.

    How about being able to, either as the instance itself or a user, to follow an entire instance and have it federate everything?

    An example. I have a user on Lemmy.wtf, but I am also very interested in the communities at Feddit.dk. I never know when new communities have been created on Feddit.dk, unless I go directly to Feddit.dk and look. If I could subscribe my instance to Feddit.dk, then all future communities would be visible to me automatically.

    If something like that isn’t possible, then what about being able to browse other instance’s communities from my own instance?

  • OsrsNeedsF2P@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year 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
      arrow-up
      0
      ·
      1 year ago
      1. There is no specific maximum capacity, in theory it can scale indefinitely with horizontal 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@reddthat.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year 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.