Closed Hypfer closed 1 year ago
Many thanks for your great work and taking on so much extra work dealing with the public ( including the dicks out there). Keep that chin up and keep turning the other cheek and don’t let stupid comments get to you and keep deleting them! Cheers and again much appreciation for your work!
As someone who gave 5 years of his life to a moderately popular open source project all I can say is kudos. I stepped away from my open source project for many of the same reasons you've just explained. You're being extremely generous with your time in releasing Valetudo in the first place, you don't owe anyone anything more.
My cecotec 5090 is not supported and my day is ruined but all I can say is thank you for spending hours on this and hope you can handle all the hate (it looks you can anyway)
I'd really love to help but I know nothing about low-level/hacking/firmware related coding so I will patiently wait since I have more faith in open-source than in cecotec programmers. It's been a year since the app stopped working and they just say "hey bro, just push the on/off physical button for a complete clean"
My cecotec 5090 is not supported and my day is ruined but all I can say is thank you for spending hours on this and hope you can handle all the hate (it looks you can anyway)
I'd really love to help but I know nothing about low-level/hacking/firmware related coding so I will patiently wait since I have more faith in open-source than in cecotec programmers. It's been a year since the app stopped working and they just say "hey bro, just push the on/off physical button for a complete clean"
Yes, it sucks to have obsolete device in deep EOL. As a last resort, you can use Switchbot to push those buttons.
Hi and welcome to the annual maintainer burnout prevention issue. This time, it's purely informational. Please enjoy this wall of text
"Where are all those old issues and discussions?"
Gone.
"Yes, I can see that. But why?"
Because their existence was becoming a burden for me. Let me explain
First, we need to understand that in western culture, there's one very broken mechanic: As soon as one participant of a discussion shows an emotional reaction, they set a fail flag that takes precedence over everything else. It doesn't matter what they said, what they've done or where they are coming from or even why there's an emotional reaction.
As soon as there is one, they're out.
This mechanic is also being severely abused by a lot of people trying to "win" by doing everything they can to set this flag and then point at it being set. While I assumed that people would stop being like that as soon as they've left high school, the unfortunate truth is that a lot of people never do leave high school. They don't get older. They just age.
Anyway, since I do care deeply about this project, said flag is practically on by default or at least very close to that, meaning that I'm basically set up to constantly fail with those mechanics in place.
It will come as no surprise that continually entering this failure state because you're passionate about something and because you've given something to the world is taxing.
GitHub flavoured public bugtrackers
With that out of the way, let's talk about GitHub flavoured public bugtrackers. I don't like them.
Actually that's an understatement. It's often a strong detractor from the fun that is building Valetudo; so strong that it utterly obliterated my motivation to do anything with the project many times now.
Why is that?
Well, first of all, what do you do when you receive an email which you don't want to answer because it's a stupid question, someone not reading the documentation or someone once again challenging your design decisions? You delete it. You're done with it.
You don't have to deal with the emotional fallout of the sender noticing that you did that because they don't receive any feedback. For all they know, you might not have gotten that email at all. Or maybe you did get it but forgot about it. They'd likely still be unhappy, but not actively hostile as they tend to not perceive you as the aggressor.
What happens when you receive an issue that you don't want to answer because it's a stupid question, someone not reading the documentation or someone once again challenging your design decisions?
You delete it?
Ha. That means that now the person on the other end knows that you don't want to deal with that. This is usually being met with hostility. How dare you silence this person. Someone else could've helped them! If you don't want to help, at least let the community help!!11
You keep it but don't answer?
Ha. Now you get to watch effectively dead threads staring at you every time that you look at your inbox to see if there is anything new that needs handling. While 20% of the time, some community member might chip in with an actual helpful reply, most of the time, this issue will now only receive replies such as
Maybe, someone will even come along and suggest something that makes no sense whatsoever. Now you get to watch nonsense unfold in your inbox. Nonsense that you could've prevented because you know the answer, however you did not want to give the author the answer because stupid question, docs, challenging design decisions etc.
Regardless of that, you will eventually give in and answer. You're not happy with that. You're not happy with the question itself. You think that all this is just stupid. Congratulations. You have now set the emotional insta-failure flag. This will be used against you. :-)
Sidenote: Did you ever notice that "issue tracker" greatly extended the scope of what once was a "bug tracker"? You can't have just a bugtracker on github. It's an issue tracker. You also have to care about support tickets, feature requests etc.
Even though it is your project, you're not allowed to make that decision. The platform dictates that releasing an open source project means that you have to cater to all those things.
The impact
This quirky implementation of a bugtracker inevitably causes emotional reactions in replies, which, combined with this weird cultural quirk explained above, become failures as far as the public is concerned.
Thus, regardless of how helpful I might've been or how much value the project brought anyone, my issue tracker is slowly becoming a chronological record of my own failures hosted by myself. Failures that not only just lie there but - as recent events have shown - have future consequences, gradually starting to overshadow the project.
Why do I think that?
Recently, a friend of mine who is using Valetudo had a question. He decided to first dive into the issues and check if there already is an answer to that. What he found was me just saying "no" without any further explanation.
He then contacted me with that question and a link to that issue, saying that I wasn't being all too nice to that poor guy asking in the issue. Of course he then got a full detailed explanation on why things are that way and I also tried to explain why the reply was this short.
With that additional context, it did make sense but said context is just not there. Unfortunately, it doesnt scale to add that. It's simply not possible to do that every time with every person.
Even if you do add context explaining why it's not possible, people will often default to "but what if you do it anyway?" which is incredibly frustrating. Frustration leads to an emotional reaction and once again you're now in a failure state.
A failure state that will propagate itself as more comments in that state will inevitably cause more comments in that state just by expectation alone influencing the tone and behavior of new people opening new issues.
Thus, when even friends get the initial impression that I'm acting wrong there, it can only get much worse when a random person on the internet stumbles upon such a reply. And stumble upon they did:
(Name redacted for privacy)
A user account that is about a year old, meaning that it hasn't been specifically created as an alt account just for posting that, with no repos nor previous issues or comments decided to open a discussion entry to write this. Nothing else. Not even a reference to what made them mad. All I can do is speculate.
Probably, this user was having a question, searched the discussions, found a thread matching, found my reply and went ballistic. It likely was one of those threads where I should not have answered at all but did anyway due to what was explained in the "GitHub flavoured public bugtrackers" section.
Fortunately, this time it was just a single individual spewing insults but it's perfectly clear that things will only worsen from here. Sooner or later, someone will be so offended by a reply they don't like that they will do everything they can to start a shitstorm.
Unfortunately, It's pretty easy to do that due to the fail-flag mechanic explained above. If you pull in a large amount of people unwary of the circumstances, they will just blindly follow your hatred because it looks reasonable to them since there's this flag.
I have absolutely zero interest in having to endure such a shitstorm just because I've released software as open source for free.
The solution
I've been thinking about this for a while and came to the conclusion that the best way forward would be to just delete everything so that people simply can't pick something, ignore the context, point at it and say "look, what a terrible person! He's emotional and wrong and evil".
I understand that people won't like that and I do get why. I probably would've thought the same in their position. However, this time, I'm in a different position and as such have different needs.
In the future, I will probably continue deleting things.
I will not further allow being forced to pick between
There is a fourth option. I'm taking it.
Occasionally, this decision might be wrong. I'm fine with that. This is neither a public space nor a democracy.
It's my project and you should be thankful that you can use it not only for free but also get the source code under a permissive license. Demanding anything beyond that is simply unreasonable.
"But you're hurting the community by removing this accumulated knowledge!!"
Eh. I get where you're coming from but most of that was either outdated, a very specific issue that people likely won't face anymore or contributed by myself. If it's something important, it will come up again.
Also, a lot of things a being streamlined all the time, removing the need for guidance in old issues. And of course, everything that is so important that many people might ask for it should be part of the documentation to be easily accessible instead of being buried in 50 issues with 400 comments.
Edit: When writing this text, I assumed that there would be some kind of bulk delete function or I'd at least put together a script that does just that. That however wasn't the case. Because I had to manually go through all those discussions, I kept those that contained valuable information while still deleting those containing e.g., people asking for a timeline for when a new robot will be supported.
Moving forward
Unfortunately, I don't see a good solution to these problems. Just deleting everything is far from a perfect solution. I do however know that I had to do that and that I feel better now.
We should probably talk about expectations for open source software. I honestly don't understand how the whole ecosystem even works at all. Nothing about that is new. A lot of people feel that pain. There is a ton of material out there where FOSS maintainers say pretty similar things.
Regardless, I think I did find an intermediate solution to work around the most pressing problems I don't want to be obligated feel overwhelmed and/or misrepresented just because I've released open source software and now I hopefully have to do that slightly less.
If you're unhappy with this decision then that's reasonable, but for the sustainability of the project it's simply better to have some unhappy users than one unhappy maintainer. I don't want to introduce the stale bot or disable issues or unpublish the project or even stop working on it entirely. All I want is agency.
I hope that you can empathize with what I've tried to convey here. I know that it's hard to understand the situation. I had to become a maintainer and feel that pain myself to understand it. Before that, I was and sometimes I might still be an entitled user making unreasonable demands.
Thus, because I know how hard that is to understand, I'm trying my best to communicate and document all that stuff that you usually would not see or hear. You'd just see the reactions by the maintainer. Not why they react like that.
This is why there is this long text explaining the decision.
Sidenote: That's also why there is a "Why not Valetudo?" docs page. Did you ever see something like that in another project?
I didn't. And they don't have to of course. The open source license under which we release our software should be enough.
This is the extra mile.
Final remarks
I'm fairly certain that some readers now feel the strong urge to comment their opinion on this below. It will most likely include their vision of how things should be done, some suggestions such as "just deal with it", "just ignore it" or my personal favorite "If you don't want to deal with this you should not have released it as open source".
Thank you for your input but not interested.
This is my project which I released under my own terms. I decide how this works. I don't care how you feel an issue tracker should be used. I don't care how you think community participation should work. I don't care about your wrong definition of open source. I don't care that you think that it's my moral obligation to cater to your or anyone's needs.
If you disagree, simply don't use Valetudo. No one but yourself is forcing you to use Valetudo.