Dev path from custom_component to Integration - via HACS?

Hi, I am trying to guide a newly formed dev team who have come together to ensure that a custom_component survives and thrives. Ultimately the goal is to move to an Integration that is part of the HA codebase, by following the dev docs.

However I would like to know whether any experienced HA developers think it might be worth the time and effort to prepare and publish the Integration on HACS first. Would you recommend going straight to the main codebase or pushing to the community store first?

I appreciate you sharing your experience with us - thanks.

1 Like

In my experience:
If you are unsure whether your integration behaves the way your users want it to behave, do a “test/feedback” release on HACS first. This way it is not that bad if you have to do several breaking changes until most are satisfied. For official integrations which are part of core users are often revolting when there is a breaking change.

For new features which do not alter the way the integration behave or change existing configuration options, you can always deliver them later on with more PRs to the core.

Agreed. Also it’s a LOT easier to control your own destiny with a custom integration. Once you submit it to the main code base you can’t simply do whatever you want anymore. So until you like it and it’s pretty much complete, you’re way better off releasing as a custom integration. The downside, of course, is it gets much less visibility/feedback.

Many thanks to @eifinger and @pnbruckner for your clear advice on the advantages of staging an Integration through HACS before taking it to the main codebase.

I’m just wondering if there are any developers out there who could argue the opposite? That spending time getting their component delivered to HACS was a distraction that took up valuable time away from merging with core, but without returning any benefit to the team or the users

Please do let me know if you think it would be a mistake for us to do that. Thanks

You’re probably better off asking on discord in the #devs_general or #devs_backend channels.

Great advice from Phil. On the backend channel I got Mr HACS himself explain why NOT to bother with HACS :confused:

(reasons to go straight for a core PR:)
Your code will get reviewed, and when merged it will be available for all Home Assistant users.
I could probably go on and on about issues with publishing a custom_component (with or without HACS), there are somethings that should not be part of “core”, but those are few.
My advice is you should create your integration with the aim of getting it into the “core”, if you want to “betatest” with some form of distrubution system be my guest, but as long as the end goal is to make a PR to have it in “core” why not do it right away by making a PR? :slight_smile:

But then on the #devs_general, aside from just feeling like I was learning useful stuff just by reading the banter, I came across an interestingly compelling case to not rely on just doing the PR thing…

paolog89 (10 Jan 2020 at 12:38)
Hello all, I have a really small commit that hasn’t been reviewed since October.
How can I move it forward?

patience paolog89. We’re slowly working through our backlog

Although this is an extreme case I did see a lot of 'can you pull my request please’s so perhaps our answer is to carve out a middle path, doing both! I wonder if I can find a way to keeping taking steps towards a PR for core, whilst happening to pass though HACS on the way there.