Why is there a need for HACS and even custom repos in HACS?

I just started with Home Assistant. It’s open source and everybody can contribute (I guess). Why do some ppl not contribute to the project: Are there any high barriers for contributors?
It always feels a bit uncomfy to add external repos (also on Debian Linux)

there are several reasons. Few (random) of them:

  1. standards and conventions - not every developer wants to invest time to be 100% compliant with them
  2. dependency on HA team - each change to HA must pass an official review stage which might slow development down (no reviewer ready to pick up the task). Then it has to be merged and tested which takes time too.
  3. distributing through hacs is not tighten to HA release cycles. in other word devs can publish updates every day
  4. conflict of interests - some 3rd party work is obviously against official policies and strategies
  5. some extensions currently maintained in hacs have been abandoned/excluded from HA build by HA maintainers

And my opinion: maintaining components as integral part of HA is bad pattern. IMO all components (especially integrations) should be published separately from core.

3 Likes

Not sure what you thought you were getting into, but HA is not a finished product - more a toolkit people use to build their own bespoke systems. So in that sense everyone contributes. I think you’ll find that nearly all the posts in this forum are about implementation, rather than reporting bugs.

Having said that, the bar for HACS integrations is probably lower. But on the other hand, there are loads of good, rather specialist ideas there that the main developers don’t have time for. You don’t have to use them.

1 Like

I spent 15 minutes trying to understand what HACS is and why I might or might not need it. I failed! Is there a page that explains what HACS does? Is it safe to install?

Have you seen this?

HACS GitHub page

Yes I’ve seen that. It says

HACS is a integration that gives the user a powerful UI to handle downloads of custom needs.

:neutral_face: Uhh. Ok?

And the FAQ page is literally blank.

This started because the built in iCloud integration was giving me problems and I heard about icloud3 which apparently requires HACS to install. That’s as far as I got.

Lol, yeah, docs are a bit, shall we say limited in some parts of HA…

Think of HACS being the app store of HA, only that everything is free. Contributing directly to HA has a very high barrier of entry and comes with all kind of strings attached (maxym has a good list above), so a lot of people contribute using custom integrations. These are a little bit like plugins. You could download, install and update them manually, but this could become cumbersome if you want to install lots of them.

And so HACS was created. It’s just a central repository for custom stuff (like an app store, HACS = Home Assistant Community Store) that makes finding, installing and managing your custom modules more streamlined. You don’t need it (everything can also be manually installed if you wish), but it makes it easier.

Ah ok, thank you- that does help explain it!

Does HACS replace the built in add-on “store” or live side by side with it?

Side by side. They’re different. I know the terminology is pretty confusing here.

HACS can be used to install integrations (support for new devices, services, etc) and frontend / UI components (like new cards) directly extending HA. The addon store can install addons, those are Docker containers with OS services outside of HA (like drivers, MQTT brokers, firewalls, vpns, etc).

Technically they’re both optional. Everything they install can also be done manually. But they make things easier and/or more convenient.

They are separate and serve different users/use cases (it’s good to have both options in HA):

  • The Add-ons have been through quality control and have ratings for how secure they are. They are easy to install and configure from the standard interface.
    Recommended for new users and those who favour stability, security, and consistency in their HA system.
  • HACS (and custom elements) provide a hacky way of adding other people’s github custom code to HA. They are of variable quality (some stable and compliant, others not), provide experimental specialist functionality not yet in HA, provide a way for developers and advanced users/testers to interact (without the constraints or benefits of complying with HA standards), and can introduce severe problems to new/unwary HA users.
    Recommended only for experienced users (particularly those who are happy to trade some security/stability for some added functionality) who are used to combing through their error logs to debug and maintain their HA systems, and are happy to recover errors from SSH CLI and recovering config files from snapshots.

HACS is not actually required, but shoving the individual things in obscure directories and trying to keep them updated is difficult for people who aren’t grizzled linux weirdos.

Naturally I’m in the middle of writing an Ansible role to manage it for me, just because I want to minimize my interactions with Microsoft’s Github.

Nonsense. In fact, HACS is highly recommended for new users specifically, because manually installing third party components can be a little finicky at times.

A lot of really good and very stable custom integrations exist, some may even seem required to correctly use HA (mostly around the UI, which is very lacking on stock HA). While it is true that some custom stuff is very experimental, that’s hardly the fault of HACS. As always, before you install something, look around and take a few minutes reading up about the project before blindly hitting install.

HACS —> Support for custom integrations that are not already supported by HA itself.

HA-Addons —> Software that runs besides HA (in a docker environment). It does not add integrations but adds functionality.