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.
When creating a comm, there are icon/banner inputs. They are ignored and must be set after the comm is created.
@[email protected] 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.
That will be done automatically once we update js client to use the latest backend structs, and then update lemmy-ui to use the latest js client.
Tags look Nice: https://voyager.lemmy.ml/post/16768
I didn’t find the option, how do you create them from the UI?
You need to be a community mod, and then go to the community settings (it’s a separate page now). In the settings theres a tab for managing tags.
And when creating or editing a post, you can add tags at the bottom of the form.
Can’t wait for Summit to start rolling out support for v1.
Reading through the codebase to find where those dastardly .ml devs injected the Leftist Extremism.
Affero General Public License? That sounds like it’s coming straight from Stalin’s mouth
LET’S GOOOO
So many exciting features!! Love to see Lemmy come so far
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.
This stuff was implemented completely wrong.
- 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?
Makes sense, fixed that.
Type: Posts
Does not filter out comments on user profile
https://github.com/LemmyNet/lemmy/pull/6524
Thanks for all your testing!
Thanks for all the fixing and filing (and work towards getting here)

Cursor pagination is a potential big QOL upgrade
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:2I 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)
Hah, should have read this first. Error importing and exporting for me.
Tried exporting again and it succeeded. Didn’t expect to be able to immediately upload, can’t, error message isn’t helpful.
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
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… @[email protected] 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
I changed the rate limit for imports to 10 per hour now.
Not on enterprise, though I was able to import there now
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.
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_commfrom 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.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.
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.

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?
Also hit an error trying to upload an avatar (webp format) that worked previously. Doesn’t show in my uploads.
Good catch, fix is here: https://github.com/LemmyNet/lemmy/pull/6507
Very recent regression: pushing any of the styling buttons on the comment input automatically posts it immediately
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
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.
Gotcha, should have checked the allow list but assumed the partial federation of this post meant it was enabled!
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.
Yes thats a bug, the image upload works but it doesnt put it in the post url automatically.
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.
Not a regression, but not fixed: chat view doesn’t show comments below the fold.








