Skip to content

Latest commit

 

History

History
149 lines (97 loc) · 8.42 KB

CONTRIBUTING.md

File metadata and controls

149 lines (97 loc) · 8.42 KB

Contributing to Valetudo

Don't

Heh, I bet you weren't expecting that. But it is actually the answer you're looking for.

Code Contributions

Unless explicitly noted otherwise (e.g. in a Help Wanted issue), I'm usually not interested in any contributions to Valetudo.
This is because Valetudo is mature software that I'm personally using daily.

Due to that, pretty much all low-hanging-fruits are already gone and those that still appear 🍐 to be there are either not as trivial and simple as you'd think initially or conscious design decisions that should actually be like that.

Everything that isn't a low-hanging-fruit on the other hand usually turns out to be such an invasive change, that I won't be accepting any PRs for such changes, because I know from experience that after merging any such PR, I will be rewriting the whole thing anyway, which not only doesn't save me any time or effort but actually costs me even more.


Thirdly, Valetudo is not only mature software but specifically mature software that has become infrastructure. As such, the decision process is different from the one in e.g. a new fun side-project to play around with.

There are thousands of people using it. Not every one of them finds reinstalling nixOS/Gentoo/Arch every 72 hours enjoyable. Some of them might even have children or elderly to care about. Or they might just also have a life outside of IT.

Valetudo thus first and foremost needs to be dependable. It needs to work, and it needs to specifically work reliably for those main use cases that the majority will have. If there's an issue that affects 3% of users doing something arcane which can be fixed by either a large chunk of code or just by not doing that arcane thing, the latter will be the preferred solution.

Being infrastructure means accepting that covering 80% is good enough if that means less code, less potential bugs and less potential vulnerabilities.

Yes, this makes the project super boring. I know, I know. You bought a new Toy, you got root access on it, and now I'm telling you that there will be no cool improvements coming from that. Just cloud removal.

I know where you're coming from. Don't forget that I'm also a Hacker and I also enjoy playing around with technology.
I just also have different hats to wear. Some of them even look kinda funny.

Keep on hacking, but.. elsewhere, please. Thank you for understanding.

A word on documentation

Documentation is a similar story to what was said above. The docs - for the most part - are how they are supposed to be. I know that the project might not be immediately accessible to everyone without further research but that filtering is a feature and not an oversight.

I do quite enjoy writing documentation, so I generally don't need help in doing so. In fact, I think it's best if I do it, because I know quite exactly how the software works.
Playing a game of telephone will already happen further down the information chain. It shouldn't be part of the documentation itself.

The docs are the single source of truth, so they need to be truthy.

Some context

Because I support newcomers and long-time-users daily, I pretty much know exactly where the pain-points are, what issues there might be, which things people struggle with and what the scope should be. Therefore, it is highly unlikely that someone new to the project happens to see something obvious that all people just missed until they came along.

It might happen of course, but the chances of having another nonsense discussion are a few orders of magnitude higher.

I also have developed a quite good understanding of who this project is for and - more importantly - who it isn't for. I can tell who will struggle with it, what drama that will cause and if it is worth it. The docs take that into account and try to filter to avoid all this very exhausting drama.

On (not) growing the target audience

Please please please keep those filters as-is. Please do not invite people that clearly can't pass those filters to the project.
Please do not attempt to "make things more accessible". Please do not make any video-tutorials.
It's not helping anyone.

At the end of the day, it will still be yours truly that has to deal with the support requests resulting from that.

I know that if you're on board the "everyone MUST use this software and it MUST be for everyone bandwagon", you likely won't see what the issue with that is.
But please, listen to me. No one is winning if you facilitate a nonsense-DDoS against FOSS maintainers.

Side-note:
This btw is by no means FOSS-specific or even software- or IT-specific. It affects any "social" project/movement/idea.
Half-baked "I'd like to do good" always just backfires and only increases the workload on the existing volunteer structures.

Yes, short-term, there may be some benefits, sure, but that doesn't matter if long-term, volunteers quit and structures crumble, because they were pushed into unsustainable conditions by well-meaning third-parties. Third-parties that even feel proud having done "the right thing". Third-parties that are long gone once things start to fall apart in consequence of their actions.

It's a shame, really, but it keeps repeating itself over and over and over everywhere.
It needs to stop and stopping starts with a no.

Being for everyone

A friend to all is a friend to none

― Taylor Swift

If there's one thing to take away from this text then it's that the opposite of "not for everyone" isn't "for everyone" but rather "for no one", because things trying to be "for everyone" will always collapse under their own weight.


Please also note the important distinction between "for anyone" and "for everyone".
Valetudo actually is "for anyone", because anyone can pick it up; no matter the specific selection of attributes such as e.g., sex, gender, age, ethnicity and whatever other uncontrollable backgrounds you can come up with.

It is however not "for everyone", because "everyone" is a superset of "anyone" that then includes wants, needs, ideas, behaviour and whatnot.
Basically everything the individual can and does control.

Yes, I'm aware that controlling those things can sometimes be more challenging depending on background, but we're talking about a cloud replacement for vacuum robots (read: luxury goods) maintained as a hobby project by some random guy on the internet and not access to healthcare, public services, legal protection or anything vital like that provided by a nation-state or billion-dollar company.

Expectations need to be reasonable.

Expectation management

On that note, to set expectations, you can basically think of Valetudo as freeware with source available, so that others can learn from it, and you can be sure that I'm not doing something evil on your robot.

If you base the way you'd like to contribute something on that mental image, it's probably correct-ish.

Final remarks

I know that this text will have offended quite a few people. I know they will say that this is elitism or not real open-source or really any other digital blunt object used for smashing people on the head to try to force your will onto them.

To those, I can say that this is precisely why I'm not doing open-source anymore. I've dropped the term and replaced it with opinionated software that just happens to be licensed under the same licenses.

Open-source by the definition of that crowd is a bottomless pit that devours the souls of young, naive, motivated, gullible and easy to exploit individuals. It burns them out to a crisp for personal and corporate profit. It is so very unsustainable and inhumane. I'm not doing that anymore.

I'd also want to encourage other FOSS maintainers to say no. To set up boundaries and filters and stick to them.
You're already bringing a ton of value to other people. Don't ever forget that. Anyone demanding even more is just being unreasonable.
It is okay to say no. It is okay to set up boundaries and not be for everyone.


If you can understand what I'm saying here, feel free to stick around in the support groups :)

I for sure don't know everything and also can't do everything.
I absolutely need the input and help of other people and for that I'm glad.
Thanks for the support and for being part of the community ♥

Without people like you, the project certainly wouldn't be where it is today!