What is lemmy

Lemmy is a self-hosted social link aggregation and discussion platform. It is completely free and open, and not controlled by any company. This means that there is no advertising, tracking, or secret algorithms. Content is organized into communities, so it is easy to subscribe to topics that you are interested in, and ignore others. Voting is used to bring the most interesting items to the top.


Two years have already passed since we started working on some major new features for Lemmy. Back then we still planned to release them as version 0.20, but over time the scope expanded and it turned into version 1.0 instead. Besides many new features, we also took the opportunity to do a lot of cleanup work, so that 1.0 can remain stable for a very long time.

Below you can see the list of major new features. This is far from complete because there are simply too many changes to list. In general, any Github issue which was fixed over the last two years and didn't get into version 0.19, will be part of version 1.0.

For users:

  • Redesigned UI: New card view, less clutter
  • Post Tags: Categorize posts within a community.
  • Multi-communities: Group different communities together into a custom feed.
  • Post scheduling: Specify when your post should be published.
  • Keyword filter: Automatically hide posts about certain topics.
  • Private communities: Only approved followers can view the content (plus other community visibilities).
  • Notifications improvements including notifications for mod actions, and subscribing to community/post notifications.
  • Combined Feeds: view your liked posts and comments together in a single list.
  • User vote totals: There is a setting to view the vote totals you've given to any user.
  • User notes: You can make and view notes for any user.
  • GDPR style data exporting: You can now export your historical data as a JSON file.

Other changes:

  • Comment Locking: Comments can now be locked, and it also locks any reply comments.
  • Plugins: Can be written in JS, Python, Rust, and any other language that targets Webassembly. See the documentation for details.
  • Cursor pagination: Don't lose your place in the feed when switching pages.
  • OAuth: Login to Lemmy with existing account from another website.
  • New API v4: Apps and frontends need to be updated to take advantage of new features. There is also a backwards compatible API v3 available.

The main work which still needs to be done before the official release is SQL optimizations. Some queries are still too slow, taking up to 300ms. And the database migrations from 0.19 to 1.0 take roughly 20 hours for lemmy.ml (smaller instances will be much faster). If you are an expert with PostgreSQL we need your help. Please have a look at the following issues which include all the relevant details:

The other remaining task is testing and bug fixing. Now it is your turn as Lemmy users: on voyager.lemmy.ml try the new version and create an account. Signups are open, feel free to make posts, create communities and do everything else that can be done. Spamming test posts is absolutely encouraged. See how the new features work, and open an issue if you encounter any problem (backend, frontend).

If you run a test instance for Lemmy, we suggest that you upgrade it to 1.0.0-beta.0 by following the instructions. You can also try to run the 1.0 database migrations against a local copy of your production database. This will show how long the upgrade process will take, and help to reveal bugs in the migrations.

Be careful about upgrading production instances. In principle you can already use 1.0 in production. Be sure that you have working backups and that you can restore them. Expect to tolerate major bugs, or to revert back to the stable version for now. If you have any problems, join the admin chat on matrix or ask in /c/lemmy-support.

For developers of Lemmy apps and clients, now is the time to start updating your projects to use the new API v4. This will give you enough time to use the new API once Lemmy 1.0 is finally released. See the API v4 upgrade guide for instructions. If you develop any tools which integrate with Lemmy, have a look at the new plugin system.

Over the next months we will focus on testing and bug fixing. Afterwards, when when all major problems are fixed we will go to the release candidate phase. Then lemmy.ml will be upgraded to version 1.0.0-rc.0 to find remaining problems in production. When these are also resolved we will publish the final 1.0 release.

Thanks to everyone who contributed to the new release so far!


An open source project the size of Lemmy needs constant work to manage the project, implement new features and fix bugs. Dessalines and Nutomic work full-time on these tasks and more. As there is no advertising or tracking, all of our work is funded through donations. Even so there is barely enough time in the day, and no time for a second job. The only available option are user donations.

To keep it viable donations need to reach a minimum of 5000€ per month, resulting in a modest salary of 2500€ per developer. If that goal is reached we can stop worrying about money, and fully focus on improving the software for the benefit of all users and instances. We especially rely on recurring donations to secure the long-term development and make Lemmy the best it can be.

Donate

top 98 comments

sorted by: hot top controversial new old
[–] 47 points 5 months ago (1 child)

Reading through the codebase to find where those dastardly .ml devs injected the Leftist Extremism.

  • source
  • hideshow 1 child comment
  • [–] 28 points 5 months ago

    LET'S GOOOO

    So many exciting features!! Love to see Lemmy come so far

  • source
  • [–] 24 points 5 months ago

    Kudos on the major release. O7

  • source
  • [–] 20 points 5 months ago

    Very cool! Made a test account, might play around with it.

  • source
  • [–] 18 points 5 months ago (2 children)
  • [–] 17 points 5 months ago

    Take my money mr magic man

  • source
  • [–] 16 points 5 months ago (2 children)

    Is there any plan for having polls?

  • source
  • hideshow 2 child comments
  • [–] 15 points 5 months ago
    [–] 14 points 5 months ago

    Can't wait for Summit to start rolling out support for v1.

  • source
  • [–] 10 points 5 months ago

    Not gonna lie I was compulsively checking the community for the beta lol. This is amazing news to wake up to!

  • source
  • [–] 9 points 5 months ago

    I deeply appreciate the work you do, hopefully the clients and frontends will soon support these features

  • source
  • [–] 8 points 5 months ago

    This is great news! Really looking forward to oauth users coming in

  • source
  • [–] 8 points 5 months ago (9 children)

    is there a way to have a 1 column card view?

  • source
  • hideshow 9 child comments
  • [–] [S] 13 points 5 months ago (8 children)

    Yeah I just made a pull request to change large card view to single column.

    https://github.com/LemmyNet/lemmy-ui/pull/4110

  • source
  • parent
  • hideshow 8 child comments
  • [–] 4 points 5 months ago (7 children)

    Oh, I thought the style was already defined. Is the image being on the right instead of the left (as it's currently) in the list view also something that can be changed? It just makes more sense to me, since the content is there, it looks more fitting.

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 6 points 5 months ago (6 children)

    Yeah I'm not sure why @dessalines@lemmy.ml moved thumbnails to the right, to me it also looks odd.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 7 points 5 months ago (5 children)

    Left-aligned titles, right aligned thumbs matches most mobile UIs, including boost, jerboa, etc. I also prefer it.

    PR was here: https://github.com/LemmyNet/lemmy-ui/pull/3512

  • source
  • parent
  • hideshow 5 child comments
  • [–] 4 points 5 months ago* (last edited 5 months ago) (4 children)

    The current behavior is to have left aligned thumbs on a wide screen and right on a narrow screen, is there are reason to have it uniform that I'm not seeing?

    screenshots

    Also being able to view posts without having to go to the comment section is really good I don't understand why that needed to go?

    Also also having to open and close images in list view is rather annoying, i wanna scroll scroll scroll, and not have to choose whether clicking on that post or this post is worth it.

    I am loving the update overall though sorry to focus on the negatives

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 5 months ago (3 children)

    Also being able to view posts without having to go to the comment section is really good I don't understand why that needed to go?

    I don't understand what this means. You can definitely view posts from the home or community pages.

    Also also having to open and close images in list view is rather annoying,

    The list view is a condensed view. Use the card view to see full-size images without having to use the image viewer.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 5 months ago* (2 children)

    I don’t understand what this means. You can definitely view posts from the home or community pages.

    I can see the title of a post but to view the body I have to open the post. Basically I miss the little ⊞ icon to expand the post, i really like that button and use it a lot. Ideally with a similar option for pictures. (I don't like leaving the page unless it is to comment)

  • source
  • parent
  • hideshow 2 child comments
  • [–] 7 points 5 months ago

    Cursor pagination is a potential big QOL upgrade

  • source
  • [+] 4 points 5 months ago (4 children)
  • congratulations on 1.0! woooooo! 🎉🎉🎉

  • source
  • [–] 3 points 5 months ago (1 child)

    I tried the new signup via Github and got an error

    client.js:2 Request error while calling POST /oauth/authenticate with {"code":"CODEREDACTED","oauth_provider_id":1,"redirect_uri":"https://voyager.lemmy.ml/oauth/callback"}
    wrapper	@	client.js:2
    
  • source
  • hideshow 1 child comment
  • [–] 3 points 5 months ago (2 children)

    When creating a comm, there are icon/banner inputs. They are ignored and must be set after the comm is created.

  • source
  • hideshow 2 child comments
  • [–] 1 point 5 months ago (1 child)

    @nutomic@lemmy.ml I see an issue related to this in the server repo, but I haven’t tracked down whether this was also addressed in ui yet.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 3 points 5 months ago (18 children)

    I tried to export/import my user settings and subscriptions, but the import failed in voyager with a 400 error (I didn’t have the network tab open so I didn’t see the error message, and now I’m rated limited so I’ll have to wait to check again)

  • source
  • hideshow 18 child comments
  • [–] 2 points 5 months ago (16 children)

    Hah, should have read this first. Error importing and exporting for me.

  • source
  • parent
  • hideshow 16 child comments
  • [–] 2 points 5 months ago (13 children)

    Tried exporting again and it succeeded. Didn’t expect to be able to immediately upload, can’t, error message isn’t helpful.

  • source
  • parent
  • hideshow 13 child comments
  • [–] [S] 2 points 5 months ago (12 children)

    Export from voyager and then import again works for me. But the rate limit is very strict so I have to restart Lemmy in between.

    https://github.com/LemmyNet/lemmy/issues/6508 https://github.com/LemmyNet/lemmy-ui/pull/4125

  • source
  • parent
  • hideshow 12 child comments
  • [–] 2 points 5 months ago (2 children)

    If enterprise could get restarted so I don’t need to wait 24+ hours to test the effects of federation after an import there, I’d appreciate it… @dessalines@lemmy.ml tagging you too because presumably either of you could help me bypass the export/import rate limit and I was silly enough to export instead of just importing something else I had from 0.19

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 5 months ago (8 children)

    I got a success message a couple times when I tried to import after my comment (probably thanks to restarts) but the changes didn’t appear to reflect (specifically to bio/display name).

    For bio in particular, it seems like that might be that the field isn’t populating properly. I didn’t think to check whether it displayed on my profile, but when I manually save a change to my bio, I’ve noticed the box is blank afterwards, but my profile page shows it.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 1 point 5 months ago* (last edited 5 months ago) (7 children)

    Got another import success, verified that it didn’t change my bio (or display name), even when viewing my profile page afterwards.

    Also, currently my display name wraps here, but it doesn’t there, instead increasing the page width. E: maybe that’s because the space didn’t fit E2: yep, it’s because my current name is 1 char longer than the max - also, also, also: “Invalid displayname” is more useful than the old error message, but “Display Name too long” or “Max display name length: N characters” would be more useful and easier understood.

    Also, also, I was able to see private_comm from the comm list and try to subscribe to it. Now it appears on my subscription list, but following the link doesn’t give me any option to remove my subscription request. I could presumably do that from the full comm list, but it’d be easier if I had a way to revoke (or submit) my request when trying to view it.

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 2 points 5 months ago (6 children)

    The fix for profile import works by ignoring all the profile settings. Thats because there are too many differences between 0.19 and 1.0 to make it easily work.

    For displayname length: https://github.com/LemmyNet/lemmy-ui/issues/4156

    Not sure what you mean with private comm, I can cancel my pending subscribe just fine either from the community list, or in the sidebar when viewing the community directly.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 2 points 5 months ago (1 child)

    I think at this point I was testing an export from voyager that I tweaked, but I’ll give that another shot. The default max length should definitely be at least 51 characters, not 50.

    When I first saw this bug, I thought it was the Private comm issue: https://github.com/LemmyNet/lemmy-ui/issues/4136

    Looking more closely, the sidebar does render there. It doesn’t for me.

    no sidebar probably because the screen isn’t wide enough to meet some breakpoint

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 5 months ago (3 children)

    Ok, the real bug is that if your display name has been edited to be longer than the max, the toast reports that the import was a success, but neither changes to your display name nor changes to your bio actually import successfully, even if the bio change would have been successful otherwise. If I don’t change my display name, the bio imports fine.

    I haven’t tested any other changes to import and whether they actually apply or not when the display name is too long.

    What will happen to my current display name on upgrade? Does it just get truncated? Stay the same but I can never edit settings again?

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 2 points 5 months ago (2 children)

    Thats because a too long username will make the update query fail, but we are updating errors from that specific query. Otherwise there would be errors all the time from empty update queries. Not a big problem imo, making profile import from 0.19 work perfectly would be too much effort.

    Here is the change to reduce max displayname length. As you can see existing names are truncated.

    I went through all your replies in this thread (at least the ones in my notifications) and open issues or made fixes for them. Thanks for your effort! I hope you will do more testing once we publish the next beta version.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 5 months ago (1 child)

    Sorry, I kinda split the context for my latest test across the two comments, but it’s not about import of a 0.19 export:

    1. Export from Voyager
    2. Modify display name and bio in the export
    3. Import in Voyager

    This works, unless the display name is longer than 50 characters, in which case neither field is updated but the import still reports success. I haven’t tried manually modifying any other settings to see if the behavior is different.

    I’d expect, either:

    • Because the import fails, it reports failure
    • Import partially succeeds, display name is truncated, ideally status message reflects partial success
    • Import partially succeeds, display name is unchanged, ideally status message reflects partial success

    Thanks for the link confirming my display name will be “handled properly” catgirl-sob

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 1 point 5 months ago*

    https://github.com/LemmyNet/lemmy/blob/main/crates/db_schema/src/impls/local_user.rs#L68

    Like I said, this is basically expected behaviour. Otherwise you would get an error every time you submit changes to user profile without changing any LocalUser value. For example only changing bio would throw an error because its stored in Person table, so LocalUser would have an empty update query. I suppose we could change it to explicitly check if every field is empty.

    And making the whole settings import fail because of a single value thats too long also doesnt sound good.

    Feel free to open an issue to discuss possible solutions, but its not a clear bug which can be easily fixed.

  • source
  • parent
  • [–] 2 points 5 months ago* (last edited 5 months ago) (4 children)

    When trying to edit this post the body never loads. E: Luckily, editing it without setting the body doesn’t clear it, and I can copy the source and edit to actually update, but that’s painful.

    Also, I’ll figure out soon what happened previously, but: an mp4 I tried to render in the post looked like it would work well enough when previewing, but created a pictrs mirror that fails with:

    {"error":"unknown","message":"error sending request for url (http://pictrs:8080/image/original?proxy=https%3A%2F%2Fscx2.b-cdn.net%2Fgfx%2Fvideo%2F2026%2Fbrookfield-zoo-chicago.mp4)","cause":"error sending request for url (http://pictrs:8080/image/original?proxy=https%3A%2F%2Fscx2.b-cdn.net%2Fgfx%2Fvideo%2F2026%2Fbrookfield-zoo-chicago.mp4)"}
    
  • source
  • hideshow 4 child comments
  • [–] 2 points 5 months ago* (3 children)

    Trying to post to an unlisted community shows a “Not found” error.

    Unlisted communities show on the creator’s/mod’s profile.

    Trying to visit an unlisted community as a non-creator/mod shows an error.

  • source
  • hideshow 3 child comments
  • [–] [S] 2 points 5 months ago (2 children)
  • [–] 1 point 5 months ago (1 child)
    • Unlisted communities should be shown in community list
    • Posts/comments from unlisted community should not be shown in All/Local feeds, but should be shown in subscribed feed and when viewing the community directly

    Neither of these quite match what I expected from an “Unlisted” community. I’m not sure how to name it to better reflect the actual intent, though.

    For the second, I guess the main way that doesn’t fully meet what I’d expect is that if I’m subscribed I’d think I’d see posts in all/local still?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 5 months ago

    Previously, errors generally would leave the content you tried to post available to retry or copy. I am currently rate limited, and the rate limit error clears the contents of my comment. If I had typed a meaningful comment, it would have been lost.

  • source
  • [–] 2 points 5 months ago (1 child)

    Not a regression, but not fixed: chat view doesn’t show comments below the fold.

  • source
  • hideshow 1 child comment
  • [–] 2 points 5 months ago (1 child)

    Long user notes don’t wrap

    Fake friend fake friend fake friend fake friend why are you stealing my username you piece of shit this isn't funny touch grass

  • source
  • hideshow 1 child comment
  • [–] 2 points 5 months ago (10 children)

    I used to have reliable ways of escaping the create post / cross post screen through navigation (back button basically never works when there’s some content) but now I end up even more stuck than I used to be.

  • source
  • hideshow 10 child comments
  • [–] [S] 2 points 5 months ago (9 children)

    Any more details on this? For me its working fine with back button and then press enter for the "Are you sure you want to leave?" dialog.

  • source
  • parent
  • hideshow 9 child comments
  • [–] 1 point 5 months ago* (last edited 5 months ago) (8 children)

    Hah, every tester knows you never divulge your environment until the dev can’t repro it.

    Unfortunately, this one might be difficult, and it’s possible it’s actually a browser bug, though I could swear there are other cases where I do get that prompt.

    I can reproduce it in iOS Safari, currently on iOS 26.3.1. I get the pop up if I try in Firefox or Chrome (still on iOS, and they both use the same WebKit afaik), though. I’ll update to the latest shortly and see if that changes anything, but I’ve had this issue in 0.19.x for a long time too.

    Updating to 26.5 did not change it.

    I’m still confused about why back doesn’t work at all, nor why it works in Chrome and Firefox when I thought they’re basically just reskinning safari, but it seems part of the issue is that beforeunload isn’t properly supported on iOS:

    https://bugs.webkit.org/show_bug.cgi?id=219102

    https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event

  • source
  • parent
  • hideshow 8 child comments
  • [–] [S] 2 points 5 months ago (7 children)

    Wow I didnt think that there are still problems like this on the web. Will be difficult to fix as we dont use iOS devices. Do you know if there is any workaround?

  • source
  • parent
  • hideshow 7 child comments
  • [–] 2 points 5 months ago (6 children)

    I’ve filed https://github.com/infernojs/inferno/issues/1699

    I don’t actually see any reference to the event in their repo and have not dug into how their router.history works deeply enough to understand it better than that.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 2 points 5 months ago (2 children)

    Thx for opening. Also be sure to open a bug on lemmy-ui if one doesn't exist. Going to be tough to solve because neither of us have iOS devices.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 5 months ago

    Also, I haven’t dug into the recent lemmy-ui changes to try to understand why, but today my standard workaround is happy again: navigate to my profile (or another link that causes the prompt to display), long-press the back button and skip the immediate xpost link for the one prior.

  • source
  • parent
  • [–] 2 points 5 months ago (1 child)

    Looks nice but definitely going to take some getting used to the new UI changes. Liking it for most part.

    Not able to successfully post an image so far, maybe something broke with iterations going on. They never show a thumbnail after upload and disappear from the post.

  • source
  • hideshow 1 child comment
  • [–] 1 point 5 months ago (2 children)

    While federation between here and voyager clearly somewhat worked at one point, it seems like it’s currently broken. Before starting this test, I verified that Voyager has 1 local subscriber to this comm. I then upvoted a different comment from each instance, and commented on the one I upvoted from the other instance. Neither my votes or comments appear to have federated in either direction.

    On https://phiresky.github.io/lemmy-federation-state/site?domain=lemmy.ml voyager’s last successful activity has increased several times.

    On https://phiresky.github.io/lemmy-federation-state/site?domain=voyager.lemmy.ml I consistently get an error.

    I upvoted this comment on ml and commented on it from voyager: https://voyager.lemmy.ml/post/16766/13025#comment-13025

    I upvoted this comment on voyager and commented on it from ml: https://lemmy.ml/post/47547535/25761105

  • source
  • hideshow 2 child comments
  • [–] [S] 2 points 5 months ago (1 child)

    voyager.lemmy.ml uses an allowlist for federation. Otherwise the server quickly gets overloaded when people subscribe to large communities on lemmy.world etc. You can test with enterprise.lemmy.ml (test instance with 0.19), and I can also allow other test instances.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 5 months ago* (last edited 5 months ago)

    Unable to manage (revoke) Private comm membership post-subscribe (maybe via ban if the user posts? Can’t if no post, haven’t verified if ban actually revokes view access) E: permanent bans do revoke access, haven’t tested others. Bans don’t show in your public modlog, do show in user inbox. That maybe makes sense. Request to (re)subscribe button does nothing?

    Unable to manage (grant) Private comm membership post-denial (unless user revokes and re-requests subscription)

    Notification for pending membership request not visible in header, only when expanding menu.

  • source
  • [–] 1 point 5 months ago (4 children)

    Hello @nutomic, could you add my instance to the allowlist? I'd like to test federation with private communities.

  • source
  • hideshow 4 child comments
  • [–] [S] 1 point 5 months ago (3 children)
  • [–] 2 points 5 months ago (2 children)

    Thanks!Tried to follow a private community, and I have a problem with this Accept activity:{"@context":["https://join-lemmy.org/context.json","https://www.w3.org/ns/activitystreams"],"actor":"https://voyager.lemmy.ml/c/privfedtest","id":"https://voyager.lemmy.ml/activities/accept/6a08b817-9dc2-498a-a637-9092c8ea15fc","object":{"actor":"https://mitra.social/users/silverpill","id":"https://voyager.lemmy.ml/activities/follow/3c08aca5-9e41-4d15-b134-326c4bd91bd0","object":"https://voyager.lemmy.ml/c/privfedtest","to":["https://voyager.lemmy.ml/c/privfedtest"],"type":"Follow"},"to":["https://mitra.social/users/silverpill"],"type":"Accept"} The id inside Accept.object is not the ID of my Follow activity, it's something different. Its origin is not my server:https://voyager.lemmy.ml/activities/follow/3c08aca5-9e41-4d15-b134-326c4bd91bd0

  • source
  • parent
  • hideshow 2 child comments
  • [–] [S] 1 point 5 months ago (1 child)
  • [–] 1 point 5 months ago

    I saw that PR was merged and tried again, but now Lemmy doesn't notify me (community admin) about the follow request, and doesn't send Accept. However, the community subscriber counter increases and private posts are delivered to the follower.

  • source
  • parent
  • [–] 1 point 5 months ago (3 children)

    Checking today, on Voyager:

    On enterprise:

    • my comment has not federated to voyager
    • same “pending” issue subscribing to a voyager comm
  • source
  • hideshow 3 child comments
  • [–] [S] 2 points 5 months ago (2 children)

    Checking now I also have one community pending, and another subscribed. Made a fix for private community permissions.

    Which comment specifically? Dont see anything recent on voyager. For me follow from enterprise to voyager worked fine.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 5 months ago (1 child)

    Not private:

    I just cancelled and resubmitted the request, though. Going to finish this comment, but guessing it won’t have worked by then.

    Not getting scrolled to the comment from this link, but this is the one that hasn’t federated: https://enterprise.lemmy.ml/post/1816/7119

    On Voyager, logged in as the mod/creator and having never unsubscribed, this is what I was seeing:

    Having removed and resubscribed, it now looks fine. I did the same for all the other comms I was previously subscribed to and was able to accept my request to rejoin the private comm I made & can now view it again.

    On enterprise, my request to subscribe to a public comm is still pending.

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 1 point 5 months ago

    Found the problem, on 0.19 you have a very long displayname and 1.0 cant fetch your profile for that reason. So all federation with your account is broken. Made a PR to fix it.

  • source
  • parent
  • load more comments
    view more: next ›