My Journey from Bug Report to Bitter Disappointment
Three months ago, I stumbled upon issue #138413 in Home Assistant Core. As a newcomer to the project, I was eager to contribute and help make this amazing platform even better. The issue seemed straightforward: when users configure multiple Telegram bots in their configuration.yaml
, messages are sent to the wrong chats. Users were reporting that their sensitive notifications were going to unintended recipients - a clear security and privacy concern.
âThis should be fixable,â I thought. How wrong I was about the real challenge.
The Technical Deep Dive
Being new to Home Assistantâs codebase, I spent weeks understanding the architecture. I dove deep into the telegram_bot integration, traced through the code, identified the root cause, and developed a proper fix. The problem was clear: only the last initialized bot was being used for all messages, regardless of the target chat_id specified.
I implemented a solution that:
- Maintains a list of all notification services
- Routes messages through the correct bot based on target chat_id
- Handles edge cases like overlapping chat_ids
- Maintains full backward compatibility
- Includes comprehensive tests covering all scenarios
The fix was elegant, minimal, and non-breaking. I followed every guideline, formatted the code properly, wrote extensive tests, and even signed the CLA.
The Code Review That Never Came
When I submitted PR #144922, I was excited. This was my first significant contribution to such a large open-source project. The automated tests passed, the code was clean, and I had addressed a real user problem.
Then came the response from maintainer:
âI donât think we should fix this until we add support for config entries. It will make it easier to migrate and import the YAML to config entries if we donât support more than one platform.â
I provided a detailed, respectful response explaining why this was critical:
- Users are experiencing data loss (messages to wrong recipients)
- Itâs a security/privacy concern with sensitive messages
- The fix is minimal and wonât interfere with future config flow work
- Users reasonably expect documented configuration to work
His final responses?
- âIt has never worked to configure more than one platform so this isnât a critical fix.â
- âIâll close here now.â
Just like that. Three months of my time, dismissed in two sentences.
The Real Problem: Broken Contribution Process
This isnât just about my hurt feelings (though they are genuinely hurt). This exposes serious problems with Home Assistantâs contribution process:
1. Single Point of Failure Decision Making
One person unilaterally closed a thoroughly researched, tested, and implemented bugfix. No discussion with other maintainers, no technical review of the actual code, no consideration of the arguments presented.
2. âNot Broken Enoughâ Mentality
Claiming itâs ânot criticalâ because âit never workedâ is backwards logic. If users expect it to work (and the configuration suggests it should), then it IS broken and needs fixing. This attitude discourages fixing any long-standing issues.
3. Contributor Abandonment
After someone spends months learning your codebase, understanding your patterns, and implementing a proper solution, the minimum courtesy is a real technical review. Not a dismissive closure based on architectural preferences.
4. Perfect Future vs. Better Present
Blocking practical fixes because they donât align with some future architectural vision means users suffer indefinitely. Good engineering is about iterative improvement, not waiting for perfect solutions.
The Bigger Picture
Home Assistant is an incredible project, but this experience shows why many potential contributors walk away:
- High barrier to entry: Complex codebase requires significant time investment
- Unpredictable review process: No guarantee your work will be fairly evaluated
- Architectural dogma over user needs: Theoretical purity trumps solving real problems
- Lack of contributor support: Newcomers arenât guided or supported through the process
What Should Have Happened
- Technical review: Actually look at the code and tests
- Discussion: If concerns exist, discuss them with other maintainers
- Compromise: If the approach isnât perfect, suggest improvements rather than closure
- Respect: Acknowledge the time and effort contributors invest
The Cost of This Approach
Every closed PR like this doesnât just lose one fix - it loses a potential long-term contributor. I spent three months learning Home Assistantâs internals. That knowledge is now wasted because Iâve lost faith in the contribution process.
How many other developers have had similar experiences? How many bugs go unfixed because contributors give up after being dismissed?
A Call for Change
Home Assistant needs to:
- Establish multi-reviewer requirements for closing PRs with substantial work
- Create contributor mentorship programs to support newcomers
- Prioritize user-facing fixes over architectural purity
- Require detailed technical justification for PR closures
- Implement contributor feedback systems to improve the process
Conclusion
I still believe in Home Assistantâs mission. But I can no longer invest my time in a project where months of work can be dismissed in seconds by a single personâs arbitrary decision.
The telegram_bot bug still exists. Users still experience it. And now it will remain unfixed indefinitely because fixing ânot criticalâ bugs apparently isnât worth the effort.
To other potential contributors: be warned. Your time and expertise may not be valued here.
To the Home Assistant team: youâre losing contributors faster than youâre gaining them with this approach. The cost of architectural perfectionism is measured in unfixed bugs and abandoned contributors.
This post represents my personal experience and frustration. I hope it leads to constructive discussion about improving the contribution process for everyone.
TL;DR: Spent 3 months fixing a legitimate Home Assistant bug with proper code and tests. Maintainer closed PR in 2 sentences without technical review because it doesnât fit their architectural roadmap. This process discourages contributors and leaves users with unfixed bugs.