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
HTTP API instead of Websocket
Until now Lemmy-UI used websocket for all API requests. This has many disadvantages, like making the code harder to maintain, and causing live updates to the site which many users dislike. Most importantly, it requires keeping a connection open between server and client at all times, which causes increased load and makes scaling difficult. That’s why we decided to rip out websocket entirely, and switch to HTTP instead. This change was made much more urgent by the sudden influx of new users. @CannotSleep420 and @dessalines have been working hard for the past weeks to implement this change in lemmy-ui.
HTTP on its own is already more lightweight than websocket. Additionally it also allows for caching of server responses which can decrease load on the database. Here is an experimental nginx config which enables response caching. Note that Lemmy doesn’t send any cache-control headers yet, so there is a chance that private data gets cached and served to other users. Test carefully and use at your own risk.
Two-Factor Authentication
New support for two-factor authentication. Use an app like andOTP or Authenticator Pro to store a secret for your account. This secret needs to be entered every time you login. It ensures that an attacker can’t access your account with the password alone.
Custom Emojis
Instance admins can add different images as emojis which can be referenced by users when posting.
Other changes
Progressive Web App
Lemmy’s web client can now be installed on browsers that support PWAs, both on desktop and mobile. It will use an instance’s icon and name for the app if they are set, making it look like a given instance is an app.
Note for desktop Firefox users: the desktop version of Firefox does not have built in support for PWAs. If you would like to use a Lemmy instance as a PWA, use use this extension.
Error Pages
Lemmy’s web client now has error pages that include resources to use if the problem persists. This should be much less jarring for users than displaying a white screen with the text “404 error message here”.
Route Changes
Pages that took arguments in the route now take query parameters instead. For example, a link to lemmy.ml’s home page with a few options used to look like this:
https://lemmy.ml/home/data_type/Post/listing_type/All/sort/Active/page/1
The new route would look like this:
https://lemmy.ml?listingType=All
Note that you now only have to specify parameters you want instead of all of them.
Searchable select redesign
The searchable selects, such as those used on the search page, have a new look and feel. No more inexplicable green selects when using the lightly themes!
Share button
Posts on the web client now have a share button on supported browsers. This can be used to share posts to other applications quickly and easily.
Lemmy-UI Overall look and feel
lemmy-ui is now upgraded to bootstrap 5, and every component is now much cleaner.
Special thanks to sleepless, alectrocute, jsit, and many others for their great work on improving and re-organizing lemmy-ui.
Database optimizations
Special thanks to johanndt, for suggesting improvements to Lemmy’s database queries. Some of these suggestions have already been implemented, and more are on the way.
Query speed is Lemmy’s main performance bottleneck, so we really appreciate any help database experts can provide.
Captchas
Captchas are not available in this version, as they need to be reimplemented in a different way. They will be back in 0.18.1, so wait with upgrading if you rely on them.
Upgrade instructions
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.
Support development
We (@dessalines and @nutomic) have been working full-time on Lemmy for almost three years. This is largely thanks to support from NLnet foundation.
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. No one likes recurring donations, but they’ve proven to be the only way that open-source software like Lemmy can stay independent and alive.
What donation method gets the most of the funds to you guys? Crypto?
I just want as much of it going to you as able if I choose a recurring monthly donation.
Thank you SO MUCH for the work you’re doing to help us all!
I apologize for the stability issues everyone.
People found an exploit and are using it to DDOS several lemmy instances.
That’s what happens when you start getting popular. Lemmy will survive it :D
So Reddit has decided to fight back, eh?
Not sure, it is a coordinated DDOS attack tho. I welcome them doing these, because it only strengthens lemmy, and helps us find bugs.
True. Better now before the bigger exodus after the third party apps are shut down.
How is your personal life btw? I was feeling bad for you guys because I imagine dealing with the (welcome) explosion of your project must take all your time… Are you studying?
Its good, thanks for asking <3 . I do have a high-score of github notifications ( > 1200 ), and hundreds of people all trying to get my attention. I’ve settled into a rhythm now tho where I just work on what I think is important, take lots of breaks, and try to keep a regular schedule.
As in any project the few loud voices can be the most damaging. Please isolate yourself from that and understand the quiet majority greatly appreciates what your doing and recognizes the pressure you probably feel lately!
That’s excellent. What do you do for a living, by the way? Because Lemmy can’t be your day job, obviously!
deleted by creator
Is it like a grant then?
exploit […] coordinated […] bugs
Hilariously wrong on all three points. It’s a Python script I wrote in under a minute making identical requests to the same thread fewer than 10 times a second; Lemmy’s complete lack of caching isn’t a “bug”. That this extremely simple vector instantly brought down even the high-spec Lemmy.World instance with a low volume of requests is sad, and it’s tiring to see Lemmy zealots spam my communities advertising this tankie spaghetti code jank as an alleged reddit “alternative” when it topples from this. The multiple attack vectors I’ve tested make it abundantly clear that Lemmy’s team has been incapable of performing even the most basic possible load testing.
Won’t be responding to or reading any replies, don’t care.
BTW, ltree is a horrifically bad solution for comment trees, and any of the self-proclaimed “Postgres professionals” in these threads should be able to explain why if they have even the slightest bit of RDBMS knowledge.Ever hear of responsible disclosure numbnuts? Guess not.
Growing pains. You got popular, now you’ve got a target on your back.
Another addition that wasn’t covered in the release notes, these will now automatically be linked to your local instance without having to do anything:
Edit: Forgot about kbin support
The markup is rendered as links when a valid format is detected without modifying the underlying text:
And still no RTL support.
Did you submit a PR yet?
Its there almost a year ago on github and we spoke about this a lot.
Query speed is Lemmy’s main performance bottleneck, so we really appreciate any help database experts can provide.
I have been pleading that Lemmy server operators install pg_stat_statements extension and share metrics from PostgreSQL. https://lemmy.ml/post/1361757 - a restart of PostgreSQL server is required for the extension to be installed. I suggest this be part of 0.18 upgrade. Thank you.
I think this kind of analysis can help a lot, sadly I don’t see anyone interacting on your post.
Please do keep pushing for it and writing down your discoveries and explanations might help others understand the importance.
Howto with real world data (like you are doing) is helping and is quite interesting.
Thank you for your hard work! I’m a big fan of both systems. What’s the alternative for systems relying on captchas keeping out bots though?
Damn, big update! I see a lot of people are contributing, that’s really the biggest gift from Reddit’s poor decisions (well, presuming contributions did increase, which is a fair assumption).
That’s why I love open source software, it’s truly a community effort!
Did the testing go smoothly?
Found lots of bugs in the process that were fixed, yep.
The image I uploaded got rotated on lemmy: