zigpy / bellows

A Python 3 project to implement EZSP for EmberZNet devices
GNU General Public License v3.0
179 stars 87 forks source link

[SUGGESTION] Rename the bellows library and repository to "zigpy-emberznet", "zigpy-ezsp", or "zigpy-ember" for clarity and consistency #215

Closed Hedda closed 4 years ago

Hedda commented 4 years ago

Please consider renaming the bellows library and its repository to "zigpy-emberznet", "zigpy-ezsp", zigpy-ember", or something else with "zigpy" in the name for better clarity and more consistency plus sharing a common prefix to show unity for the zigpy organization and zigpy projects as a whole.

This is a suggestion and a recommendation not to continue using the abstract name of "bellows" for this library/project but instead use something more directly related to the Silicon Labs's Zigbee stack and protocol or hardware as well as using "zigpy" as a prefix like how all the other zigpy radio libraries for other Zigbee stacks are currently named.

Example of new library/project-name suggestions:

EmberZNet is the latest official name Zigbee Protocol Stack Software that runs on EFR32 (and EM35x) SoC families/series:

Ember stands for the original company who created Ember/EmberZNet which was latest acquired by Silicon Labs in 2011-2012:

EZSP is short for "EmberZNet Serial Protocol" so is specific to protocols in EmberZNet Zigbee stack:

By the way, noted there a few other projects that are also using "ember" as a short name in reference to Silabs ZB stack. ex:

Update: Zigbee2MQTT have also named their adapter/driver for Silicon Labs Zigbee EmberZNet interface to "ember" too:

The specific arguments against choosing "ember" as a suffix name for this radio library for zigpy is that newer Silicon Labs today allow the newer have multiprotocol Ember series SoC chips/MCUs to run other IEEE 802.15.4 standards, such as BLE (Bluetooth Low Energy), Thread, Proprietary 2.4 GHz, as well as Zigbee. So while the API used to be called "Ember ZigBee Serial Protocol" all the way to version 6.7 but now with 7.x even the API is officially called "EmberZNet Zigbee Serial Protocol".

The arguments for choosing "emberznet" as a suffix name for this radio library for zigpy is that it specifically makes it clear by its name in a google search that this library is for EmberZNet PRO Zigbee Stack by Silabs. EZSP is also short for " EmberZNet Zigbee Serial Protocol"

The arguments for choosing "ezsp" instead of "emberznet" as a suffix name for this radio library for zigpy is simply that "ezsp" is shorter than "emberznet" yet still stands for "EmberZNet Serial Protocol". Problem with that name is that it as an abbreviation is not clear to understand and might not help new developers finding it if they are only searching for "EmberZNet" support.

Regardless, IMHO it would be best if the bellows lib/repository/module/project were renamed to either zigpy-emberznet", "zigpy-ezsp", or "zigpy-ember" to match the other libraries/projects related to zigpy as the others use "zigpy" prefix and 'protocol' suffix.

The name "bellows" have no official reference to the interface used, and "EmberZNet" is also a poor choice of name because it first referred to EM35x SoC platform hardware and then to the high-level API for the EmberZNet PRO stack, though the name EZSP for the APIs also stuck for the newer EFR32 family/series of SoC platform hardware from Silicon Labs.

This is only a suggestion and not a must or a showstopper in any way, but IMHO 'name branding' is important even for hobby open-source organizations that are only made up by volunteers like the zigpy organization.

As the bellows library project is now like the other zigpy projects part of a collection of projects which are a part of an organization shared by many members and is upstream for multiple sub-projects, using the same brand name can help everyone feel that they belong to the same team who are working for the same or similar goals.

Note! This is indirectly related to the request of renaming zha-device-handlers library and repository -> https://github.com/zigpy/zha-device-handlers/issues/327 and also a request of renaming zigpy module name -> https://github.com/zigpy/zigpy/issues/351 as well as the request of renaming zigpy-xbee module name https://github.com/zigpy/zigpy-xbee/issues/96

It is only named bellows because it came first before zigpy was broken out and newer radio libs follow it as the naming-standard.

There are now already all these libraries for zigpy where only "bellows" and "zha-device-handlers" do not follow the standard:

Update: There are also third-party radio libraries for zigpy that uses the same naming format:

If bellows library and repo were renamed to "zigpy-emberznet" or "zigpy-ember" then also rename the PyPI projects too:

I understand that the active PyPI projects being named "zigpy-homeassistant" and "bellows-homeassistant" can be confusing to new developers, especially to those who wish to use zigpy and bellows without Home Assistant as they might think that Home Assistant is a requirement for using these libraries.

Yes I have OCD but others might also find this could be a logical choice that makes total sense.

IMHO best for clarity and consistency was if both bellows and zha-device-handlers also follow the same naming-standard.

ZHA in Home Assistant is gaining traction and zigpy will likely get more and more related libraries over time. If the "bellows" and "zha-device-handlers" libraries were renamed "zigpy-device-handlers" all would follow the same naming-standard, and I believe that more and more developers could take notice and maybe join in the development of current and future zigpy related projects,

PS: Regardless of above it is probably also a good idea if you could and would make a few more zigpy and bellows developers shared co-owner/co-author/co-maintainers of this project on GitHub as well the package project(s) on PyPI. That could help remove some of the personal pressure on yourselves as well as explicit dependence on specific individuals.

mickeprag commented 4 years ago

Also, in the same track, why is the pypi library called "bellows-homeassistant" instead of just "bellows"? It does not have any homeassistant dependencies and can be reused by other projects as well (as I am).

I vote for a namechange from "bellows-homeassistant" to "zigpy-ezsp" (ar the author suggests).

Hedda commented 4 years ago

@mickeprag As I understand from https://github.com/zigpy/zigpy/issues/190 and some more I remember reading in Home Assistant community forum, the reason for PyPI name is "bellows-homeassistant" (https://pypi.org/project/bellows-homeassistant/) which is not consistent is that @rcloran (who initially created both bellows and zigpy) went incommunicado for a long while (I'm only guessing that it was for personal reasons) before he could give any other developer write access permissions to the existing projects on PyPI that he created and was thus registered as the sole owner of.

The same goes for the use of "zigpy-homeassistant" (https://pypi.org/project/zigpy-homeassistant/) instead of just "zigpy" (https://pypi.org/project/zigpy/) and "zigpy-xbee-homeassistant" (https://pypi.org/project/zigpy-xbee-homeassistant/) instead of just "zigpy-xbee" (https://pypi.org/project/zigpy-xbee/) on PyPI, but that can not be resolved without @rcloran giving PyPI project access permissions to more developers that are members of the zigpy organization, however, I agree with you that all and any naming inconsistency can cause confusion.

You can also read a somewhat related discussion in https://github.com/zigpy/zigpy/issues/113

Hedda commented 4 years ago

For reference, this suggestion is related and very similar to https://github.com/zigpy/zha-device-handlers/issues/327

Hedda commented 4 years ago

FYI, see related https://github.com/zigpy/bellows/pull/234 and https://github.com/zigpy/zigpy/pull/363 as well as https://github.com/zigpy/zigpy-xbee/pull/94 in which @Adminiuga changed bellows, zigpy-xbee, and zigpy module names back to just "bellows", "zigpy-xbee", and "zigpy"

Hedda commented 4 years ago

@Adminiuga sorry for bikeshedding but wondering how you feel about this suggestion about renaming bellows library and repo?

Apologies if my OCD ranting is not really constructive here but doesn't Parkinson's law of triviality clearly states that all bikesheds should have a corrugated galvanised iron roof and be black in colour, just as all source code libraries in a software-suit should follow the same naming convention ;)

Hedda commented 4 years ago

@rcloran Please let us know if you are totally against renaming bellows library, this repository on GitHub, and the PyPI project. Hope that is OK that if we do not hear from you then hope that it is OK if we will assume that you are OK with renaming them to something else with "zigpy" as the prefix.

roger- commented 4 years ago

+1 for renaming.

Always wondered what this was about (until I needed it) since the name is inconsistent with everything else.

Hedda commented 4 years ago

@roger- Out of curiosity, what did you need it for? Troubleshooting as an end-user or developing something with it as a developer?

Mostly just thinking that it is very interesting to know of more third-party projects that use zigpy and/or bellows without HA's ZHA :)

roger- commented 4 years ago

@Hedda

Actually just via ZHA (troubleshooting), but I could imagine using this for a standalone project.

Adminiuga commented 4 years ago

At this moment we're not considering renaming bellows. Yes, it's name does not match zigpy and all other lib, but that's for historical reason. Zigpy came out for bellows. Bellows was the name picked by Russel and I can't nor really want to change it. Renaming it won't fix anything and proper renaming, would require too many changes -- it doesn't worth it. Sorry.