this post was submitted on 09 Mar 2024
879 points (98.3% liked)

Fediverse

17800 readers
11 users here now

A community dedicated to fediverse news and discussion.

Fediverse is a portmanteau of "federation" and "universe".

Getting started on Fediverse;

founded 5 years ago
MODERATORS
 

Hello!

I am sunaurus, the head admin of lemm.ee. Ever since I created my instance, I have been following a lot of public and private discussion channels between different parties involved with Lemmy. As I’m sure many others have also noticed, the discussions in such channels sometimes get heated, and in fact recently, I feel like there has been a constant trend in these discussions towards a lot of demands, hostility, negativity, and a general lack of empathy between different participants in the Lemmy network.

I am writing this post for a few reasons:

  1. I would like add a bit of positivity by expressing my gratitude towards every single person who has helped improve Lemmy.
  2. I want to speak up in defense of different people who have been receiving negativity lately.
  3. There are a few false rumors spreading on Lemmy, which I would like to try and counteract with very simple evidence.
  4. I want to remind everybody that at the end of the day, all of us care about building and improving Lemmy. We all have the same goal, and it’s too easy to lose sight of that.

I will split up what I want to say in this post by different user groups - users, mods, admins and developers. I understand that many people belong to several (or even all) of these groups, but I just want to highlight the value of, and express my gratitude to each group separately.

Users

At the end of the day, Lemmy would not be worth anything without the users. Users bring Lemmy to life by posting great content, getting involved in discussions in comments, helping surface interesting content for others through voting and even keeping the platform clean through reports. I am extremely thankful for all the users who have given me so much enjoyment on this platform.

I believe that users often get treated unfairly on Lemmy based on what instance they are participating from. I’m sure so many of you have noticed comments around Lemmy along the lines of “Oh, another user from , I’m going to completely ignore your stupid takes”. I’ve also many cases of people treating users as second-class citizen if they are not on the same instance - for example, I’ve seen users who are active and valuable participants in communities on another instance receive comments like “why are you participating in our discussions, go back to your own instance”. In my opinion this is completely counterproductive to the whole idea of federation. On a human level, I can understand it - you’re far more likely to notice or remember what instance somebody is posting from if you have a negative experience. As a result, as time goes by, people tend to develop negative views of each instance, despite potentially having had many positive interactions with other users of those same instances. The message I want to put out here is that instances, especially bigger ones, are not monoliths - do not judge users based on what instance they are browsing Lemmy from, judge them by their actual words and actions.

Mods

There are some excellent communities already on Lemmy, and these communities are all continuously being built up and maintained by mods. Mods put in huge amounts of their free time and energy in order to provide spaces for all Lemmy users. They form the first line of defense against bad actors, they keep communities alive and often receive no praise, only criticism. I am very grateful to everybody who has dedicated time to building communities on Lemmy.

Users rarely notice the lengths mods go to in order to keep communities running smoothly - mods more often than not only get noticed when users disagree with some mod actions. I believe mods deserve a lot better than this. Constructive criticism can of course be useful to improve communities, but it must be balanced with empathy and kindness towards people who have been putting in effort to provide something for users. Remember that there is another human being reading your words when you start writing about the mods of any particular community. Users who are not happy with mods of a certain community always have the opportunity to start their own community and run it as they like.

Admins

Admins provide two main key functions for the network:

  1. Taking care of the actual infrastructure of Lemmy
  2. Working as a higher level defense against bad actors, in cases where mods are not enough

I can tell from my own experience that being an admin of a bigger instance requires constant energy and attention. I don’t believe that there is a single medium-to-big instance where the admins have not put in hundreds (if not thousands) of hours of their free time, as well as in many cases, probably their own money. This is a service which admins provide for free, and it is necessary in order to keep the Lemmy network healthy. I have endless respect for anybody who is willing to put themselves in the position of a Lemmy admin.

I have seen awful messages towards admins from all the other groups listed here, including other admins. These messages range from condescending and rude, to downright hateful. I have seen admins treated as useless and their work taken for granted. I have seen people getting frustrated with admins for not spending every waking minute on Lemmy. I have seen some users consistently spreading provably false rumors about particular admins in an effort to tarnish their reputation on Lemmy.

Before you take out frustration on admins, please remember that they are also humans who have been working tirelessly to improve Lemmy in their own way.

Also, a reminder: the absolute best feature of Lemmy is that users are free to pick their instance - and as a result, users are also free to pick their admins. Even more than that, users can always become their own admins by spinning up their own instance. Yes, this requires dedication, effort, and research, but that’s exactly my point. It’s not easy running an instance, and mistreating people who do this as a free service is completely unacceptable.

Developers

Lemmy development has been lead by a few key maintainers, with a massive amount of smaller contributors. The software is constantly being improved at a very good pace, and everybody is able to benefit from this effort at no cost whatsoever. I am extremely grateful to everybody who has participated in the development of the Lemmy software, and other related software, as without you folks, none of us would even be here now.

There seems to be a huge amount of people with very little appreciation of the work that has gone into the software. I’m sure many of you have seen countless messages where people express that the devs should be doing more in one way or another. “They should work faster”, “they should prioritize this obviously most important feature”, “they should be available 24/7 to offer support”, etc. I just want to take a moment here and acknowledge what core maintainers have already done for Lemmy:

  • Years worth of work on the code itself
  • Offering support to the community and other admins
  • Reviewing literally thousands of pull requests on GitHub
  • Acting fast in stressful situations where the Lemmy network has been overloaded
  • Not abandoning the project in the face of constant hateful users
  • Sacrificing literally hundreds of thousands of euros in missed salaries which they could have been getting if they were working for a tech company instead of working on Lemmy

I also want to take this moment to discredit some rumors which I have seen repeated too many times:

  1. Rumor: Lemmy devs do not accept outside code contributions

This is completely false - the maintainers are completely open to (and even constantly asking for) contributions. When somebody starts contributing, they will receive support and code reviews very quickly. I can tell you that I have experienced this myself several times, but that’s anecdotal, so let me also provide evidence:

a. Contributors list for the Lemmy backend: https://github.com/LemmyNet/lemmy/graphs/contributors

b. Contributors list for Lemmy UI: https://github.com/LemmyNet/lemmy-ui/graphs/contributors

Both of these lists include 100 different names, and that’s only because GitHub literally caps these pages to 100 users. Actually, the amount of different contributors is even bigger. If Lemmy devs did not accept and encourage outside contributions, then there would be no way for these lists to be so big.

  1. Rumor: Lemmy devs work too slowly

This is an extremely entitled and frankly stupid claim. I try to keep on top of the changes made in the Lemmy repo, and let me tell you, the pace of improvement is very good.

I very firmly believe that if the network started downgrading to Lemmy versions from ~8 months ago, the whole network would just collapse, as none of the instances could keep up with the current volume. That is to say, we have come an extremely long way since last summer alone.

Let me provide some more evidence. Take a look at the Pulse page for the Lemmy backend on GitHub: https://github.com/LemmyNet/lemmy/pulse. As of writing this, Lemmy devs have merged 18 pull requests in the week leading up to this post - that’s an average of 2.5 merged PRs per day. This is extremely good for a project with a small underfunded team.

  1. Rumor: Lemmy devs do not prioritize the important issues

There are two sides to this. First of all, there are endless users who turn to the Lemmy devs with what they believe is the most important issue and should immediately be prioritized - the problem is that almost none of these endless users have the same view of what the most important issue actually is! In that sense, it’s literally impossible to please everybody, because everybody wants different things.

On the other hand, even when Lemmy devs do prioritize things which some users have been desperately asking for, I have on several occasions seen a dismissive response along the lines of “too little too late”. Basically, the demands made are often unrealistic and impossible to meet.

If you are somebody who feels like Lemmy devs are not doing enough, I would ask you to please take a step back, look at the actual contributions which they have made, and consider how you yourself would feel if after making such a massive contribution, you would still need to listen to countless strangers on the internet tell you how you’re not good enough in their opinion.

Conclusion

Lastly, I am very thankful to anybody who took the time to read to the end of this post. Again, my goal is to try and defuse some of the hostility, as well as to put out a message of gratitude and positivity. I am very interested in the success of Lemmy as a whole, and that is much easier to achieve and maintain if we all work together. Thank you, I hope you're doing well, and have a nice weekend!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 8 months ago (1 children)

Why introduce a dynamic scripting layer if you can dependency-inject a crate, compile your custom version, and replace whatever is running just as if you'd be restarting the server, picking up where it left because all the important stuff is ACID? (Or at least I hope that's how lemmy works, never actually had a look at the code).

Certainly less development effort, gets as cheap as putting the function to be customised in a lazy static. The difficult part is the API that goes along with it, providing a stable interface to plugin writers because if you don't have that you can just as well tell people to patch the function directly. And at the same time lemmy's version number starts with 0 which doesn't exactly sound compatible with API stability, and bugs need fixing. As such it comes down to the same thing: If people want a plugin system, they'll have to contribute as dessalines and nutomic seem to be perfectly busy keeping the ship afloat.

[–] [email protected] 5 points 8 months ago* (last edited 8 months ago) (1 children)

because maintaining, compiling and deploying custom forks is an order more complex than loading some third party plugins?

And because with plugins each admin can mix and match what they need

[–] [email protected] 1 points 8 months ago (1 children)

Compiling a custom binary can be streamlined (Rust certainly already has a quite painless in-bult mechanism), and you can mix and match dependency injection that's not an issue. It may not be a fancy wheel but it's a sturdy wheel and a wheel that doesn't need to be invented yet.

[–] [email protected] 2 points 8 months ago (1 children)

I think you severely overestimate the capabilities of the average admin

[–] [email protected] 1 points 8 months ago (1 children)

If you can follow a tutorial and docs to edit a config file and start the server then you can follow a tutorial and docs to edit a config file and start a rebuild script.

[–] [email protected] 3 points 8 months ago* (last edited 8 months ago) (1 children)

My brother's in christ, you need to deploy that shit somehow...

Also lol at the idea that every tutorial is the same difficulty

[–] [email protected] 2 points 8 months ago* (last edited 8 months ago) (1 children)

Deploy? I'm a programmer, not devops. I'm barred from production.

Erm. Anyway. If you do it right you can have one nix flake that people can edit and the thing itself then decides whether it can use a standard binary or needs to do a custom build, no difference to the admin. The code needs to be compiled one way or the other, with Rust it just happens to be simpler, and just as automatable, to do it ahead of time instead of at runtime.

[–] [email protected] 2 points 8 months ago* (last edited 8 months ago) (1 children)

"if you do this right" sounds like wishful thinking. Sorry but every other software uses plugins for his sort of thing for a reason. As a devops, sysadmin, and developer, what you're describing sounds absolutely unusable for the vast majority of its target audience.

[–] [email protected] 1 points 8 months ago (1 children)

It's still plugins. It's still configurable without need to write code, or know Rust. Just the compilation step occurs ahead of time instead of at runtime.

And plenty of software is written that way btw though more often in the commercial and embedded sector. This goes into the general direction of a Software product line. As you mentioned godot: Game engines also tend to do it, simply for performance reasons. You can implement quest logic in a dynamic layer, but if you need custom physics or such it needs to get baked into the binary. Godot calls those things modules instead of plugins but really it's the same thing at a different point in compilation time.

[–] [email protected] 2 points 8 months ago* (last edited 8 months ago) (1 children)

You realize Godot supports modules and plugin for a reason, right? Like it would be absolutely inane if Godot asked gamedevs to recompile Godot from source to add shared functionality. And this is with a piece of software that is already aimed at developers and software houses, most of whom are familiar with compiling from source.

Lemmy admins are not software houses. Most barely have enough knowledge to run the ansible playbooks and you're suggesting they set up CI/CD pipelines!

[–] [email protected] 2 points 8 months ago (1 children)

Like it would be absolutely inane if Godot asked gamedevs to recompile Godot from source to add shared functionality.

They do, for a lot of things: Not everything you can do with modules can be done with plugins, while everything that can be done with plugins can be done with modules. And bevy requires it for everything: If you want a scripting layer you have to bring your own, the project doesn't, and won't, provide one. The envisioned editor indeed involves building everything from scratch, not just loading things into a pre-compiled runtime.

and you’re suggesting they set up CI/CD pipelines!

Nah I suggest they run them. Either as-is or after tweaking some knobs. And frankly speaking running a server is not like opening MS Paint, if you don't have some background technical knowledge if the software doesn't eat you then the next botnet will.

[–] [email protected] 1 points 8 months ago* (last edited 8 months ago) (1 children)

They do, for a lot of things: Not everything you can do with modules can be done with plugins, while everything that can be done with plugins can be done with modules.

And yet, they support plugins, even through they're technically unnecessary since modules exist. What a waste of core developer time, eh?

bevy

I mean, there's a reason why Godot is slowly-but-surely taking over the world of Game Engines and I have never heard of bevy before now. Ease of use and ease of development trumps performance every time (as far as "market share" is concerned).

Nah I suggest they run them. Either as-is or after tweaking some knobs.

Sorry but as someone who does have the extensive experience with those things, there's nothing accurate about that statement.

if you don’t have some background technical knowledge if the software doesn’t eat you then the next botnet will.

Which is where allowing more developer resources to be injected into the project, with, oh I don't know, plugins, would help. We're looking to expand the pool of people who are technically able to run fediverse servers. Not shrink it.

[–] [email protected] 1 points 8 months ago* (last edited 8 months ago) (1 children)

I mean, there’s a reason why Godot is slowly-but-surely taking over the world of Game Engines and I have never heard of bevy before now. Ease of use and ease of development (overall) trumps performance every time.

Godot set out to be an open source unity, bevy set out to finally build an ECS-centric game engine with performance as its top goal. Bevy is also quite a bit younger, and not yet feature complete, but also far from a small hobby project it's serious business.

We’re looking to expand the pool of people who are technically able to run fediverse servers. Not shrink it.

Why would an admin care if setting a particular setting in a config file causes compilation of a custom binary, or the standard binary, once started, compiling/loading a dynamic plugin? There's no discernible end-user difference. In both cases you do the equivalent of ./lemmyctl [start|reload] --config my-config.json or such.

[–] [email protected] 1 points 8 months ago* (last edited 8 months ago) (1 children)

In both cases you do the equivalent of ./lemmyctl [start|reload] --config my-config.json or such.

My peep, do you even know how lemmy hosting works or are you speaking out of your ass? :D

[–] [email protected] 1 points 8 months ago

I might be a tad out of touch, which can probably be inferred by the ctl part, but it's the concept that matters, and this applies to any daemon: You configure, you start, you possibly change the config, and you tell the thing to reload the config.

On my system everything gets switched all at once with nixos-rebuild switch or home-manager switch: File systems get mounted and unmounted, daemons stopped and started, the whole system gets upgraded if necessary. It can be that easy. If it isn't, maybe that's a thing to look into before looking into plugins.