337
submitted 11 months ago by dessalines@lemmy.ml to c/announcements@lemmy.ml

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.

Major Changes

This release is very large with almost 400 commits since 0.18.5. As such we can only give a general overview of the major changes in this post, and without going into detail. For more information, read the full changelog and linked issues at the bottom of this post.

Improved Post Ranking

There is a new scaled sort which takes into account the number of active users in a community, and boosts posts from less-active communities to the top. Additionally there is a new controversial sort which brings posts and comments to the top that have similar amounts of upvotes and downvotes. Lemmy's sorts are detailed here.

Instance Blocks for Users

Users can now block instances. Similar to community blocks, it means that any posts from communities which are hosted on that instance are hidden. However the block doesn't affect users from the blocked instance, their posts and comments can still be seen normally in other communities.

Two-Factor-Auth Rework

Previously 2FA was enabled in a single step which made it easy to lock yourself out. This is now fixed by using a two-step process, where the secret is generated first, and then 2FA is enabled by entering a valid 2FA token. It also fixes the problem where 2FA can be disabled without passing any 2FA token. As part of this change, 2FA is disabled for all users. This allows users who are locked out to get into their account again.

New Federation Queue

Outgoing federation actions are processed through a new persistent queue. This means that actions don't get lost if Lemmy is restarted. It is also much more performant, with separate senders for each target instance. This avoids problems when instances are unreachable. Additionally it supports horizontal scaling across different servers. The endpoint /api/v3/federated_instances contains details about federation state of each remote instance.

Remote Follow

Another new feature is support for remote follow. When browsing another instance where you don't have an account, you can click the subscribe button and enter the domain of your home instance in the popup dialog. It will automatically redirect you to your home instance where it fetches the community and presents a subscribe button. Here is a video showing how it works.

Authentication via Header or Cookie

Previous Lemmy versions used to send authentication tokens as part of the parameters. This was a leftover from websocket, which doesn't have any separate fields for this purpose. Now that we are using HTTP, authentication can finally be passed via jwt cookie or via header Authorization: Bearer <jwt>. The old authentication method is not supported anymore to simplify maintenance. A major benefit of this change is that Lemmy can now send cache-control headers depending on authentication state. API responses with login have cache-control: private, those without have cache-control: public, max-age=60. This means that responses can be cached in Nginx which reduces server load.

Moderation

Reports are now resolved automatically when the associated post/comment is marked as deleted. This reduces the amount of work for moderators. There is a new log for image uploads which stores uploader. For now it is used to delete all user uploads when an account is purged. Later the list can be used for other purposes and made available through the API.

Cursor based pagination

0.19 adds support for cursor based pagination on the /api/v3/post/list endpoint. This is more efficient for the database. Instead of a query parameter ?page=3, listing responses now include a field "next_page": "Pa46c" which needs to be passed as ?page_cursor=Pa46c. The existing pagination method is still supported for backwards compatibility, but will be removed in the next version.

User data export/import

Users can now export their data (community follows, blocklists, profile settings), and import it again on another instance. This can be used for account migrations and also as a form of backup. The export format is designed to remain unchanged for a long time. You can make regular exports, and if the instance becomes unavailable, register a new account and import the data. This way you can continue using Lemmy seamlessly.

Time zone handling

Lemmy didn't have any support for timezones, which led to bugs when federating with other platforms. This is now fixed by using UTC timezone for all timestamps.

ARM64 Support

Thanks to help from @raskyld and @kroese, there are now offical Lemmy releases for ARM64 available.

Activity now includes voters

Upgrade instructions

Follow the upgrade instructions for ansible or docker. The upgrade should take less than 30 minutes.

If you need help with the upgrade, you can ask in our support forum or on the Matrix Chat.

Pict-rs 0.5 is also close to releasing. The upgrade takes a while due to a database migration, so read the migration guide to speed it up. Note that Lemmy 0.19 still works perfectly with pict-rs 0.4.

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.

Support development

We (@dessalines and @nutomic) have been working full-time on Lemmy for over three years. This is largely thanks to support from NLnet foundation, as well as donations from individual users.

This month we are running a funding drive with the goal of increasing recurring donations from currently €4.000 to at least €12.000. With this amount @dessalines and @nutomic can each receive a yearly salary of €50.000 which is in line with median developer salaries. It will also allow one additional developer to work fulltime on Lemmy and speed up development.

Read more details in the funding drive announcement.

top 50 comments
sorted by: hot top controversial new old
[-] Die4Ever@programming.dev 70 points 11 months ago* (last edited 11 months ago)

I'm doing my part! Cool to see my little change finally released, I hope people like it

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

[-] lil@lemy.lol 17 points 11 months ago
[-] fadingembers@lemmy.blahaj.zone 10 points 11 months ago

That's awesome dude, congrats!

[-] eskuero@lemmy.fromshado.ws 62 points 11 months ago

Nothing bad would ever happen from deploying on a friday evening right? right?

YOLO, see you on the other side

[-] eskuero@lemmy.fromshado.ws 19 points 11 months ago

Everything wasss fiiiinnee. 30 seconds downtime between db backups and container restarts.

Now I can finslly use Jerboa again as a client.

[-] ademir@lemmy.eco.br 4 points 11 months ago

I envy you. My backups are taking up to 1 hour +

[-] eskuero@lemmy.fromshado.ws 11 points 10 months ago

haha I mean my instance barely exists, a full pg_dump is just 175MB πŸ˜„

[-] ademir@lemmy.eco.br 5 points 10 months ago

I am glad you exist my friend!

[-] BlueEther@no.lastname.nz 4 points 10 months ago

I feel you...

load more comments (2 replies)
[-] Ategon@programming.dev 37 points 11 months ago* (last edited 11 months ago)

Thanks for merging in some of my changes <3

Code block support should be great for posts coming from programming.dev and the active user change should help communities feel a bit more alive and be more accurate to actual activity

[-] ademir@lemmy.eco.br 13 points 10 months ago

Cool! Code highliting!

[-] wintermute@feddit.de 25 points 11 months ago

Cool, thanks to all contributers!!!

[-] nachtigall@feddit.de 11 points 11 months ago

Can't wait to see it in action ;-)

[-] pleb_maximus@feddit.de 4 points 11 months ago

Since I see two of our Admins here: Update when?

On a more serious note: Tahnks for all your work of you guys too!

[-] wintermute@feddit.de 3 points 10 months ago

Patience, my friend, I'm travaling off-grid lately

load more comments (1 replies)
[-] avidamoeba@lemmy.ca 23 points 10 months ago
load more comments (1 replies)
[-] chaorace@lemmy.sdf.org 17 points 11 months ago* (last edited 11 months ago)

It's always a treat to see the wheels of open source & community funding meshing together to bring about a better internet. You and @nutomic@lemmy.ml have already done the honors of thanking the open source contributors, so I think it's now my turn as an ordinary user to thank you both for your continued hard work and leadership -- I have my quibbles, but these do not preclude the giving of a well-deserved and hearty thanks: Thank you! It continues to please me greatly to have the privilege (in both senses of the word) to contribute to the financial sustainability of the project as one of its many small recurring donators.

And, while I'm at it... since the opportunity doesn't come up often: I also want to specifically express gratitude to dessalines for their (unrelated) work on the thumb-key project. As a long-time user of MessagEase (10+ years!), I've become a happy convert to your more well-maintained and open source replacement. So, thanks for that too! Please continue to suffer my past & future criticisms with the knowledge that it always originates from a place of equal parts respect & gratitude.

load more comments (7 replies)
[-] Barbarian@sh.itjust.works 16 points 11 months ago

Remote Follow sounds like a really amazing QoL improvement

[-] SorteKanin@feddit.dk 15 points 10 months ago

These are great features, thanks for all the work and congratulations on the release.

I will say though - in general, it would probably be easier and safer to do more incremental releases. It has been a long time since 0.18.5.

Have you considered adopting a release train model, similar to what Rust does? The Bevy game engine project has adopted such a model as well and it has worked well as far as I gather. The idea is basically to release on a fixed time interval, forever. No more surprises about when things release and there's a convenient regular opportunity to encourage people to donate :)

[-] interolivary@beehaw.org 4 points 10 months ago* (last edited 10 months ago)

To expand on this, the problem with huge releases is that bugs tend to pile up along with the new features, simply because more stuff has been changed. You're much more likely to experience a painful release if you pile in months of changes, and this is doubly true for a distributed system with no rigorous testing of the system itself instead of just units

load more comments (1 replies)
[-] dessalines@lemmy.ml 2 points 10 months ago

Thx! I'd also like to do more frequent releases, and would especially like a monthly / regular release schedule. It gets difficult for network services like this one, where we have a lot of apps speaking the same language, and then we need to change or remove a bunch of words (IE breaking changes). So this one was mainly pushed back due to the large number of breaking changes, with us wanting to get them all into one release. Otherwise devs would be tearing their hair out every other week accounting for yet another breaking change.

Once the API stabilizes and reaches a 1.0 status, breaking changes should be far less frequent, and more frequent releases should be doable.

[-] cheerjoy@lemmy.world 15 points 11 months ago

Everything added is soo helpful. Congrats to the team and everyone else who contributed.

[-] mhzawadi@lemmy.horwood.cloud 13 points 11 months ago

thats an amazing update, thank you for your hard work. My instance has been updated and Im loving the new user settings

[-] mhzawadi@lemmy.horwood.cloud 4 points 11 months ago

I have noticed something odd, I now dont see posts to local communities in the main feed. is that expected?

load more comments (1 replies)
[-] silas@programming.dev 10 points 10 months ago

Congrats, and thanks for all the hard work! 🍻

[-] sabreW4K3@lemmy.tf 9 points 11 months ago

Congratulations on finally getting this out. The amount of work that went into this release was amazing. Thank you everyone that contributed.

[-] iso@lemy.lol 9 points 11 months ago

Finally πŸŽ‰ Love you guys β™₯️

load more comments (1 replies)
[-] kratoz29@lemm.ee 8 points 11 months ago

Excellent! Hopefully it doesn't break 3rd party apps πŸ™ƒ

Good thing I have plenty huh?

load more comments (1 replies)
[-] imaqtpie@sh.itjust.works 8 points 11 months ago

Tremendous news! Looking forward to exploring all the new changes and improvements

[-] cosmic_slate@dmv.social 7 points 10 months ago* (last edited 10 months ago)

Many thanks to you, Nutomic, and the several folks contributing in different ways. The effort put in to fix various "papercuts", adding features, and the prompt handling of the security issue earlier this year have been fantastic.

I especially appreciate the consideration that you folks put in to ensure it's pretty straightforward and reliable to host. I've had a few hiccups here-and-there, but nothing a couple of very minor actions haven't been able to fix.

Lemmy's fairly-straightforward architecture has made it fairly easy to troubleshoot issues, and overall, it's one server package I really don't have to worry about or babysit, so thanks for a headache-free experience πŸ˜€

[-] grte@lemmy.ca 7 points 11 months ago

That's meaty. Thanks for all your hard work.

[-] dessalines@lemmy.ml 3 points 11 months ago
[-] Oha@lemmy.ohaa.xyz 7 points 11 months ago* (last edited 11 months ago)

Some of the new features are really neat, thanks!

[-] nix@merv.news 7 points 11 months ago* (last edited 11 months ago)

The ansible instructions have two sections for 0.18.5 and none for 0.19.

The instructions also state β€˜ Please regenerate your customPostgres.conf from examples/customPostgres.conf’ but they dont say how to do that

load more comments (3 replies)
[-] seas_surround@hexbear.net 6 points 11 months ago

Well done and congrats on the big update!

[-] Sal@mander.xyz 5 points 11 months ago

You are awesome! Thanks :D I hope you get to relax this weekend!!

[-] simple@lemm.ee 4 points 11 months ago

Hooray! There's some really good stuff in this update. Can't wait until my instance upgrades and hopefully it won't break my current apps too much.

[-] Adanisi@lemmy.zip 4 points 10 months ago
[-] 80avin@programming.dev 3 points 10 months ago

Thanks to everyone involved for another big release. There are many great features, but I'm particularly curious about User data export/import.

If someone can import a backup and get access to his data back, does this also mean that some hacker/impersonator can manually craft a backup file and import it to take control of our account ? Interested to know how this works.

[-] dessalines@lemmy.ml 3 points 10 months ago

It really just exports user-settings related data to a new account, so things like bio, followed communities, saved posts, etc. It can't be used to impersonate you.

[-] emilygage@lemmy.ml 3 points 10 months ago

What a useful feature! Thank you.

[-] wiki_me@lemmy.ml 2 points 10 months ago

Any plans to implement "multireddits"? it's currently the issue with the most "thumbs up" on github.

I would like to have "multifeeds" for topics i find more "important", cs career advice and information, open source, etc.

This is especially useful because activity seemed to be spread out among a lot of instances and communities.

load more comments
view more: next β€Ί
this post was submitted on 15 Dec 2023
337 points (98.8% liked)

Announcements

19 readers
44 users here now

Official announcements from the Lemmy project. Subscribe to this community or add it to your RSS reader in order to be notified about new releases and important updates.

You can also find major news on join-lemmy.org

founded 5 years ago
MODERATORS