thecode / ha-rpi_gpio

Home Assistant Raspberry Pi GPIO Integration
Apache License 2.0
185 stars 39 forks source link

Too many RPI GPIO forks #278

Closed tomer-w closed 1 month ago

tomer-w commented 1 month ago

Hey @thecode, @raboof, @gwhiteCL,

Sorry for contacting you here, I wanted to start a thread with all of you and this seemed like the right place as this is the original post HA fork of the RPI GPIO library. Hope this is fine with you.

We got to situation which there are too many forks of this is small integration and it is not helping the community. @thecode fork is the oldest, has the most users, fully registered with HACS but does not have the Raspberry Pi 5 support and will become obsolete if not get back in shape. @raboof seems to want to contribute RP5 support, for whatever reasons didn't get the support he needed to check it in, started a new fork with this important work but for whatever reasons decided to put his work on https://codeberg.org/ which makes it incompatible with HACS and will have low chance to become mainstream for users who needs this. @gwhiteCL got it back to GitHub, added few features and tweaks over previous work but don't have full HACS integration and workflows like what we had in the original @thecode repo. I wanted to contribute a feature and had to do it in two repos as I originally had RP4 and now I need to do it again as I moved to RPI5 and decide if I want it to work for me or get more exposure. For the sake of the HA community, we should try to converge on a single GitHub based location for this work. It is too easy to fork but it doesn't serve us. think about HA itself if it had to fork every time someone had some idea for improvement. I suggest integrating back the latest codebase based on @gwhiteCL work to @thecode repository. This will get the best visibility and the latest feature set. All three of you should become maintainers as you made a major contribution to this project. There are other options we can follow if needed. I'm sure that we can get to some agreement for the future of this important integration.

(Please forgive me if I got the history wrong, this is just me being bad GitHub historian and not trying to provide wrong / not complete information)

raboof commented 1 month ago

@raboof seems to want to contribute RP5 support

Actually my motivation was that I wanted support for systems that have more recent versions of libgpiod2 (and not necessarily the RPi-specific APIs). The RPi5 support was contributed by @aguedob

for whatever reasons decided to put his work on https://codeberg.org/ which makes it incompatible with HACS

I'm not sure I understand why HACS only works with GitHub and not with other forges, perhaps that's something to bring up on their side? I don't use HACS myself.

tomer-w commented 1 month ago

I'm not sure I understand why HACS only works with GitHub and not with other forges, perhaps that's something to bring up on their side? I don't use HACS myself.

I agree with you that this is a bit strange but I don't think this will be solved by us or in a short while so I think we should just accept the current reality that if we want to have meaningful integrations for HA it should be developed in GitHub.

raboof commented 1 month ago

OK. If you don't even tell them that'd be something that would be useful to you then you can be certain it will not be solved, though ;)

tomer-w commented 1 month ago

Agree, I'm not HACS nor https://codeberg.org/ expert. It seems you care about that, and you should try to understand if there are real limitations or not. In this thread I want to focus on the right way forward for our project and for now we should focus on one of the GitHub options: The @thecode repository, @gwhiteCL, or new one. As I said, I favor @thecode option as it has the most visibility (177 stars), but we can decide something different.

tomer-w commented 1 month ago

Adding @jdeneef. Sorry for missing you in my original investigation. I thought @gwhiteCL took the code directly from @raboof but I was missing that lot of the work was done by @jdeneef. This is just making my point stronger that we have too many ports. I still think we should merge the latest work to this repo and make all the relevant contributors as maintainers and have a single place for the community to use. Any thoughts about this? can I/someone merge all the code to here?

jdeneef commented 1 month ago

Thanx for adding me! I rewrote from scratch, copied mainly documentations for backwards compatibility with @thecode. Change from @gwhiteCL is merged some time ago.

tomer-w commented 1 month ago

Hey @jdeneef, happy to have you here. Do you see any problem of merging it all back to @thecode repo assuming he will agree to share control over this repository with you? @thecode, are you willing to give @jdeneef maintainer rights to this repository?

thecode commented 1 month ago

@thecode, are you willing to give @jdeneef maintainer rights to this repository?

I prefer it will start by making a PR with the changes when they are accepted I can add another maintainer(s).

tomer-w commented 1 month ago

Who will do the initial merge of all the code which developed outside of this repository is something @jdeneef can do or someone else (like me if needed). The question is whether after this is done, more people will be able to make progress as needed. I saw the original PR by @raboof was not handled in timely manner which started this fork shenanigans and I understand why it is better to have few people who can contribute to this to make it an active project.

gwhiteCL commented 1 month ago

Hi all, my only contribution was a small change in the documentation in @jdeneef's fork. I agree that one well maintained implementation would be great.

tomer-w commented 1 month ago

@thecode, i can start migrating the code from https://github.com/jdeneef/ha_gpiod but it will break the support for the legacy yaml. Are you ok with this? I think it is fine but I don't want to spend time on this if you think it is a problem.

thecode commented 1 month ago

@thecode, i can start migrating the code from https://github.com/jdeneef/ha_gpiod but it will break the support for the legacy yaml. Are you ok with this? I think it is fine but I don't want to spend time on this if you think it is a problem.

I think as part of the code migration we should also migrate YAML to config flow. We can't just break something for existing users. How would you feel if you press "update" in HACS and find out your sensors stopped working?

You can find in this PR an example how to support YAML and create an issue that ask to remove the YAML: https://github.com/thecode/ha-rpi_gpio/pull/112

tomer-w commented 1 month ago

I meant only breaking the super old format:

# Basic configuration.yaml entry
switch:
  - platform: rpi_gpio
    ports:
      11: Fan Office
      12: Light Desk

This was already obsoleted probably few years back. I think that it is ok to break (which is quite common in HA) and keep the current format:

switch:
  - platform: rpi_gpio
    switches:
      - port: 11
        name: "Fan Office"
      - port: 12
        name: "Light Desk"
thecode commented 1 month ago

I meant only breaking the super old format:

This was already obsoleted probably few years back. I think that it is ok to break (which is quite common in HA) and keep the

Yes that is ok to remove the obsoleted YAML

tomer-w commented 1 month ago

Cool. I will try to create a PR for that. I will be glad to get ack from @jdeneef for this as well.

jdeneef commented 1 month ago

sry, not yet following what you are trying to do? I sort of was planning to add my setup to hacs sometime since the original is not working (at least on rpi) any longer, but feel free to find a better/alternative solution? I'm currently maintaining for my own purpose, but if anyone can use this code that's fine to me, that's and to get it into HACS is why it's on github. Not really working with github too much, any tips/ ideas welcome, I'm happy to share this code.

tomer-w commented 1 month ago

Just found another fork which was missed by my original research: https://github.com/jlinford/ha-gpio owned by @jlinford. Another attempt to fix the RP5 no support issue.

@jdeneef what i'm trying to do is to fix the original mess that HA made when they removed the GPIO integration from the official HC code base. Before this move there was a single integration which probably everyone used. Now after they did, it branched out to so many integrations which each has its own tweaks. I think for the sake of the community we should share all the improvements we made and not keep branching out and have so many flavors to choose from. If someone wants to make it better, they should try to send a PR to the common repository instead of forking further.

jdeneef commented 1 month ago

Great work. I would not know what it would mean on activities, so if you need something from me please share

fwiw rpi5 is not an issue, see https://github.com/jdeneef/ha_gpiod/issues/1#issuecomment-2117074026, was a different gpio path