This project builds on the work of the open source community. We acknowledge and thank the following projects and contributors.
Users who provided modem captures for parser development:
| Contributor | Modem | Contribution | Issue |
|---|---|---|---|
| @captain-coredump | ARRIS SB6141 | HTML samples and compatibility testing (Community Forum) | — |
| @dlindnegm | Motorola MB8611 | Original HTML page captures | #4 |
| @cvonk | Motorola MB8611 | HAR captures, debug logs, iterative testing | #6 |
| @Mar1usW3 | Technicolor TC4400 | HTML samples and compatibility testing | #1 |
Open source projects that informed our parser implementations:
| Project | Used For | Contribution |
|---|---|---|
| BowlesCR/MB8600_Login | Motorola MB8611 | HNAP HMAC-MD5 challenge-response authentication |
| Tatsh/mb8611 | Motorola MB8611 | HNAP action names and response field definitions (StatusSoftwareSfVer, etc.) |
| xNinjaKittyx/mb8600 | Motorola MB8611 | Protocol reference and prior art for understanding HNAP flow |
| philfry/check_tc4400 | Technicolor TC4400 | Related prior art for TC4400 web interface monitoring |
- Source: Obkio Network Monitoring Blog
- URL: https://obkio.com/blog/snmp-polling/
- Contribution: Industry standards for network device polling intervals (5-10 minutes standard)
- Applied: Default scan interval configuration (300 seconds)
- Source: Merge.dev Engineering Blog
- URL: https://www.merge.dev/blog/api-polling-best-practices
- Contribution: Guidance on preventing server overload (> 1 second polling can overload)
- Applied: Minimum scan interval validation (60 seconds)
- Source: Broadcom DX NetOps Community
- URL: https://community.broadcom.com/communities/community-home/digestviewer/viewthread?MID=824934
- Contribution: Recommendations for client device polling (not lower than 5 minutes)
- Applied: Health recommendations in UI and documentation
This integration relies on the following open source libraries:
- BeautifulSoup4 (https://www.crummy.com/software/BeautifulSoup/) - HTML parsing
- Home Assistant Core (https://github.com/home-assistant/core) - Integration framework
- pytest (https://pytest.org/) - Testing framework
- pytest-homeassistant-custom-component - HA testing utilities
- ruff (https://github.com/astral-sh/ruff) - Code linting
- @captain-coredump - Confirmed ARRIS SB6141 compatibility, provided HTML samples and testing feedback (Community Forum)
- @esand - Provided Technicolor XB7 HTML samples and detailed modem information (Issue #2)
- Users who report modem compatibility issues
- Contributors who provide HTML samples for new modem support
- Community members who test pre-release versions
- Documentation improvements and bug reports
Thank you to all community members who help improve this integration!
- GitHub - Code hosting and collaboration
- GitHub Actions - CI/CD automation
- HACS (Home Assistant Community Store) - Distribution platform
- Home Assistant - Smart home platform
When using or referencing this project:
- Attribution: Cable Modem Monitor by kwschulz
- Repository: https://github.com/solentlabs/cable_modem_monitor
- License: MIT License (see LICENSE file)
We commit to:
- ✅ Properly attribute external research and code
- ✅ Credit community contributors
- ✅ Acknowledge dependencies
- ✅ Respect open source licenses
- ✅ Give back to the community
If we've used your work without proper attribution:
- We sincerely apologize - it was unintentional
- Please open an issue or contact us
- We'll add proper attribution immediately
Open source thrives on mutual respect and acknowledgment. We're committed to doing our part.
When adding a parser informed by external code or research, follow these standards.
Document the source in the parser docstring:
"""
{Manufacturer} {Model} parser for Cable Modem Monitor.
Auth implementation informed by:
- {Author/Project name}: {URL}
See ATTRIBUTION.md for full credits.
"""Add an entry under "External References" with:
- Project name and author
- Repository URL
- What we learned from it
- License acknowledgment
We learn from, not copy. External references inform our approach; we implement in our own architecture with proper attribution.
AI tools sometimes add plausible-sounding citations that weren't actually referenced during development. Before committing:
- Review all attributions — verify each one is real and that you can explain how it influenced the work.
- Verify you can answer "how did we use this?" — if you can't explain the specific influence, use softer framing instead of claiming direct learning.
- Data contributors are verifiable — issue numbers, forum posts, and HAR captures can be traced. External code references added by AI may not be.
| Framing | When to use it | Example phrasing |
|---|---|---|
| "Based on" / "Informed by" | The source's approach is traceable in the code | "Auth flow informed by BowlesCR/MB8600_Login (HMAC-MD5 challenge-response)" |
| "Field definitions from" | Specific field names or values came from the source | "Response field names from Tatsh/mb8611" |
| "Related prior art" | Similar work exists; direct influence can't be verified | "Related prior art: other DOCSIS modem monitoring projects" |
- Don't remove existing attribution — removing credit looks worse than over-crediting.
- Soften the language — change "Based on" to "Related prior art."
- Document the uncertainty — note in your tracker that influence couldn't be verified.
- Pull requests with merged code are automatically credited in release notes
- Your GitHub profile is linked in commit history
- Significant contributions acknowledged in this file
- Open an issue describing your contribution
- We'll add you to the acknowledgments section
- Credit will be included in relevant documentation
- Users who provide HTML samples for new modem support are credited in:
- Release notes when support is added
- Comments in the code for that modem
- Compatibility guide
Questions about attribution or credits?
- GitHub Issues: https://github.com/solentlabs/cable_modem_monitor/issues
- GitHub Discussions: https://github.com/solentlabs/cable_modem_monitor/discussions
Last Updated: 2025-10-28 Document Version: 1.1