Skip Navigation

Search

Lemmy v0.19.4 Release - Image Proxying and Federation improvements

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 v0.19.4 release is a big one, with > 200 pull requests merged since v0.19.3. 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 changelogs at the bottom of this post.

Local Only Communities

Communities have a new visibility setting, which can be either Public (current behaviour) or LocalOnly. The latter means that the community won't federate, and can only be viewed by users who are logged in to the local instance. This can be useful for meta communities discussing moderation policies of the local instance, where outside users shouldn't be able to participate. It is also a first step towards implementing private communities. Local only communities still need more testing and should be considered experimental for now.

Image Proxying

There is a new config option called image_mode which provides a way to proxy external image links through the local instance. This prevents deanonymization attacks where an attacker uploads an image to his own server, embeds it in a Lemmy post and watches the IPs which load the image.

Instead if image_mode is set to ProxyAllImages, image urls are rewritten to be proxied through /api/v3/image_proxy. This can also improve performance and avoid overloading other websites. The setting works by rewriting links in new posts, comments and other places when they are inserted in the database. This means the setting has no effect on posts created before the setting was activated. And after disabling the setting, existing images will continue to be proxied. It should also be considered experimental.

Many thanks to @asonix for adding this functionality to pict-rs v0.5.

Post hiding

You can now hide a post as a dropdown option, and there is a new toggle to filter hidden posts in lemmy-ui. Apps can use the new show_hidden field on GetPosts to enable this.

Moderation enhancements

With the URL blocklist admins can prevent users from linking to specific sites.

Admins and mods can now view the report history and moderation history for a given post or comment.

The functionality to resolve reports automatically when a post is removed was previously broken and is now fixed. Additionally, reports for already removed items are now ignored.

The site.content_warning setting lets admins show a message to users before rendering any content. If it is active, nsfw posts can be viewed without login.

Mods and admins can now comment in locked posts.

Mods and admins can also use external tools such as LemmyAutomod for more advanced tools.

Media

There is a new functionality for users to list all images they have previously uploaded, and delete them if desired. It also allows admins to view and delete images hosted on the local instance.

When uploading a new avatar or banner, the old one is automatically deleted.

Instance admins should also checkout lemmy-thumbnail-cleaner which can delete thumbnails for old posts, and free significant amounts of storage.

Federation

Lemmy can now federate with Wordpress, Discourse and NodeBB. So far there was only minor testing and these projects are still under heavy development. If you encounter any issues federating with these platforms, open an issue either in the Lemmy repo or in the respective project's issue tracker. You can test it by fetching the following posts:

In order to improve interoperability with Mastodon and other microblogging platforms, Lemmy now automatically includes a hashtag with new posts. The hashtag is based on the community name, so posts to /c/lemmy will automatically have the hashtag #lemmy. This makes Lemmy posts much easier to discover.

Reliability and security of federation have been improved, and numerous bugs squashed. Signed fetch was broken and is fixed now.

Vote display user setting

There is now a user setting to change the way vote counts are displayed, called vote display mode.

You can specify which of the following vote data you'd like to see (or hide): Upvotes, Downvotes, Score, Upvote Percentage, or none of the above. The default (based on user feedback) is showing the upvotes + downvotes.

App developers will need to update their apps to support this setting.

RSS Feeds

RSS feeds now include post thumbnail and embedded images.

Security Audit

A security audit was recently performed on Lemmy. Big thanks to Radically Open Security for the generous funding, and to Sabrina Deibe and Joe Neeman for carrying out the audit. The focus was on federation logic, and discovered various problems in this area. Most of the problems are being mitigated as part of this release. Fortunately no critical security vulnerabilities were discovered.

This is already the third security audit of Lemmy, all organized by ROS. We're greatly indebted to them for their support.

Other Changes

Full Changelog

Upgrade instructions

Warning: This version requires both a Postgres and Pictrs version upgrade, which requires manual intervention.

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 thanks goes to Radically Open Security, @sleepless and @matc-pub for their work on lemmy-ui and lemmy-ui-leptos, @dullbananas for their help cleaning up the back-end, DB, and reviewing PRs, @phiresky for federation work, @MV-GH for their work on Jerboa and API suggestions, @asonix for developing pictrs, @ticoombs and @codyro for helping maintain lemmy-ansible, @kroese, @povoq, @flamingo-cant-draw, @aeharding, @Nothing4U, @db0, @MrKaplan, for helping with issues and troubleshooting, and too many more to count.

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.

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.

18

local lemmy-ui - translations

UPDATE: running pnpm run translations:generate (and also the other translations tasks, just to be sure) fixed the issue.

---

When trying to setup a local Lemmy instance (for development), the lemmy-ui repository throws an error when trying to start the dev server.

I followed the guide: https://join-lemmy.org/docs/contributors/02-local-development.html

When running pnpm dev to start the dev server, it presents me with two errors:

```bash

ERROR in ./src/shared/services/I18NextService.ts 14:0-40 Module not found: Error: Can't resolve '../translations/en' in '/home/ff0000/workspace/lemmy/lemmy-ui/src/shared/services' resolve '../translations/en' in '/home/ff0000/workspace/lemmy/lemmy-ui/src/shared/services' using description file: /home/ff0000/workspace/lemmy/lemmy-ui/package.json (relative path: ./src/shared/services) using description file: /home/ff0000/workspace/lemmy/lemmy-ui/package.json (relative path: ./src/shared/translations/en) no extension /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en doesn't exist .js /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en.js doesn't exist .jsx /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en.jsx doesn't exist .ts /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en.ts doesn't exist .tsx /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en.tsx doesn't exist as directory /home/ff0000/workspace/lemmy/lemmy-ui/src/shared/translations/en doesn't exist @ ./src/shared/dynamic-imports.ts 6:0-69 48:17-41 @ ./src/server/index.tsx 16:0-65 47:2-22

ERROR in ./src/shared/services/I18NextService.ts 159:43-129 Module not found: Error: Can't resolve '../translations' in '/home/ff0000/workspace/lemmy/lemmy-ui/src/shared/services' @ ./src/shared/dynamic-imports.ts 6:0-69 48:17-41 @ ./src/server/index.tsx 16:0-65 47:2-22

webpack 5.91.0 compiled with 2 errors in 14393 ms ``` I do see that these files nor the folder exist where I18NextService is trying to locate them. But i also see in the root a lemmy-translations folder.

I am able to get it sort of working by updating the paths in I18NextService, but i guess that is not the preferred approach.

2

Lemmy v0.19.0 Release - Instance blocking, Scaled sort, and Federation Queue

cross-posted from: https://lemmy.ml/post/9347983

Make sure you subscribe to [email protected]

> ## 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 . 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 > > - Previously, site and community activity counts were only based on people who commented, or posted. Those counts now include anyone who voted on a comment or post as well. Thanks to @Ategon for this change. > > ## 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.

5

Lemmy v0.19.0 Release - Instance blocking, Scaled sort, and Federation Queue

cross-posted from: https://lemmy.ml/post/9347983

> ## 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 > > - Previously, site and community activity counts were only based on people who commented, or posted. Those counts now include anyone who voted on a comment or post as well. Thanks to @Ategon for this change. > > ## 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.

2

Lemmy 0.19.0-rc.5 and Development Update 2023-11-17

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.

@Neshura87 submitted the first ever RFC for Lemmy! It describes how post tags can be implemented.

0.19.0 is getting closer and closer to release, but we are still busy squashing bugs and getting lemmy-ui ready. For now there is another release candidate deployed on voyager.lemmy.ml for testing. Here is the full list of changes since the last release candidate for Lemmy and lemmy-ui

@nutomic fixed a bug with following local communities in the release candidate. He added a first integration test for image uploads.

@dessalines has been busy updating lemmy-ui to account for Lemmy API changes, and squashing various bugs like an issue with timezone db migrations, adding a creator_is_admin field to Post and Comment views.

@SleeplessOne1917 has implemented support for settings import/export in lemmy-ui, as well as some bug fixes.

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. Recurring donations are ideal because they allow for long-term planning. But also one-time donations of any amount help us.

24

Lemmy 0.19.0-rc.4 and Development Update - 2023-11-03

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. 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 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. 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, 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. Additionally he made various smaller changes and code rewrites, such as ordering reports and registration applications by oldest first.

@dessalines has implemented numerous minor bug fixes and enhancements. This includes disabling voting for bot accounts, a change to the hot rank to avoid content getting pushed off the feed after mass downvoting, and more. Also added an Platform filter 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 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 and to the search page.

@hackerncoder relaxed the check for valid displaynames 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. Recurring donations are ideal because they allow for long-term planning. But also one-time donations of any amount help us.

19

Lemmy 0.19.0-rc.3 and Development Update 2023-10-20

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.

We published a new release candidate for Lemmy 0.19.0. Note that this so-called release candidate is really a beta. In the future we will use more appropriate version names.

Most importantly it includes the new feature to export user settings, and later import them on another instance.

The Docker image was changed from Alpine to Debian which should improve stability and performance (#3972). This unfortunately broke ARM builds, so we'd need some assistance getting them working again for debian.

The remaining changes are mostly minor improvements and bug fixes, you can see them in the full changelog. Please test the new version on voyager.lemmy.ml or by installing tag 0.19.0-rc.3 on your server. If you encounter any problems, report them on Github.

For Developers: This version includes various API changes compared to rc.1:

  • The endpoints for exporting and importing user settings are at GET /api/v3/user/export_settings and POST /api/v3/user/import_settings. Note that the returned json is not meant to be parsed, but directly stored to disk (#3976).
  • /api/v3/login now sets the auth cookie automatically, so clients might not have to handle it anymore. There is also a new endpoint /api/v3/logout which clears the cookie and invalidates the auth token (#3818).
  • There is a new endpoint /api/v3/user/validate_auth which returns errors in case of invalid auth token. This is necessary because other API actions silently ignore invalid auth and treat the user as unauthenticated. We are changing various endpoints to return simply {"success": "true"} (#3993, #4058 (not included in rc.2)).
  • The endpoint /api/v3/post/mark_as_read can now take an array post_ids instead of single post_id value but remains backwards compatible (#4048).

@nutomic improved the way that titles for Mastodon posts are handled (#4033). He also worked on various minor fixes and enhancements, see here.

@dessalines is nearly done with the redesign of join-lemmy.org. You can see it here, and check the pull request to provide feedback / suggestions. Also worked on cleaning up stale lemmy issues.

@SleeplessOne1917 reworked a much cleaner 2FA interface for lemmy UI (#2179), fixed a bug with the emoji picker (#2175), and added an enable_animated_images setting to users (#4040). Also worked on lemmy-ui-leptos.

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. Recurring donations are ideal because they allow for long-term planning. But also one-time donations of any amount help us.

20

Proposal how to write links to communities in lemmy

Hopefully in future lemmy autotranslates links for us, but meanwhile I suggest the following method.

Let's say we want to link https://lemmy.ml/c/asklemmy

Write it like this

[c/asklemmy](/c/[email protected])

Which will result in the following link:

c/asklemmy

This will make sure that the user clicking the link gets taken not to the original instance of the community, but to the community's reflection in user's instance where they can subscribe.

EDIT: Unfortunately this link type is currently crashing Jerboa. Hopefully that gets fixed in future.

EDIT2: For small communities it is recommended to append instance in the title, especially if a huge community with the same title already exist on another instance. Like this:

[c/[email protected]](/c/[email protected])

c/[email protected]

EDIT: Caviat - these links will work only if the community is already cached in the user's instance. If the user is first to subscribe, they'll have to get to it manually.

9

An exploration of the Lemmys, for discussion

What is this post?

A quick and dirty look into Lemmy instances, their size and interactions, and some insights.

Disclaimers
  • I AM NOT AN EXPERT OR WITNESS: I only started using Lemmy in March 2022. Lemmy was around for around 3 years before that. I am not a developer or instance owner.
  • I DID NOT GO AND TALK TO PEOPLE WHO UNDERSTAND THIS STUFF: This is just me exploring for fun and starting a conversation. This is not a proper study. Consider telling any one who links you to this page as if it's an expert historical account that I called them an idiot.
  • This is limited by my experience and my searching, it's not comprehensive. If someone made a dark instance, I probably won't find it. If there's some deep lore, I probably don't know it.

Thanks to https://lemmy.fediverse.observer/list for many of these stats.

Alright,

Now for the casual rambling.

Organic posting started on lemmy.ml from April 2019 so I will consider that the start of Lemmy as a service (my understanding is that lemmy.ml is the oldest non-dev instance)

As of now (May 2022) AFAIK, the Lemmy-based sites with the most total user comments are:

  • hexbear.net (2.5M)
  • lemmy.ml (114K)
  • lemmygrad.ml (105K)
  • bakchodi.org (42K)
  • wolfballs.com (15K)
  • szmer.info (15K)
  • feddit.de (3K)
  • [dev instances ignored]
  • sopuli.xyz (1504)
  • lemmy.eus (1262)
  • lemmy.ca (974)

The count of users active in the last month is similar:

  • hexbear.net (unlisted, approx. 1.3K in the last 14 days)
  • lemmygrad.ml (508)
  • lemmy.ml (474)
  • bakchodi.org (286)
  • szmer.info (65)
  • feddit.it (51)
  • sopuli.xyz (31)
  • wolfballs.com (29)
  • feddit.de (29)
  • lemmy.ca (17)

My guess is that the difference at the bottom of the list is due to highly federated instances spreading their user comments over many instances with more activity, and also due to some instances peaking a few months ago and then declining. For those new to user statistics, you'll notice that popularity usually tends to be exponential: more popular things get more popular.

What was that first one? Hexbear?

Two of the sites listed there, Hexbear (aka. chapo.chat) and Bakchodi, do not federate. They are not part of the Fediverse, but they are using Lemmy. Hexbear is actually running their own fork of Lemmy. In that sense it reminds me of Gab, another huge island fork, but only due to size and isolation. While I can't find an admin statement, various Hexbear Gitea issues from 2020 and this comment from December 2021 "We’re working on bringing Lemmy up to speed with some of the features our “fork” (it’s more of a rewrite) has. When that’s ready we’ll switch to that which will already have federation ready for us." and this from Feb 2022 "The only issue is that [Hexbear] doesn’t support federation for semi-technical reasons (happy to explain), but that’s going to be fixed (later this year maybe)?" indicate Hexbear is open to the idea but unready (this 2020 comment even states they chose Lemmy precisely because of its federation goal), and Bakchodi appear to have just not set any up (the admin states "Federation is not functional as of now." in a post and nothing more). Contrast both against Gab who cited abuse/security issues and lack of local federation users for their voluntary removal of existing federation.

Another point regarding Hexbear and Bakchodi is that they are continuations of existing popular communities: I believe that Hexbear is a continuation of reddit's banned subreddit /r/ChapoTrapHouse, and Bakchodi is a continuation of the banned /r/chodi (which I believe was banned around the same time as /r/GenZedong's quarantining caused a mass exodus to https://lemmygrad.ml/c/genzedong ). To the best of my knowledge, lemmy.ml, most of lemmygrad, wolfballs and szmer are new original sites rather than an existing active community migrating as a mass.

Connections

Most instances are connected into the Fediverse. Hexbear and Bakchodi appears to be the only active non-trivial instances that don't federate.

Due to the political environment of the internet today and the content currently on Lemmy, I personally think it makes sense to classify the current federation networks of Lemmy instances into four loose groups:

  • socialist 'left': Primarily value socialism and/or anarchism, and related topics. Generally explicit about their instance's political alignment. The largest group. Examples are lemmy.ml, lemmygrad.ml, midwest.social, and would include hexbear.net if it were connected.
  • liberalist 'right': Primarily value freedom of speech and other liberty. While none yet are explicitly politically-biased through administration[correction], they do overwhelmingly have users with views typical of the American 'right-wing' as an inevitable result of where they are promoted, the ideas only they tolerate and the existing posts. Examples are wolfballs.com and exploding-heads.com.
  • general open: Overall mainstream OR diverse political views, will generally tolerate political instances on both sides of the above divide. Often national instances or 'general-purpose'. mander.xyz is an overt example, gtio.io is also an example. lotide.fbxl.net would be an example, but it's a lotide instance rather than Lemmy.
  • anti-intolerant: Primarily value friendliness and inclusivity, and so will readily block instances that tolerate intolerance, such as those in the liberalist 'right' category and potentially those further in the socialist 'left' category. An example might be sopuli.xyz.

These are all politically determined, as unlike Mastodon and Pleroma there don't tend to be any instances based around controversial single topics or around graphic content that causes instances to defederate. I thought there were more instances that blocked both sides of the 'left'/'right' divide, but they don't seem to exist yet (which is a good sign) beyond lemmy.rollenspiel.monster. It is also worth mentioning that lemmy.ml has blocked some instances due to abuse rather than any cultural disagreement.

The first two of the four categories are by far the most popular, even if not the most numerous in instances, probably due to them picking up users being kicked out of reddit and reddit alternatives as they block more and more political subreddits or become unsavory. The earlier kicking of many 'harassment' subreddits from reddit around 2015 lead to many 'right-wing' users to populate Voat and then later bannings lead to communities.win becoming popular, which I believe explains why Lemmy doesn't yet have a strong influx of users who align politically with those banned subreddits and more-so with recently-banned communist subreddits (the core developers' political views and lemmy.ml's reputation may have impacted people moving to instances named after Lemmy or considering hosting new instances, but I suspect it wouldn't affect people who were invited to a place called Wolfballs).

Interestingly, there is already a mirror instance that reposts from reddit: goldandblack.us.to

Growth

fediverse.observer has some stats. Ignoring the huge outliers in the middle, there has been a jump in growth in the past two months which I would mostly attribute to the influx to lemmygrad.ml wow look at that second graph and the launch of unfederated-but-included bakchodi. Apart from that, there has been a remarkably consistent growth in all the active instances. That's a good sign that this group of communities could last a while.

Some concluding thoughts, with regards to reddit

As someone who hasn't really used reddit in many years, I like to promote the view of us being independent, growing our own culture, our own norms and not merely aiming to mirror the same shallow emptiness. The bottom line is, we grow a lot when reddit shuts a place down, and as you can see in some of those stats, growth creates more potential for growth. I think it's important to think about what habits we see now both here and there that we want to encourage, and which habits we don't. Think about what should each community tolerate and reject and enforce (and make no mistake, that answer differs depending on purpose and audience!) and how do we redirect people in the wrong places or teach those who are mistaken? (protip: typing these things out each time is very dumb! That's why we invented FAQ pages!) What struggles did Mastodon face as they started to grow more and more?

Parts of reddit and similar groups will continue to arrive. Look at this list of communities that used to be allowed: it started off with the very blatant controversies like sexualizing minors, moved on to open blatant racism-focused places that conducted raids, and now they're at banning subreddits about a US (former) president and pro-China memes. Now that Lemmy has established itself as the home of some of the most recently banned communities, I personally think it's only a matter of time before reddit pops off a few more communities as they face pressure from media flak, investors or other major influences, and we should prepare for how to handle this: make potentially targeted communities aware that we exist before an incident, and make sure communities have a clear set of rules and guidelines written for the people that come in expecting this to be reddit again. I think this is an opportunity to fix the things we don't want repeated.

0