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.
Changes
This release took a long time to complete due to a major performance problem which brought lemmy.ml to a crawl every time we tried to deploy the new version. It took a lot of testing (in production) to narrow it down to a single commit, and finally fix the problem.
The release itself contains numerous bug fixes and minor improvements:
Lemmy
Enhancements
- Parallel federation sending by @phiresky in #4623
- Reduce CPU usage for generating link previews by @phiresky in #4957
- Switch from OpenSSL to rustls by @kwaa in #4901
- Increase max post url length to 2000 characters by @dessalines in #4960
- Increase max length of user bio to 1000 charactes by @dessalines #5014
- Reduce maximum comment depth to 50 by @nutomic #5009
- Resize post thumbnails by @nutomic #5107/files
- Add category to RSS feeds by @nutomic #5030
- Allow users to view their own removed/deleted communities by @dessalines in #4912
- Add backend check to enforce hierarchy of admins and mods by @dessalines in #4860
- Do pictrs transformations for proxied image urls by @dessalines in #4895
- Enable more build optimizations by @nutomic in #5168
- Calculate "controversial" ranking with exponent instead of multiply (just like Reddit) by @dullbananas in #4872
- Automatically remove tracking parameters from URLs by @dessalines #5018
- Relax timeout for sending activities by @Nothing4You in #4864
Bug Fixes
- Fix admin notification for new user registration (fixes #4916) by @Nutomic in #4925
- Allow community settings changes by remote mods @flamingo-cant-draw in #4937
- Fix problem with connecting to Postgres with TLS @FenrirUnbound in #4910
- Fix bug when commenting in local-only community by @dessalines in #4854 and @abdel-m in #4920
- Fix scheduled task to delete users with denied applications by @Nothing4You in #4907
API
- Return image dimensions and content type in API responses by @dessalines in #4704
- Adding a show_read override to GetPosts. by @dessalines in #4846
- Add show_nsfw override filter to GetPosts. by @dessalines in #4889
- Require authentication for site metadata fetch endpoint by @dessalines in #4968
- Add the ability to fetch a registration application by person_id by @dessalines in #4913
- Order community posts by published data, not id by @dullbananas in #4859
- Throw error when non-mod posts to mod-only comm or when URL is blocked by @flamingo-cant-draw in #4966
- Add option to search exclusively by post title by Carlos-Cabello #5015
Database
- Approve applications in transaction by @Nothing4You in #4970
- Use trigger to generate apub URL in insert instead of update, and fix query planner options not being set when TLS is disabled by @dullbananas in #4797
Lemmy-UI
- Fix full-size post images. by @dessalines in #2797
- Fix modlog ID filtering. by @dessalines in #2795
- Allow Arabic and Cyrillic characters when signing up or creating community by @SleeplessOne1917
- UX - Swap "Select Language" and "Cancel/Preview/Reply" button locations around in commentsReverse order of buttons in Reply TextArea
- Fix jump to content by @SleeplessOne1917
- Fixing peertube and ordinary video embeds. by @dessalines in #2676
- Changing sameSite cookie from Strict to Lax. by @dessalines in #2677
- Remove show new post notifs setting. by @dessalines in #2675
- Fix memory leak around emojis on server render by @makotech222 in #2674
- Enable spellcheck for markdown text area by @SleeplessOne1917 in #2669
- Pre release dep bump by @SleeplessOne1917 in #2661
- Add ability to fill magnet link title on post creation. by @dessalines in #2654
- Registration application view by @SleeplessOne1917 in #2651
- Add torrent help by @dessalines in #2650
- More moderation history by @dessalines in #2649
- Fix tribute related bug by @SleeplessOne1917 in #2647
- Remove min and max length from password input when using login form by @SleeplessOne1917 in #2643
- Remove trending communities card from home. by @dessalines in #2639
- Set data-bs-theme based on the presence of "dark" in theme name by @SleeplessOne1917 in #2638
- Fixing modlog filtering to allow admins and mods to filter by mod. by @dessalines in #2629
- Fix issue from logo bugfix by @SleeplessOne1917 in #2620
- Make more post params cross-postable by @SleeplessOne1917 in #2621
- Fix wonky comment action icon button alignment by @SleeplessOne1917 in #2622
- Prevent broken logo from crashing site by @SleeplessOne1917 in #2619
- Add rate limit info message. by @dessalines in #2563
- Fix getQueryString by @matc-pub in #2558
New Contributors
- @abdel-m made their first contribution in #4920
- @johnspurlock made their first contribution in #4917
- @FenrirUnbound made their first contribution in #4910
- @kwaa made their first contribution in #4901
- @Daniel15 made their first contribution in #4892
Full Changelog
Upgrade instructions
This upgrade could take as long as ~30 minutes for larger servers, due to needing to recalculate controversy ranks for all historical posts.
There are no breaking changes with this release.
Follow the upgrade instructions for ansible or docker.
If you need help with the upgrade, you can ask in our support forum or on the Matrix Chat.
Thanks to everyone
We'd like to thank our many contributors and users of Lemmy for coding, translating, testing, and helping find and fix bugs. We're glad many people find it useful and enjoyable enough to contribute.
Special shout out to @SleeplessOne1917, @phiresky, @dullbananas, @mv-gh, @Nothing4u, @asonix, @sunaurus, @flamingo-cant-draw, and @Freakazoid182 for their many code contributions and helpful insights.
Support development
We (@dessalines and @nutomic) have been working full-time on Lemmy for over five years. This is largely thanks to support from NLnet foundation, as well as donations from individual users.
If you like using Lemmy, and want to make sure that we will always be available to work full time building it, consider donating to support its development. A recurring donation is the best way to ensure that open-source software like Lemmy can stay independent and alive, and helps us grow our little developer co-op to support more full-time developers.
- Liberapay (preferred option)
- Open Collective
- Patreon
- Cryptocurrency
What was the bug in the end out of curiosity?
I increased the size of a postgres DB column, and it grinded every query on the table to a halt. Turns out we needed to run
analyze
on the column.I opened up an issue on the postgres issue tracker because I've never seen anything like this before, and I'm sure we're not the only one to run into this production-breaking migration.
Very interesting
Changing
post.url
from varchar(512) to varchar(2000) really messed up database performance so lemmy.ml became unusable. Turns out that column statistics are removed when the type is changed, so we had to runanalyze
as part of the migration. Seems like a bug in postgres.https://github.com/LemmyNet/lemmy/issues/4983#issuecomment-2446945046
Very strange that such a change could lead to such a problem, but sometimes databases are weird black boxes like that 🤷