Skip to content

[SUGGESTION] Add deprecation notice / legacy warnings to logs to flag older firmware and obsolete radio adapter hardware #601

Description

@Hedda

Suggest that zha and zigpy libraries add deprecation / legacy warnings to logs to (and UI) flag older firmware and obsolete radio adapter hardware.

Not sure if this suggested idea about legacy warnings belongs here in zha or should be seperate suggestions for each and every zigpy radio library, but posted issue here in the zha repository since this is also indirectly related to the other issue opened by puddly about deprecating XBee + ZiGate:

This might be easier to communicate if could deprecate all "Zigbee 1.2" based firmware in all zigpy radio libraries at the same time(?), including XBee and ZiGate which have said that want to formally deprecated in upcoming Home Assistant release to then remove later.


Example of suggested deprecation and legacy notice warnings about legacy that should be logged and preferably also flagged in the ZHA UI:

bellows radio library deprecation notice / legacy warnings:

(Meaning older Ember firmware like EmberZNet 5.x.x will be listed as deprecated and old hardware like EM35x/EM35xx will be flagged as legacy).

zigpy-znp radio library deprecation notice / legacy warnings

(Meaning older firmware like Z-Stack 1.2.x + 3.0.x will be listed as deprecated and old hardware like CC2530 and CC2531 will be flagged as legacy).

zigpy-deconz radio library deprecation notice / legacy warnings

zigpy-xbee and zigpy-zigate radio library deprecation notice / legacy warnings

XBee + ZiGate been suggested to be formally deprecated because firmware are not feature complete and libraries are no being actively developed:


Arguments for adding such deprecation notice / legacy warnings in ZHA and zigpy radio libraries

Note! The suggestion here is not to actually remove support at this point, but only to warn about deprecating/deprecated firmware and radio adapter hardware. The goal with tis is to guide new and existing users towards using newer firmware and more modern radio adapter hardware that you plan to support long term, and discourage the use of those that will be phased out sooner rather than later because they are old and obosolete. This will help give users a better user experience and hopefully also mean fewer support issues due to old firmware and/or old hardware.

What deprecation notice / legacy warnings mean in this case in the simplest terms here is to activly recommend against using older firmware versions and old legacy radio adapter hardware that is no longer updated/maintained by the manufacturers (or in some cases have even been officially made end-of-life by the manufacturer). Preferably should also be officially listing deprecating in Home Assistant's ZHA integration documentation as well as the readme files for each zigpy radio library.

So while this project has always strived to run on almost all hardware, to keep the project moving forward and not having to support older legacy firmware and hardware forever you must sometimes make difficult decisions to deprecate old firmware and hardware, even if it is just on paper. In practice deprecation notices / legacy warning like this will only affect a small percentage of users, and ZHA users can already relativly easily upgrade or migrate to newer hardware. Even though they will be officially deprecated, you are giving existing users time to migrate to newer firmware and hardware.

Ultimatly this should help to reduce both technical debt by enabling you to eventuelly phase out old code, addressing security vulnerabilities in old firmware, while still allowing for graceful migrations, preserving backward compatibility until it will no longer be necessary to keep legacy support, benefiting both developers and end-users.

This will indirecttly also effect deprecate all firmware and radio adapter hardware not capable of effectivly support the Zigbee 3.0 specification.

PS: Implementing this and clarifying it in each zigpy radio library readme.md file also means that can close this PR too:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions