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.
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.
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?
Eternity Android client allows grouping communities into a multi community, but it only helps on getting consolidated feed, not necessarily reaching the same people
the Summit app does it too
How would two communities named
news
, work for say, a server about star trek, and another located in a city.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.
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?
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.
Good luck with [email protected] and [email protected]
Right, so, in some circumstances it wouldn’t necessarily be a good idea to join identically-named communities.
Maybe it should be more like the multireddit idea – people have to manually set up the links between the communities.
Ha! The discoursive whiplash would be immense.
This is a bad idea. They’re different communities. Full stop. They have different moderators. They may have different rules. I’m not even convinced communities using the same URL slug on different instances would even imply they’re the same topic.
That’s gonna be fun for cases like c/trees. Someone somewhere will get the joke, someone somewhere won’t.
[email protected] has several examples of consolidation
this post provides a good overview of this issue and possible solution. https://popcar.bearblog.dev/lemmy-needs-to-fix-its-community-separation-problem/
Proposed solution 3: Communities following communities
Really, really like that idea!
Not on the current roadmap of Lemmy 1.0, which is planned for autumn 2025
Being able to view “all” communities with the same name across all instances would be so nice.
The problem here is that a community [email protected] will have a completely different topic than [email protected] . In some cases the same name means same topic, in some cases not.
Having distinct communities is a feature, not a bug. If two cities set up their own lemmy instances, say
lemmy.sao_luis.br
, andlemmy.lagos.ng
, they can each have anews
community, without them overlapping.Do a search for metroid, and subscribe to whichever ones you like.
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 itsao_luis_news
or something.Who controls this universal community name system?
It’s a good question. Perhaps nobody needs to control it. Users of c/foo post on their own instance (or choose an instance to post on). Mods are responsible for posts on their own instances (as before). The difference is that when viewing c/foo, you see posts from all federated instances.
For news, politics, etc, which might cause trouble if combined, here’s a solution: Perhaps if your instance’s
c/foo
community has the “keep separated” flag enabled, then users on your instance browsing c/foo won’t see posts from other instances, and users on federated instances won’t see your instance’s c/foo posts when browsing c/foo.
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.
Piefed has exactly that: https://lemmy.dbzer0.com/post/38733273?scrollToComments=true
Interesting, is this all manually curated like multireddits? Would also be nice to have automatic ones (with include/exclude overrides)
The problem with it just being Piefed is that Lemmy clients probably won’t bother to support it unless it becomes standard.
Is this a frontend specific thing or does it also require the Piefed backend on your instance too? If it is just frontend, I would definitely use it for desktop browsing.
Dope seeing implementation diversity resulting in experimentation and innovation. Would love to see this adopted in other Lemmy implementations too
Interesting, is this all manually curated like multireddits? Would also be nice to have automatic ones (with include/exclude overrides)
They have both
- user defined feeds, public or private
- admin defined “topics”
It’s a whole different software, backend and frontend
They have both
Awesome!
It’s a whole different software, backend and frontend
I know Piefed is both a frontend and backend, but does this behavior require the backend? Like can it be used with a regular Lemmy backend and/or database without backwards-incompatible changes?
The frontend requires the backend. Feeds and topics are managed by the backend anyway
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.
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.
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.
Piefed has feeds that achieve exactly that: https://lemmy.dbzer0.com/post/38733273?scrollToComments=true
Nice! It also seems to be under discussion on lemmy’s github here: https://github.com/LemmyNet/lemmy/issues/818
I think the benefit of federation is that nobody controls the whole ecosystem. The downside of federation is splintering.
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.
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 islemmy.ml/c/dubstep
orlemmy.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
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.
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.
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.
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.
Who is your daddy and what does he do?
No seriously he’s retired and cooks his brain watching fox news all day. If he got off that drug for even a month he’d return to being a sweet and caring person.
Wait, I thought you’re French, dad sniffing the Fox from France?
Kindergarten cop right?
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.
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.
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)?
Hi, I think that Lemmy is great thank you for your hard work
I actually think that given the ads and other distorsions, and thanks to federation, Lemmy is overall actually better than reddit!
Some features I miss are:
- tags
- direct messages outside Lemmy (even if not encrypted)
- better rendering of posts on mastodon (something beyond the title only). Not sure what side is responsible for this, tho!
Keep up the good work guys!
- Tags are work in progress
- Not exactly sure what you mean by “direct messages outside Lemmy”, but in version 1.0 they will be compatible with Mastodon and other platforms
- Its a known problem with Mastodon because it only renders
Note
objects properly, which are meant for short texts less than a paragraph. Lemmy usesPage
which is meant for longer text. Some platforms like Wordpress (iirc) have an option to federate even long posts asNote
so that it gets rendered fully in Mastodon, but that seems like a bad idea to me. In the end its up to Mastodon how to render different types of federated content on their frontend, so it needs to be fixed by them. Here is an entire discussion about this by developers of different Fediverse platforms (including a Mastodon dev).
Thank you, great to hear all my points are being addressed! The thing about post rendering, well, I just hope a common solution is found 😊
What Is the airspeed velocity of an unladen swallow?
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 textspoiler
? 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.
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.
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.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.
Have you ever tried https://github.com/vmavromatis/Lemmy-keyboard-navigation ?
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).
Are there any plans to deal with the most common annoyances regarding Lemmy? In my opinion these are all based on federation:
- Some completely automated way for users to join Lemmy. Yeah, it’s not hard to select a server and it’s a “good thing to do”, but it’s still better to give people the option to go for convenience instead of the “proper” path. Maybe some kind of system where instances sign up for this general, convenience way of signing up, and the registered users just get automatically distributed evenly across those instances.
- Duplicate post aggregation. The nature of federation will always make it make sense to have duplicate communities, but this will also make posts with the same links, same images, same videos, etc show up in people’s “all” feeds multiple times. It is technically possible to algorithmically detect these duplicates and offer users a UI option (not actual backend merge) to merge them all visually into one post.
- A way to backup your whole user data and completely restore it on any instance you want. If an instance goes under, it should be possible to keep all subscriptions, all your posts, all your comments, and migrate them to a new instance.
Yeah, it’s not hard to select a server and it’s a “good thing to do”, but it’s still better to give people the option to go for convenience instead of the “proper” path.
We could add a “fast join” button to the signup dialog on join-lemmy.org , where it takes you to a random instance’s signup page.
Overall though, we should ignore the “advice” from reddit that tells us that people are too stupid to sign up for anything now. People did this for every forum and every other site all until ~2005 when US tech gobbled up most services, and ppl continue to show us that yes, they do know how to type in a username, password, and email to sign up for something.
Duplicate post aggregation. The nature of federation will always make it make sense to have duplicate communities, but this will also make posts with the same links, same images, same videos, etc show up in people’s “all” feeds multiple times.
In lemmy-ui we have a post-deduplicator for feeds, but unfortunately not a lot of other apps (including jerboa, that’s my bad) have added something similar.
A way to backup your whole user data and completely restore it on any instance you want. If an instance goes under, it should be possible to keep all subscriptions, all your posts, all your comments, and migrate them to a new instance.
Settings export already exists. Copying historical content and rewriting history isn’t possible in a federated system, but we do have an open issue for data export.
we should ignore the “advice” from reddit that tells us that people are too stupid to sign up for anything
Definitely agree. The problem is just when someone in the past said “you should join <forum x>!”, you were always able to just immediately go to forum x’s signup page and sign up. But if someone hears of Lemmy, and goes to join-lemmy.org, there is no way to go to a signup page directly. They have to first learn about the multiple servers, and choose one. I think a “fast join” button like you say should be fine, and immediately next to it something to catch all the advanced actually curious users with something like a “advanced sign-up”
In lemmy-ui we have a post-deduplicator for feeds
That’s weird, because that’s exactly from where I’m coming from, I’m always using the lemm.ee website directly on all my devices, and I constantly see duplicate posts.
Copying historical content and rewriting history isn’t possible in a federated system
I have less knowledge of this topic so I’ll defer to you, but I have the feeling this may not be true. You might of course not be able to ensure consistency between all instances, ensure that it’s been changed everywhere, but I really can’t see why this is any different than “editing” a comment’s content or a post title, which is already possible. Why wouldn’t it be possible to “edit” the comment/post author in exactly the same way?
Thanks for your response and all you’re doing!
That’s weird, because that’s exactly from where I’m coming from, I’m always using the lemm.ee website directly on all my devices, and I constantly see duplicate posts.
I was thinking about what you were saying yesterday and I had another look.
- on the subscribed feed, using “New Comments”, crossposts seem to indeed aggregate
- on the All feed, using “Top of the Day”, crossposts would indeed appear multiple times, depending on their respective scores
I like to use “Top of X” a lot 🤔
The problem is just when someone in the past said “you should join <forum x>!”, you were always able to just immediately go to forum x’s signup page and sign up. But if someone hears of Lemmy, and goes to join-lemmy.org, there is no way to go to a signup page directly.
People should probably stop saying “join Lemmy”, and instead link directly to the site/instance they suggest
Multispam is one of the things that is genuinely a threat to Lemmy’s usability. If you follow certain topics, you start seeing 2-5 copies of every post. It’s a genuine spam problem and “just block” or “just scroll” is as much of a non solution as it is with other spam.
Personally when I want to share something to multiple communities, I deliberately space out the posts in time. It has the slight downside of potentially showing up for a person repeatedly for days, but I think this is outweighed by the upside of them not seeing the same post multiple times within a few minutes, which is really annoying. And it has the added advantage of being more likely to be seen by people who weren’t online at the right time to see it the first time.
Sometimes. But other times the instance/moderation vibes of each post will be different. Sometimes I enjoy seeing how different groups respond.
Some users use it as an ideological war on instances they don’t like, which is extremely funny.
- A way to backup your whole user data and completely restore it on any instance you want. If an instance goes under, it should be possible to keep all subscriptions, all your posts, all your comments, and migrate them to a new instance.
This would be great… also I feel offering this might even be a requirement for a server to be fully GDPR compliant (though I could be wrong on that, IANAL).
it’s still better to give people the option to go for convenience instead of the “proper” path.
https://phtn.app/signup gives a prepopulated list
show up in people’s “all” feeds multiple times.
Which interface do you use? Crossposts only show up once on the default UI
A way to backup your whole user data and completely restore it on any instance you want. If an instance goes under, it should be possible to keep all subscriptions, all your posts, all your comments, and migrate them to a new instance.
You can already export and import your subscriptions between instances (account settings - import/export)
Posts and comments can’t be migrated, but Mastodon doesn’t allow it either.
Mastodon currently does not support importing posts or media due to technical limitations, but your archive can be viewed by any software that understands how to parse Activity Streams 2.0 documents.
gives a prepopulated list
The official one also does that. I’m talking about choosing a username, password, and email maybe, and then clicking register, and being done. No thinking involved.
Crossposts only show up once on the default UI
False, you get links to the other posts, of which you posted a screenshot, but each post is handled as being completely separate. If you are in the subscribed, local or all feeds, you would see all of these posts separately. Have you really never noticed scrolling by “the same” post multiple times? You have to go to each post manually to get all the comments to the “same” thing.
but Mastodon doesn’t allow it either […] due to technical limitations
Yes, I know that. But I’m also a programmer and I know that “technical limitations” is mostly a term for “that’s how we started it and it would be too costly to solve now, so we’ll just dismiss it” and not for actual limitations (i.e. not technically possible). It’d maybe require breaking changes of some kind or some kind of annoying backwards compatibility workaround, but that is why I’m asking. I’m not completely familiar with activity pub, but there’s likely some key used to verify posts/messages are made by a certain user, and there’s currently no way to transfer or change that key to a new account. But it seems very technically possible to me, and also possible without massive security issues. So that was my question, is there any plans to do this or no?
False, you get links to the other posts, of which you posted a screenshot, but each post is handled as being completely separate. If you are in the subscribed, local or all feeds, you would see all of these posts separately.
I understand your frustration, however these can be multiple posts but to different communities with varying focuses and moderation styles.
Simply consolidating all the comments in one introduces its own problems.
That’s why no one suggested “simply consolidating”. I didn’t suggest any solution at all. I’m just posing a question of if this actually pretty big problem is attempted to be handled.
I guess it’s just been mentioned too much in the past that it still comes to mind when I hear this. Sorry.
The official one also does that. I’m talking about choosing a username, password, and email maybe, and then clicking register, and being done. No thinking involved.
This should probably be handled more by people when they talk about Lemmy. Instead of explaining what Federation is, just point people to https://vger.app/settings/install so that they can install an app.
Voyager by default suggests Lemm.ee as the instance to register, so no thinking indeed: https://vger.app/profile
That’s the recommended approach nowadays on [email protected]
False, you get links to the other posts, of which you posted a screenshot, but each post is handled as being completely separate. If you are in the subscribed, local or all feeds, you would see all of these posts separately.
I only see them once in my subscribed feed. You may indeed see them multiple times if you are not subscribed to all the communities.
You have to go to each post manually to get all the comments to the “same” thing.
This one I agree, and it’s why I generally suggest to consolidate similar communities to solve that issue. [email protected] has quite a few examples of successful consolidations.
I’m not completely familiar with activity pub, but there’s likely some key used to verify posts/messages are made by a certain user, and there’s currently no way to transfer or change that key to a new account.
You’re looking for https://activitypods.org/ . I haven’t been following their recent progress, not sure how mature their solution is, and how many Fediverse platforms support them.
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.
When will anyone be able to click the following /c/books And see an agglomeration of all “books” communities on all federated server? I don’t mean multireddits Thanks!!
- 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?
- 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.
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
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.
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.
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).
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.
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.
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 @[email protected] 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.
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.
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
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.
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
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
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
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.
Do you have any plans to make it easier to manage the images stored in pictrs? One issue I have is that I used to proxy images, I no longer do that, but now I have like 300GB on backblaze doing nothing. In this post I outlined more precisely what I mean.