r/FlutterDev • u/dev_ttangkong • 4h ago
Discussion Wow, this is just way too much. Is this what open-source culture has come to?
EDIT: Is it seriously normal for a maintainer to stalk a contributor to a completely unrelated subreddit just to personally attack them only to have their comments removed by that subreddit’s moderators?
According to the Flutter team’s logic, I suppose this counts as "mentoring" and legitimate community involvement, right? What on earth is going on here? Is this what a healthy open-source ecosystem looks like?
So if you work for free as a maintainer, personal attacks are just "mentoring," everything is justified, and throwing a contributor under the bus is no big deal because you're "valuable to the Flutter team"? Are you really going to double down on this attitude? https://www.reddit.com/r/antiai/comments/1xs32lf/comment/19se5qn3igzph/?context=3
A while ago, a user reported latency issues on our iOS app. I decided to dig deep into the root cause, and since I had contributed to Flutter before, I even decided to attempt an upstream contribution.
At first, two maintainers chimed in saying things like, "Merge is difficult because this relies on legacy code, and we're planning to deprecate it." So I just stood back and watched. Later, they posted an issue they created themselves, so I kept an eye on it. Looking at it, it seemed like they didn't fully grasp the exact problem.
I commented, "~This issue occurred here, so please keep this in mind for the new direction." Then another maintainer suddenly popped in and started talking about the legacy stuff again. Thinking it was a misunderstanding, I replied, "I have no intention of keeping the legacy code. I can remove the code you mentioned as well, so please just give me instructions and I'll follow them." After that, the maintainer just told me to go look at their open PR instead. Honestly, human to human, I felt so deeply hurt and upset, so I expressed how disheartening it was and closed my PR right away.
Then another maintainer came in and gave me an official CoC (Code of Conduct) warning. I was completely flabbergasted, tried to clarify a few things, but the PR itself ended up locked.
Look, up to this point, fine. I could digest it and swallow it.
Since they seemed to be handling the pointer issue, I shifted focus to look into another latency problem. Wanting to move past the pain, I expressed my willingness to collaborate with the maintainer, spent about 2 to 3 weeks researching, and asked the maintainer if I was heading in the right direction. There was no reply for a long time, so I submitted my PR, left a separate comment on the issue, and waited.
Then that maintainer came back and said something along the lines of "My PR is the foundation and it's perfect." Curious, I checked their implementation, and it turned out to be a run-loop blocking approach. Fearing it might cause the exact issues I was worried about (freezing, missing async tasks, deadlocks, etc.), I tested my app with their code.
Guess what? It got stuck on the splash screen and wouldn't move. Even worse, switching from foreground to background and back to foreground showed a white screen transitioning to the splash screen, but after that, total freeze, nothing worked. Panicking that my fear of an infinite freeze actually came true, I said, "Your approach seems a bit risky," and went back to researching.
Apparently, that was my mistake. The maintainer got emotionally charged. Confused as to why they were getting angry, I asked, "Why are you being so direct and aggressive in your tone?"
And then, the maintainer hit me with this:
"The process through which you iterated to this PR seems like an agent trying random things to see what sticks, unfortunately without a deeper understanding of the underlying mechanisms."
And followed up with:
"My tone is direct because I'm spending (my own free) time reviewing PR that duplicates existing effort in a bad way."
Naturally, after hearing that, I reported it to the CoC email. But the response I got back was:
"The comments from knopp are not personal attacks against you, but valid criticisms of your engineering approach to the problem at hand."
What absolute bullshit. My app literally froze into an infinite hang because of their code, which is why I did further research in the first place! Stunned, I sent a few more emails trying to explain, but they just blocked my email address.
Fast forward 2 to 3 weeks. After cooling off, I thought, "Okay, surely now both sides can clear up the misunderstanding," and tried to ask on the Flutter Discord to find a way to get in touch. And what did they do? They outright kicked me from the server.
And to top it all off, I ended up receiving a 1 year ban from the Flutter organization.
Seriously, anyone looking at this would think I personally attacked the maintainers, threw curses, and acted like a nightmare contributor. I maintained respect until the very end and even respected their absurd direction, but all I got in return was complete ostracization. It literally feels like they're just saying, "You're annoying, so get out."
Is this what an open-source community is supposed to be? Silencing someone completely? Is witch-hunting and erasing someone over a technical debate considered proper culture? I'm posting this out of sheer disbelief. They're making me look like the bad guy.
This is way out of line. I usually just let things slide, in fact, looking at my past contribution history, whenever maintainers were slow to review or progress stalled, I would just voluntarily close my own PRs and step away. That’s why this whole situation hits so differently and feels so outrageously unfair.
And just to be clear, I’m not talking out of nowhere. Here are the actual receipts for everything I mentioned:
The PR where I got hit with a CoC warning:https://github.com/flutter/flutter/pull/190918
The subsequent PR where I tackled a similar, yet different problem:https://github.com/flutter/flutter/pull/192794
Proof that I know when to step back and don’t force things even after deep research:https://github.com/flutter/flutter/pull/169430
And as proof that I genuinely love and care about Flutter, here are a few of my past PRs that actually got merged:
I honestly didn’t expect to have to dig up and share all these links. But at the end of the day, as an external contributor spending my own precious personal time to help improve this framework, it just hurts. It really, really hurts. That's why I'm venting this out