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.
- 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.
Some Lemmy clients offer the option to auto-hide posts and comments which contain certain keywords of the choice of the user. Are there any plans to implement this feature into the stock Lemmy experience?
I know it is possible to do some hacky stuff with UblockOrigin to do the same, but that is not something most know about and are willing to do.
This is currently work in progress.
Hello,
Thank you for organizing this AMA!
Starting with a quite expected question: when do you think you’ll be able to release Lemmy 1.0?
Its hard to say because these things always take longer than expected. Now we are finally getting to the point where all the breaking database and api changes are almost finished. After that it will take some months to update lemmy-ui for all the backend changes and new features, and the same for all other apps. Then a testing period to fix all the problems that come up. So maybe around autumn for the final release, although lemmy.ml and some other instances may upgrade some months before already.
Thank you!
With the rate ppl are adding issues (and we’re finding more), is sometimes feels like it keeps getting farther away than nearer, but we’ll get there in some months.
I think the greatest strength is that it is so compatible with other Threadyverse software like PieFed and Mbin. This brings a lot of freedom to the users.
Yes I’m very excited about the growth of other fediverse software, and a lot of the cool new features they’re adding. Its a great eco-system where we can experiment, be creative, and learn from each other.
the apps! the app support is really great for Lemmy
Absolutely agree on this point. My first app didn’t fulfill my requirements, so I just tested another one being able to configure it how I like.
Yes this is a major benefit of an open network. Lemmy is a very large project already, so it takes a lot of effort to implement new features, because they have to meet high standards for quality and performance and also work together with all the existing features. A project like Piefed is much smaller and can implement new features more quickly. This allows for more experimentation, and successful features can later be added to Lemmy.
Also users who are not happy with Lemmy for any reason can switch to a different platform while still interacting with those on Lemmy. So if Piefed and Mbin grow that is also a benefit for Lemmy.
Hi! As you might remember, i’ve been pushing for this platform for quite some time so i’ll just dump ideas in a pretty annoying way, hope you’ll spare me :3
- do you realize that the power of the threadiverse is that a forum can even fully exist alone and the federation between them is a plus while for microblogging it’s kinda a shit to not have the big reach? basically, are you going to bring lemmy in a ‘‘more forum’’ direction or a ‘‘more social’’ direction?
- will you ever take into consideration to eliminate downvotes? it’s clear that the reddit effect is already here and people are not incentivized to read the article and comment on point or discuss less agreable stuff just because posts gets downvoted?
- if on my instance downvotes are deactivated, do they still influence my home when I browse subs from other instances that have downvotes?
- more UI mod tools! they are never enough because a community manager has not to be also a sysadmin or a linux poweruser just to take care of the community; stuff like subscribing to blocklists and allowlists, stuff like deleting cached media and so on
- how is the plugin stuff going?
- wouldn’t it be better to drop the android client and the federated wiki to fully focus on making lemmy the best federated threadiverse software? now that nodebb has federation the competition is existent (mbin and piefed were never enough e.e) and other frontends are generally cooler (voyager basically brought me back on being active here)
- can we have a lemmy-first approach regarding comunication and contributions? basically i don’t want to make a github account to push some opinions and it seems like they kinda get ignored when on the lemmy community about lemmy
- ability to merge communities having them mirrored in a basic way i guess it’s already on his way
- would be cool to have tags/flairs but i understand that it is not easy (tags could also become a way to follow stuff on par with communities, with their pros and cons obv)
- would be cool to have lists to be able to browse lemmy from lemmy in a more rss way: for example there are communities i want to check once in a while but totally don’t want em in my home and having lists would help
- changing ‘‘favorite’’ posts into ‘‘bookmarks’’/‘‘saved’’
- would be cool to have the possibility to have a favorite users list to check what your friends are up to
- any other suggestion would basically be ‘‘can this thing that forums have also be ported to lemmy?’’, i just think that lemmy has to evolve into a forum first with a link aggregator ui; it’s kinda easy to use discourse as a bug tracker and feature request tracker for example (observation made because of the previous question of using lemmy instead of github for non code stuff)
- would be nice to have word filters and user notes
- also lobste.rs invite tree would be nice
- have you taken into account that maybe offering a service of lemmy hosting managed by you could help?
- dulcis in fundo, always about empowering non tech people, what about having lemmy on yunohost as one of the curated methods by the devs?
alright i think it’s enough lol; now one very big appreciation: thank you for the rss first approach, having rss for basically everything like it was on reddit (well still miss some query rss but i understand it’s harder to do) it’s really so fucking useful and cool and i really hope that lemmy will make niche communities shine again
I can confirm the sections around downvotes as Reddthat has the stance exact what you are talking about (re your child comments)
A downvote disabled instance creates it’s own algorithm/feed/ranking based purely on all other metrics, because as far as the data is concerned, it sees every post having 0 downvotes. It does not take into account external instances.
They did managed hosting before but everyone freaked out that the communist devs were controlling the narrative or some shit. It was a mess, I think they stopped doing it now that there are more instances.
Down votes should remain. It expresses dissatisfaction with peoples cringe bad takes
We offered free instance hosting for some time, in order to encourage the creation of new instances. That was before the Reddit migration when lemmy.ml was still by far the largest instance. It was a success because numerous instances like slrpnk.net and aussie.zone were started that way. But after the migration there was no need for it anymore as plenty of instances were created without our help.
It expresses dissatisfaction with peoples cringe bad takes
I wish this was real. In those cases the right button should be the report button anyway…
Having one vote to incentivize hive mind and another to punish a different opinion is just much more polarizing than having just the incentive only
It’s not rare to see people downvoting someone who wants an honest discussion and bringing their ideas to the table. (to be clear I’m not talking about people wanting to justify their racism or shit like that lol)
everyone freaked out that the communist devs were controlling the narrative or some shit
I must have forgotten 🫨
Cringe is not a reportable offense
will you ever take into consideration to eliminate downvotes?
There is an option in your settings so you don’t see upvotes or downvotes.
Lemmy (AFAIK) doesn’t even show you your total upvotes (karma… whatever it’s called) by default either. None of these imaginary points matter.
So why don’t you do yourself a favor and uncheck these boxes and not give a fuck what others think about your comment.
I know I have.
(Lemmy is rad as fuck)
I already hide them and my ego is already not touched by downvotes :P
I explained in another comment why I think they are deleterious nonetheless
It’s not about me, it’s about social dynamics :)
I already hide them and my ego is already not touched by downvotes :P
I explained in another comment why I think they are deleterious nonetheless
It’s not about me, it’s about social dynamics :)
If I’m not mistaken, instances like Hexbear already eliminate downvotes. I haven’t looked into whether that’s just a default setting for everyone or if it mechanically disables them, but it certainly creates a different social dynamic.
You cannot re-enable downvotes on Hexbear.net. Other instances can downvote Hexbear posts and comments, but those won’t appear for Hexbear users, and Hexbear users cannot downvote other posts or comments.
do you realize that the power of the threadiverse is that a forum can even fully exist alone and the federation between them is a plus while for microblogging it’s kinda a shit to not have the big reach? basically, are you going to bring lemmy in a ‘‘more forum’’ direction or a ‘‘more social’’ direction?
Im not a fan of microblogging, so for me Lemmy should definitely be more like a forum.
will you ever take into consideration to eliminate downvotes? it’s clear that the reddit effect is already here and people are not incentivized to read the article and comment on point or discuss less agreable stuff just because posts gets downvoted?
As mentioned by others, downvotes can already disabled by the instance, so that local users cannot downvote and federated downvotes are ignored. Lemmy 1.0 will also add per-community downvote settings.
if on my instance downvotes are deactivated, do they still influence my home when I browse subs from other instances that have downvotes?
Yes
more UI mod tools! they are never enough because a community manager has not to be also a sysadmin or a linux poweruser just to take care of the community; stuff like subscribing to blocklists and allowlists, stuff like deleting cached media and so on
I only work on the backend, lemmy-ui and other frontends could definitely use more contributors to work on these things. Im not familiar with all the different apps but they are probably missing many features that already exist in the backend. That said subscribing to blocklists and allowlists seems a bit risky, as you can end up with most instances subscribing to the same list, giving the creator a lot of power. I believe Mastodon or Twitter had some drama like that. Anyway this could be implemented with the API.
how is the plugin stuff going?
Practically finished, you can already start developing plugins.
wouldn’t it be better to drop the android client and the federated wiki to fully focus on making lemmy the best federated threadiverse software? now that nodebb has federation the competition is existent (mbin and piefed were never enough e.e) and other frontends are generally cooler (voyager basically brought me back on being active here)
Lemmy is not a company with a boss ordering the workers what to do. Everyone including me and Dessalines are volunteers, and chooses for himself what he wants to work on. As its all open source its not really competition, more users on NodeBB is also good for Lemmy as it means more user choice and activity.
One reason Im working on Ibis is because I waited for a long time for someone to start a federated wiki project. Its a major thing thats missing from the Fediverse. As no one else did, I have to do it myself. The other reason is to have something different that Lemmy to code on. Working on Lemmy can be quite exhausting because the project is already very mature, so every new change needs to pass tests, be approved by other maintainers and work with the existing features. Ibis is still in early stages and under my control alone, so I can do whatever I want.
can we have a lemmy-first approach regarding comunication and contributions? basically i don’t want to make a github account to push some opinions and it seems like they kinda get ignored when on the lemmy community about lemmy
I checked your profile and it looks like you received adequate replies for all the latest posts.
ability to merge communities having them mirrored in a basic way i guess it’s already on his way
There are open issues for these, but developer time is very limited so we need to set priorities.
would be cool to have tags/flairs but i understand that it is not easy (tags could also become a way to follow stuff on par with communities, with their pros and cons obv)
Theres an open pull request for post tags.
would be cool to have tags/flairs but i understand that it is not easy (tags could also become a way to follow stuff on par with communities, with their pros and cons obv) would be cool to have lists to be able to browse lemmy from lemmy in a more rss way: for example there are communities i want to check once in a while but totally don’t want em in my home and having lists would help changing ‘‘favorite’’ posts into ‘‘bookmarks’’/‘‘saved’’ would be cool to have the possibility to have a favorite users list to check what your friends are up to any other suggestion would basically be ‘‘can this thing that forums have also be ported to lemmy?’’, i just think that lemmy has to evolve into a forum first with a link aggregator ui; it’s kinda easy to use discourse as a bug tracker and feature request tracker for example (observation made because of the previous question of using lemmy instead of github for non code stuff) would be nice to have word filters and user notes also lobste.rs invite tree would be nice
A lot of things would be nice to have, but with the very limited resources we have there is only so much we can do. So we need to focus on the main functionality, its basically the unix philosophy: “Do one thing and do it well”.
have you taken into account that maybe offering a service of lemmy hosting managed by you could help?
Yes, but in the end I dont think the profit would be enough to justify the workload.
dulcis in fundo, always about empowering non tech people, what about having lemmy on yunohost as one of the curated methods by the devs?
We dont have time to manage yet another installation method, but anyone can help out and contribute there.
Wow these were a lot of questions :D
Wow these were a lot of questions :D
Ahah, y e s
Thank you for the answers, I’ll avoid answering back to not make a mess u.u
There’s a forum sort called
NewComments
, that servers and any user can use to turn lemmy into a forum-style feed.Instances can already disable downvotes site-wide, but we also already have fine-grained vote display settings:
Merging communities is no more possible than merging mastodon users.
Which mod tools do we need?
We already have RSS feeds.
We already have the ability to save posts and comments.
Word filters and flairs are in the works.
There’s too many other things here for me to answer.
I love the
NewComments
sort btw, to find and engage in ongoing discussions in threads that sometimes span weeks
To chime in on the user creation thing:
I think it’s a natural part of decentralization that it’s harder for a single instance to get big enough to be the “go-to” for general users.
Having said that, I also think this will naturally happen over time. As long as the mechanical aspects of sign up are simple, it’s just a matter of users of a given instance to promote their instance.
World events also always play a role in encouraging a move to freer waters. Look at what happened with Mastodon and Bluesky (though Bluesky imo is just a big snooze button on a blaring alarm)
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?
Divas have problems no matter what you do.
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.
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.
Obligatory XKCD: https://xkcd.com/1172
Having a tantrum because breaking changes were announced is asinine. The Tesseract developer comes across like a proper twat.
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.
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?
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?
More advertising! Boycott Reddit.
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.
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.
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).
Being a Lisper, the idea of waiting for the compiler is very jarring. :)
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.
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.
Yeah, if I was building something production ready in Lisp, Clojure would be my choice even though I prefer CL. Ecosystem is ultimately king.
For sure, having mature and battle tested libraries is really hard to beat.
I made the “i_love_jesus” library so Lemmy
Could I ask if there’s any meaning behind that name?
Nothing related to the library. I love Jesus. I’m Catholic and a little silly. Also my GitHub profile picture is Jesus.
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.
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.
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.
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.
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.
- 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?
- With Nicole in everyone’s DMs, what does the future of spam filtering look like on Lemmy?
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.
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
- There is no specific maximum capacity, in theory it can scale indefinitely with horizontal scaling.
- 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.
When a instance goes permanently offline, does the content vanish? If so, could there possibly be a way for another instance to “adopt” the content on their instance so those posts aren’t lost to time?
I think it might help reassure people to pick smaller instances.