Yep, we’d def prefer to do smaller releases, and we’ll try to make them more frequent and smaller in the future. The main reason this one was so delayed, is because of the large number of breaking changes, esp. w/ respect to authentication.
In anticipation of Lemmy's upcoming `0.19` release, and to work out any final issues, we're going to deploy a test release on lemmy.ml within the next few days.
We're doing this testing on lemmy.ml only, so that we can encounter any issues *before* the release, and to make sure the upgrade process is smooth for other production servers.
Some of the following will happen during the process:
- Apps will likely break (only for lemmy.ml)
- Lemmy.ml may experience some downtime for the upgrade to complete (ideally no more than an hour).
- If anything goes wrong, we may have to restore from a database backup, meaning content made in between backups may be lost.
If all goes well, we'll have an official announcement for the release **after** this testing period.
I apologize for the difficulties this might cause. At most this will be a week of hair-pulling, but its vital that we catch any issues before telling other servers to upgrade.
But in reality, military aerial drones are much more terrifying. It sounds like a sci-fi dystopia that a billionaire could type your name, press a kill button, and within a few minutes a drone locates and bombs you. But this tech has already existed for over a decade, and is being used by the US in the Middle East and North Africa.
Here is our regular update that explains what we have been working on for the past two weeks. This should allow average users to keep up with development, without reading Github comments or knowing how to program.
In case you missed the announcement, this week we launched a [redesign of join-lemmy.org together with our first annual funding drive](https://join-lemmy.org/news/2023-10-31_-_Join-Lemmy_Redesign_and_Funding_Drive). Please consider donating to support Lemmy development.
We are also readying another release candidate `0.19.0-rc.4`. As usual it is available for testing on [voyager.lemmy.ml](https://voyager.lemmy.ml) and by installing the Docker image on your server. There are no breaking changes this time as we are preparing for the final release. It has been one month since we announced the [major breaking changes for 0.19](https://lemmy.ml/post/5711722). In that sense we would like to know from developers of Lemmy clients and frontends if their projects are ready for 0.19, as we are planning to release it within the next weeks. There is no specific release date, but we will first update lemmy.ml to a release candidate, and if it works well publish the new release shortly after.
@nutomic is implementing a [proxy for remote images](https://github.com/LemmyNet/lemmy/pull/4035), so that clients don't have to connect directly to remote servers and avoid leaking personal information. He also added support for [Arabic and Cyrillic usernames and community names](https://github.com/LemmyNet/lemmy/pull/4083). Additionally he made various smaller changes and code rewrites, such as ordering [reports](https://github.com/LemmyNet/lemmy/pull/4129) and [registration applications ](https://github.com/LemmyNet/lemmy/pull/4123) by oldest first.
@dessalines has implemented [numerous minor bug fixes and enhancements](https://github.com/LemmyNet/lemmy/pulls?q=is%3Apr+author%3Adessalines+created%3A2023-10-21..2023-11-03+is%3Amerged+). This includes [disabling voting for bot accounts](https://github.com/LemmyNet/lemmy/pull/4100), a change to the hot rank to [avoid content getting pushed off the feed after mass downvoting](https://github.com/LemmyNet/lemmy/pull/4085), and more. Also added an [Platform filter](https://github.com/LemmyNet/joinlemmy-site/pull/259) for the join-lemmy.org/apps page, and fixed a memory issue.
@phiresky is extending the `/api/v3/site/federated_instances` endpoint to [include error count and time of last successful](https://github.com/LemmyNet/lemmy/pull/4104) send for each linked instance. This will allow determining the exact state of federation between all instances.
@SleeplessOne1917 made two minor improvements to [2FA code input](https://github.com/LemmyNet/lemmy-ui/pull/2199) and to the [search page](https://github.com/LemmyNet/lemmy-ui/pull/2201).
@hackerncoder [relaxed the check for valid displaynames](https://github.com/LemmyNet/lemmy/pull/4079) to allow more unicode symbols.
## Support development
@dessalines and @nutomic are working full-time on Lemmy to integrate community contributions, fix bugs, optimize performance and much more. This work is funded exclusively through donations.
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](https://join-lemmy.org/donate). Recurring donations are ideal because they allow for long-term planning. But also one-time donations of any amount help us.
- [Liberapay](https://liberapay.com/Lemmy) (preferred option)
- [Open Collective](https://opencollective.com/lemmy)
- [Patreon](https://www.patreon.com/dessalines)
- [Cryptocurrency](https://join-lemmy.org/donate) (scroll to bottom of page)
Hrm… I don’t have any iOS devices, so this might be difficult to test. Open up an issue on the github and someone might be able to take a look, esp if there’s logs.
Liberapay is def preferred, since they don’t take a cut, unlike patreon. Liberapay also automatically splits payments automatically between team members, rather than us having to do it manually. Its up to you tho, any of them work.
Thx, there was def some back-and-forth on whether to include them at all. Adding a big warning that they might be hoovering your data seemed like the best compromise.
cross-posted from: https://lemmy.ml/post/7291022
> Some months have passed on since the [Reddit blackout](https://join-lemmy.org/news/2023-06-17_-_Update_from_Lemmy_after_the_Reddit_blackout) this June. It led to an explosive growth in Lemmy users, and lots of urgent work in scaling, bug fixes, user onboarding and more. Since then things have calmed down significantly, giving us breathing room and time to get more long-term work done.
>
> As of Nov. 2023, Lemmy is at **~36k active daily users** 🥳 (_those who have posted or commented within the last month_). While user counts are not an explicit goal of ours, this is still a tremendous achievement, and one which we can all be proud to be a part of. It shows that people _truly do_ want alternatives to US tech companies, and will use them if they exist.
>
> ## Join-Lemmy Redesign
>
> Most recently we've been working on a redesign of join-lemmy.org to provide a better onboarding experience and cater towards new users. This includes:
>
> - A helpful new [instance picker](http://join-lemmy.org/?showJoinModal=true) to reduce [choice overload](https://thedecisionlab.com/reference-guide/psychology/choice-overload).
> - The [instances page](http://join-lemmy.org/instances) is now _filterable_, based a set of topics and languages, as well as _sortable_ based on activity. The default sort is `Random`, to encourage people to join smaller servers.
> - The [apps](http://join-lemmy.org/apps) page now has sections for Android, iOS, and web apps, as well as libraries. Feel free to do a pull request to add any apps that are missing.
> - The [donate](http://join-lemmy.org/apps) page now shows the total amount of monthly donations across all platforms. More details below.
> - The technology used is Typescript with [tailwind](https://tailwindcss.com/) and [daisyUI](https://daisyui.com/) CSS frameworks.
>
> **For server admins**: If your instance isn't listed already, you must explicitly add your server topics and languages by doing a pull request to [this file](https://github.com/LemmyNet/joinlemmy-site/blob/4bd4d7a0c450addb8696db22813796b7cf1de3c2/src/shared/components/instances-definitions.ts).
>
> As you may have noticed, texts on the website are unchanged, and images on the main page are still generic placeholders. We are hoping for your contributions to improve them. For the texts, edit [this file](https://github.com/LemmyNet/joinlemmy-translations/blob/1bc69869fda7ee144ddfbc4d9fb29af3a0d4619e/translations/en.json). Translations are managed via [weblate](https://weblate.join-lemmy.org/projects/lemmy/joinlemmy/). Images are located in [this folder](https://github.com/LemmyNet/joinlemmy-site/tree/main/src/assets/images). If you are good with AI tools, consider replacing `main_federation.webp` and similar with more colorful images. More `main_screen_x.webp` images with custom themes or alternative frontends would be nice too. In general feel free to open issues or pull requests for improvements to the site.
>
> ## Funding Drive
>
> Before the Reddit migration, our income was almost exclusively made up of generous donations from the [NLnet foundation](https://nlnet.nl/). This funding was based on getting paid for implementing new features, specified in advance.
>
> We've known that this funding could not last indefinitely, and that after several years of funding, NLnet's resources are better spent getting other projects up and running. Additionally, much of our time is spent on other equally important work: reviewing changes from community contributors, fixing bugs, doing support, and various organizational tasks.
>
> That is why we are launching our first **annual funding drive**. The goal is to increase monthly, 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](https://www.developersalary.com/). It will also allow one additional developer to work fulltime on Lemmy and speed up development.
>
> Recurring donations from Lemmy users are the most sustainable solution for the future. It also means that we need to worry less about funding, and can focus more on improving Lemmy. And instead of being accountable to an external organization, we work **directly for Lemmy's users**. While one-time donations are also welcome, they are too unpredictable for long-term planning.
>
> You can find available donation options on the [donate page](http://join-lemmy.org/donate). This page was also updated during the redesign to display current donations and funding goals. If each active Lemmy user donated **~€0.33 per month** it would be enough for 3 full-time developers. So please consider donating if you use Lemmy every day. Our preferred donation platform is Liberapay because it doesn't have any payment fees or delays, and is itself open source.
>
> Besides Lemmy's developers, please consider donating to those who develop open-source apps or software for the Lemmy ecosystem, as well as server admins and moderation teams who are the backbone of the Lemmyverse. We would be happy to add donation links for the above to join-lemmy.org as well!
>
> If you have any suggestions in regards to the topics mentioned in this post, please let us know. We also want to use this opportunity to thank the countless contributors who are working on Lemmy now.
Some months have passed on since the [Reddit blackout](https://join-lemmy.org/news/2023-06-17_-_Update_from_Lemmy_after_the_Reddit_blackout) this June. It led to an explosive growth in Lemmy users, and lots of urgent work in scaling, bug fixes, user onboarding and more. Since then things have calmed down significantly, giving us breathing room and time to get more long-term work done.
As of Nov. 2023, Lemmy is at **~36k active daily users** 🥳 (_those who have posted or commented within the last month_). While user counts are not an explicit goal of ours, this is still a tremendous achievement, and one which we can all be proud to be a part of. It shows that people _truly do_ want alternatives to US tech companies, and will use them if they exist.
## Join-Lemmy Redesign
Most recently we've been working on a redesign of join-lemmy.org to provide a better onboarding experience and cater towards new users. This includes:
- A helpful new [instance picker](http://join-lemmy.org/?showJoinModal=true) to reduce [choice overload](https://thedecisionlab.com/reference-guide/psychology/choice-overload).
- The [instances page](http://join-lemmy.org/instances) is now _filterable_, based a set of topics and languages, as well as _sortable_ based on activity. The default sort is `Random`, to encourage people to join smaller servers.
- The [apps](http://join-lemmy.org/apps) page now has sections for Android, iOS, and web apps, as well as libraries. Feel free to do a pull request to add any apps that are missing.
- The [donate](http://join-lemmy.org/apps) page now shows the total amount of monthly donations across all platforms. More details below.
- The technology used is Typescript with [tailwind](https://tailwindcss.com/) and [daisyUI](https://daisyui.com/) CSS frameworks.
**For server admins**: If your instance isn't listed already, you must explicitly add your server topics and languages by doing a pull request to [this file](https://github.com/LemmyNet/joinlemmy-site/blob/4bd4d7a0c450addb8696db22813796b7cf1de3c2/src/shared/components/instances-definitions.ts).
As you may have noticed, texts on the website are unchanged, and images on the main page are still generic placeholders. We are hoping for your contributions to improve them. For the texts, edit [this file](https://github.com/LemmyNet/joinlemmy-translations/blob/1bc69869fda7ee144ddfbc4d9fb29af3a0d4619e/translations/en.json). Translations are managed via [weblate](https://weblate.join-lemmy.org/projects/lemmy/joinlemmy/). Images are located in [this folder](https://github.com/LemmyNet/joinlemmy-site/tree/main/src/assets/images). If you are good with AI tools, consider replacing `main_federation.webp` and similar with more colorful images. More `main_screen_x.webp` images with custom themes or alternative frontends would be nice too. In general feel free to open issues or pull requests for improvements to the site.
## Funding Drive
Before the Reddit migration, our income was almost exclusively made up of generous donations from the [NLnet foundation](https://nlnet.nl/). This funding was based on getting paid for implementing new features, specified in advance.
We've known that this funding could not last indefinitely, and that after several years of funding, NLnet's resources are better spent getting other projects up and running. Additionally, much of our time is spent on other equally important work: reviewing changes from community contributors, fixing bugs, doing support, and various organizational tasks.
That is why we are launching our first **annual funding drive**. The goal is to increase monthly, 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](https://www.developersalary.com/). It will also allow one additional developer to work fulltime on Lemmy and speed up development.
Recurring donations from Lemmy users are the most sustainable solution for the future. It also means that we need to worry less about funding, and can focus more on improving Lemmy. And instead of being accountable to an external organization, we work **directly for Lemmy's users**. While one-time donations are also welcome, they are too unpredictable for long-term planning.
You can find available donation options on the [donate page](http://join-lemmy.org/donate). This page was also updated during the redesign to display current donations and funding goals. If each active Lemmy user donated **~€0.33 per month** it would be enough for 3 full-time developers. So please consider donating if you use Lemmy every day. Our preferred donation platform is Liberapay because it doesn't have any payment fees or delays, and is itself open source.
Besides Lemmy's developers, please consider donating to those who develop open-source apps or software for the Lemmy ecosystem, as well as server admins and moderation teams who are the backbone of the Lemmyverse. We would be happy to add donation links for the above to join-lemmy.org as well!
If you have any suggestions in regards to the topics mentioned in this post, please let us know. We also want to use this opportunity to thank the countless contributors who are working on Lemmy now.
Thx for the suggestions! You can comment these in the github issue, but the regional stuff I probably won’t add unless there’s a clean way to do it. Places are infinitely specific, and a regional dropdown could have potentially millions of entries.
cross-posted from: https://lemmy.ml/post/5712030
> ## 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 fixes a problem with federation of moderation actions performed by admin accounts. Specifically there is an check when receiving remote federation actions, which is incorrectly rejecting them in some cases. The problem is fixed by this release.
>
> There are no other changes, and no updated lemmy-ui version.
>
> ## Support development
>
> @dessalines and @nutomic are working full-time on Lemmy to integrate community contributions, fix bugs, optimize performance and much more. This work is funded exclusively through donations.
>
> 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](https://join-lemmy.org/donate). 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.
>
> - [Liberapay](https://liberapay.com/Lemmy) (preferred option)
> - [Open Collective](https://opencollective.com/lemmy)
> - [Patreon](https://www.patreon.com/dessalines)
> - [Cryptocurrency](https://join-lemmy.org/donate) (scroll to bottom of page)
>
> ## Upgrade instructions
>
> Follow the upgrade instructions for [ansible](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating). There are no config or API changes with this release.
>
> If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/#lemmy-admin-support-topics:discuss.online).
>
> ## Changes
>
> ### Lemmy
>
> - Fix federation of admin actions ([#3988](https://github.com/LemmyNet/lemmy/pull/3988))
>
## 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 fixes a problem with federation of moderation actions performed by admin accounts. Specifically there is an check when receiving remote federation actions, which is incorrectly rejecting them in some cases. The problem is fixed by this release.
There are no other changes, and no updated lemmy-ui version.
## Support development
@dessalines and @nutomic are working full-time on Lemmy to integrate community contributions, fix bugs, optimize performance and much more. This work is funded exclusively through donations.
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](https://join-lemmy.org/donate). 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.
- [Liberapay](https://liberapay.com/Lemmy) (preferred option)
- [Open Collective](https://opencollective.com/lemmy)
- [Patreon](https://www.patreon.com/dessalines)
- [Cryptocurrency](https://join-lemmy.org/donate) (scroll to bottom of page)
## Upgrade instructions
Follow the upgrade instructions for [ansible](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating). There are no config or API changes with this release.
If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/#lemmy-admin-support-topics:discuss.online).
## Changes
### Lemmy
- Fix federation of admin actions ([#3988](https://github.com/LemmyNet/lemmy/pull/3988))
We are getting closer to the next major release. This version will have many breaking changes, so we are listing them here for app and client developers to adjust their projects.
As we prepare for the release of Lemmy `0.19.0`, we'd like to provide any app or client developers ample time to upgrade their apps, as well as discover any problems, before we do the release. This will be **at least 4 weeks from now** (but likely longer).
Server admins can also upgrade to the latest release candidates for testing. Be aware that they are still unstable and shouldn't be used in production. As with any upgrade it is important to have working backups in place.
It should be possible for clients to support both Lemmy 0.18 and 0.19 without major workarounds. If backwards compatibility is causing you trouble, comment below and we will help to find a solution.
To test, you can point your app to the following test instance running a release candidate of `0.19.0`: https://voyager.lemmy.ml
A diff of API changes is here: [lemmy-js-client API changes from 0.18.3 -> 0.19.0-rc's](https://github.com/LemmyNet/lemmy-js-client/compare/0.18.3...0.19.0-rc.13)
*Note for developers not using typescript or rust*:
If you'd like to auto-generate an API client for your language, you can try out [@MV-GH's lemmy_openapi_spec](https://github.com/MV-GH/lemmy_openapi_spec), or (if in kotlin), use Jerboa's [script here](https://github.com/dessalines/jerboa/blob/main/copy_generated_types_from_lemmy_js_client.sh).
## Major Changes
### Authentication
Previous Lemmy versions used to take authentication as query/post parameters. This is insecure and unnecessarily complicated. With `0.19`, the `jwt` token can be passed either as cookie with name `auth`, or as header in the form `Authorization: Bearer `.
A major advantage is that this allows us to send proper cache-control headers, with responses to unauthenticated users being cacheable. It also prevents token leaks in web server logs. The login and registration endpoints attempt to set the cookie automatically. If that is supported on your platform, you don't have to worry about the authentication token at all.
In order for your client to be compatible with both Lemmy `0.18` and `0.19`, you should send auth in both ways. Meaning with each API call, send the old `auth` query/post parameter, as well as the new header or cookie.
A few PRs detailing these changes:
- https://github.com/LemmyNet/lemmy/pull/3725
- https://github.com/LemmyNet/lemmy/pull/3926
- https://github.com/LemmyNet/lemmy/pull/3946
- https://github.com/LemmyNet/lemmy/pull/3982
### Users can block instances
Users can now block instances, so that their communities are hidden from listings. This is done via `POST /api/v3/site/block` with parameters `int instance_id, bool block`.
https://github.com/LemmyNet/lemmy/pull/3869
### New sort options
A new `scaled` sort option has been added. This sort is identical to the `Hot` sort, but also takes into account the number of each community's active monthly users, and so helps to boost posts from *less active* communities to the top.
https://github.com/LemmyNet/lemmy/pull/3907
### 2FA / TOTP Rework
Two-Factor-Authentication is now enabled in a two-step process to avoid locking yourself out. Now a secret needs to be generated first with `POST /api/v3/user/totp/generate` (no parameters). The generated token needs to be added by the user to an authenticator app.
Once this is completed, 2FA can be enabled with `POST /api/v3/user/totp/update`. This takes a string parameter `totp_token` (generated by authenticator app), and boolean `enabled`. 2FA can be disabled again with the same `update` endpoint. Additionally, the 2FA algorithm has been changed to `SHA1` for better compatibility.
The update disables 2FA for all accounts, so that users who are locked out can use their accounts again, and to ease the transition to the `SHA1` algorithm.
https://github.com/LemmyNet/lemmy/pull/3959
### Timestamps now include timezone
Previous Lemmy versions used timestamps without any timezone internally. This caused problems when federating with other software that uses timezones.
Going forward, all timestamps in the API are switching from timestamps without time zone (`2023-09-27T12:29:59.113132`) to `ISO8601` timestamps (e.g. `2023-10-29T15:10:51.557399+01:00` or `Z` suffix). In order to be compatible with both 0.18 and 0.19, parse the timestamp as `ISO8601` and add a `Z` suffix if it fails (for older versions).
https://github.com/LemmyNet/lemmy/pull/3496
### 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.
https://github.com/LemmyNet/lemmy/pull/3872
### New endpoints for export/import of user settings data
Users can now export their profile settings data (including subscriptions and blocklists) via `GET /api/v3/user/export`. The returned JSON data should not be parsed by clients, but directly downloaded as a file. Backups can be imported via `POST /api/v3/user/import`.
https://github.com/LemmyNet/lemmy/pull/3976
### Make remove content optional during account deletion
When a user deletes their own account using `POST /api/v3/user/delete_account`, there is a new parameter called `delete_content`. If it is true, all posts, comments and other content created by the user are deleted (this is the previous default behaviour). If it is false, only the user profile will be marked as deleted.
https://github.com/LemmyNet/lemmy/pull/3817
### Outgoing Federation Queue
The federation queue has been rewritten to be much more performant and reliable. This is irrelevant for client developers, but admins should look out for potential federation problems. If you run multiple Lemmy backends for horizontal scaling, be sure to read the [updated documentation](https://join-lemmy.org/docs/administration/horizontal_scaling.html) and set the new configuration parameters. The [Troubleshooting](https://join-lemmy.org/docs/administration/troubleshooting.html) section has information about how to find out the state of the federation queues.
https://github.com/LemmyNet/lemmy/pull/3605
Let us know in the comments if you’re able to help mod. Requirements:
- You have to be on the lemmy.ml instance
- Should have a history of activity here
- Able to enforce the rules, with temp bans or permabans if necessary.
Our current mods are absent, so let us know in the comments if you're able to help mod. Requirements:
- You have to be on the lemmy.ml instance
- Should have a history of activity here.
## 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 version fixes the problem of comment context not loading properly. It also fixes a couple other bugs.
## Support development
@dessalines and @nutomic are working full-time on Lemmy to integrate community contributions, fix bugs, optimize performance and much more. This work is funded exclusively through donations.
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](https://join-lemmy.org/donate). 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.
- [Liberapay](https://liberapay.com/Lemmy) (preferred option)
- [Open Collective](https://opencollective.com/lemmy)
- [Patreon](https://www.patreon.com/dessalines)
- [Cryptocurrency](https://join-lemmy.org/donate) (scroll to bottom of page)
## Upgrade instructions
Follow the upgrade instructions for [ansible](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating). There are no config or API changes with this release.
If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/#lemmy-admin-support-topics:discuss.online).
This is an opportunity for any users, server admins, or interested third parties to ask anything they'd like to [@nutomic@lemmy.ml](https://lemmy.ml/u/nutomic) and I about Lemmy. This includes its development and future, as well as wider issues relevant to the social media landscape today.
*Note*: This will be the thread tmrw, so you can use this thread to ask and vote on questions beforehand.
[Original Announcement thread](https://lemmy.ml/post/2671212)
This is an opportunity for any users, server admins, or interested third parties to ask anything they'd like to [@nutomic@lemmy.ml](https://lemmy.ml/u/nutomic) and I about Lemmy. This includes its development and future, as well as wider issues relevant to the social media landscape today.
## 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 version brings major optimizations to the database queries, which significantly reduces CPU usage. There is also a change to the way federation activities are stored, which reduces database size by around 80%. Special thanks to @phiresky for their work on DB optimizations.
The federation code now includes a check for dead instances which is used when sending activities. This helps to reduce the amount of outgoing POST requests, and also reduce server load.
In terms of security, Lemmy now performs HTML sanitization on all messages which are submitted through the API or received via federation. Together with the tightened content-security-policy from 0.18.2, cross-site scripting attacks are now much more difficult.
Other than that, there are numerous bug fixes and minor enhancements.
## Support development
@dessalines and @nutomic are working full-time on Lemmy to integrate community contributions, fix bugs, optimize performance and much more. This work is funded exclusively through donations.
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](https://join-lemmy.org/donate). 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.
- [Liberapay](https://liberapay.com/Lemmy) (preferred option)
- [Open Collective](https://opencollective.com/lemmy)
- [Patreon](https://www.patreon.com/dessalines)
- [Cryptocurrency](https://join-lemmy.org/donate) (scroll to bottom of page)
## Upgrade instructions
Follow the upgrade instructions for [ansible](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating). There are no config or API changes with this release.
This upgrade takes ~5 minutes for the database migrations to complete.
You _may_ need to run `sudo chown 1000:1000 lemmy.hjson` if you have any permissions errors.
If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/#lemmy-admin-support-topics:discuss.online).
## 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 includes major improvements to performance, specifically optimizations of database queries. Special thanks to @phiresky, @ruud, @sunaurus and many others for investigating these. Additionally this version includes a fix for another cross-site scripting vulnerability. For these reasons instance admins should upgrade as soon as possible.
As promised, captchas are supported again. And as usual there are countless bug fixes and minor improvements, many of them contributed by community members.
## Upgrade instructions
Follow the upgrade instructions for [ansible](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating).
If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/#lemmy-admin-support-topics:discuss.online).
## 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](https://nlnet.nl/).
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](https://join-lemmy.org/donate). 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 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](https://github.com/LemmyNet/lemmy/issues/2841#issuecomment-1535469357), 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](https://lemmygrad.ml/u/CannotSleep420) and [@dessalines](https://lemmy.ml/u/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](https://github.com/LemmyNet/lemmy-ansible/pull/75) 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](https://f-droid.org/es/packages/org.shadowice.flocke.andotp/) or [Authenticator Pro](
https://f-droid.org/packages/me.jmh.authenticatorpro/) 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](https://addons.mozilla.org/en-US/firefox/addon/pwas-for-firefox/).
#### 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](https://github.com/SleeplessOne1917), [alectrocute](https://github.com/alectrocute), [jsit](https://github.com/jsit), and many others for their great work on improving and re-organizing lemmy-ui.
#### Database optimizations
Special thanks to [johanndt](https://github.com/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](https://github.com/LemmyNet/lemmy-ansible#upgrading) or [docker](https://join-lemmy.org/docs/en/administration/install_docker.html#updating).
If you need help with the upgrade, you can ask in our [support forum](https://lemmy.ml/c/lemmy_support) or on the [Matrix Chat](https://matrix.to/#/!OwmdVYiZSXrXbtCNLw:matrix.org).
## 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](https://nlnet.nl/).
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](https://join-lemmy.org/donate). 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.
cross-posted from: https://lemmy.ml/post/1232795
> Its been a hectic week everyone, so I apologize that I haven't been as responsive as usual. We realized that we could either spend *all our day* answering questions, or coding to make lemmy better, so we're prioritizing the latter.
>
> Reddit caught us right in the middle of one of our larger performance improvements, so I apologize for the instability of instances like this one. But I'm confident that lemmy will improve, especially due to all the new contributors helping out with performance, security fixes, and stability.
>
> Please use our the [issue trackers for the various lemmy projects](https://github.com/lemmynet) to report issues, otherwise they will likely get lost.
>
> # Call for testers
>
> - You can help us test patch releases like this one at https://enterprise.lemmy.ml
> - We're readying the `0.18.0` release soon, you can help us test at https://voyager.lemmy.ml , and https://ds9.lemmy.ml
> - App devs should use voyager.lemmy.ml to test and prepare for `0.18.0`, which should come in the next few weeks. The API changes and new types can be seen [here](https://github.com/LemmyNet/lemmy-js-client/compare/release/v0.17...main).
> - `0.18.0` should give servers a big performance boost by removing websockets and switching entirely to HTTP. It also will add a lot of features like 2fa / TOTP.
>
Its been a hectic week everyone, so I apologize that I haven't been as responsive as usual. We realized that we could either spend *all our day* answering questions, or coding to make lemmy better, so we're prioritizing the latter.
Reddit caught us right in the middle of one of our larger performance improvements, so I apologize for the instability of instances like this one. But I'm confident that lemmy will improve, especially due to all the new contributors helping out with performance, security fixes, and stability.
Please use our the [issue trackers for the various lemmy projects](https://github.com/lemmynet) to report issues, otherwise they will likely get lost.
# Call for testers
- You can help us test patch releases like this one at https://enterprise.lemmy.ml
- We're readying the `0.18.0` release soon, you can help us test at https://voyager.lemmy.ml , and https://ds9.lemmy.ml
- App devs should use voyager.lemmy.ml to test and prepare for `0.18.0`, which should come in the next few weeks. The API changes and new types can be seen [here](https://github.com/LemmyNet/lemmy-js-client/compare/release/v0.17...main).
- `0.18.0` should give servers a big performance boost by removing websockets and switching entirely to HTTP. It also will add a lot of features like 2fa / TOTP.
Rule #2 is possibly our most important one:
> Be respectful. Everyone should feel welcome here.
Learn to disagree without being rude or disrespectful.
It can be difficult sometimes, since western social media *thrives* on collective outrage, and they knowingly ingrain this into us for years. But please do adhere to this rule, and it will make this place much more enjoyable.
We will not hesitate to issue temp bans (usually a day or two) for those who make everyone's experience unpleasant.Hit the report button if you see this behavior.
Thanks!
Seems really neat, basically the next.js but for rust. Based on sycamore, a web-ui library for rust.
Looks like it does well in the framework benchmarks too.
https://krausest.github.io/js-framework-benchmark/2023/table_chrome_110.0.5481.77.html
Its been a long time coming 🥳 .
Excerpt from the link:
## Major Changes
### Language Tags
Content can now be tagged to indicate the language it is written in. These tags can be used to filter content, so that you only see posts in languages which you actually understand. Instances and communities can also specify which languages are allowed, and prevent posting in other languages.
In the future this will also allow for integrated translation tools.
### Comment trees
Lemmy has changed the way it stores comments, in order to be able to properly limit the comments shown to a maximum depth.
Included are proper comment links (`/comment/id`), where you can see its children, a count of its hidden children, and a _context_ button to view its parents, or the post.
### Featured posts
Admins and mods can now "feature" (this used to be called "sticky" ala reddit) posts to the top of either a community, or the top of the front page. This makes possible announcement and bulletin-type posts.
Special thanks to @makotech for adding this feature.
### Federation
Lemmy users can now be followed. Just visit a user profile from another platform like Mastodon, and click the follow button, then you will receive new posts and comments in the timeline.
Votes are now federated as private. This prevents other platforms from showing who voted on a given post, and it also means that Lemmy now counts votes from Mastodon.
This release also improves compatibility with Pleroma. If you previously had trouble interacting between Pleroma and Lemmy, give it another try.
We've extracted the main federation logic into its own library, [activitypub-federation-rust](https://github.com/LemmyNet/activitypub-federation-rust). It is open source and can be used by other projects to implement Activitypub federation, without having to reinvent the wheel. The library helps with handling HTTP signatures, sending and receiving activities, fetching remote objects and more.
### Other changes
- Admins can now purge content and pictures from the database.
- Mods can _distinguish_ a comment, "stickying" it to the top of a post. Useful for mod messages and announcements.
- Number of new / unread comments are now shown for each post.
- Lemmy now automatically embeds videos from Peertube, Youtube and other sites which provide an embed link via Opengraph attribute.
- You can give your site "taglines", short markdown messages, which are shown at the top of your front page. Thanks to @makotech for adding this.
- You can now report private messages.
- Most settings have been moved from the config file into the database. This means they can be updated much easier, and apply immediately without a restart.
- When setting up a new Lemmy instance, it doesn't create a default community anymore. Instead this needs to be done manually.
- Admins can choose to receive emails for new registration applications.
- An upgrade of diesel to v2.0, our rust -> postgres layer.
This is the MessagEase layout for the MultilingO keyboard.
Unfortunately MessagEase development (which is the fastest android keyboard), died several years ago, and we're in dire need of a replacement.
Welcome to Lemmy, I'm one of the devs and admins for this instance.
Being pro-piracy, and allowing torrent magnet links 🏴☠️ , is one of the original reasons I started working on lemmy ( even a lot of the better reddit alts refuse to allow magnet links, or be pirate-friendly).
One of the best ways to keep the stream alive, is by decentralizing the ways we find and access content. Torrents do this directly for data, but I hope that lemmy, as a federated reddit alternative, can eventually serve as a platform to aggregate, post, and comment on pirated data in a decentralized way.
[More info about Lemmy including docs, how federation works, and a good onboarding site.](https://join-lemmy.org/)
Welcome aboard!
## 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
### Theming
Customizing Lemmy is now much easier than before. Instance admins can select a default instance theme under `/admin` which applies to all users who are not logged in, and those who haven't explicitly picked a theme.
It is also possible now to add custom themes to an instance, without having to recompile lemmy-ui. When running with Docker, make sure that [these lines](https://github.com/LemmyNet/lemmy-ansible/pull/24/files) are present in docker-compose.yml (Ansible will add them automatically if you updated the re
It’s like hot sort, but gives a boost to inactive communities.