An ongoing theme with the developers
An ongoing theme with the developers
Posted May 24, 2025 16:23 UTC (Sat) by donbarry (guest, #10485)Parent article: Home Assistant deprecates the "core" and "supervised" installation modes
One can certainly speculate that the trimming reflects the economic interests of the company behind it and the desire to keep the client population focused behind its offerings, rather than, say, an "apt-get install homeassistant" world.
Too many corporately-trained agile developers today have forgotten old mantras like "be liberal in what you consume and conservative in what you offer" and its related library restatement to not rely on recent library innovations when you can avoid it but do the innovation in your own product until the outside interfaces are stable and widely deployed in the libraries.
A considerate community development methodology would use conservative and stable APIs to external interfaces and be able to run on at least the current stable Debian (to use an example). But the direction from the top is pretty hostile to such suggestions. Several years ago answering their objections to providing a version of their Android remote client not dependent on Google's proprietary play services led to my being blocked from their Facebook page. (They later added this alternative after enough other protest!)
Still, it's the best alternative in this domain and I'll continue to use it, and to use it without their OS and hated containers.
Posted May 24, 2025 17:49 UTC (Sat)
by smurf (subscriber, #17840)
[Link] (14 responses)
It'd be even nicer if that could work without a venv, but there are far too many supported integrations for that to happen, given that each one needs its own Python package (with wildly varying actual version specificity) *and* basically no automated PyPI import to Debian.
Posted May 25, 2025 13:25 UTC (Sun)
by philh (subscriber, #14797)
[Link] (12 responses)
See: https://wiki.debian.org/Python/HomeAssistant
That page states that there were 675 missing python packages required when they started the recent push to package Home Assistant. The aim there was to finish packaging it this year, and they seem to have already done well over 400, so I guess strictly speaking it looks like it will not in fact be "too much" effort in the end ;-)
Hopefully that will then give people a place to gather in order to be able to maintain an installable version.
Regarding the out-of date aspect of packaging such a thing, one could maintain a fresh version in `fasttrack.debian.net`, but personally I'd trade something that had proven reliable over a couple of years for whatever this week's latest feature is when it comes to controlling my home when I'm not in the building.
Posted May 27, 2025 17:48 UTC (Tue)
by Sesse (subscriber, #53779)
[Link] (1 responses)
Posted May 27, 2025 18:09 UTC (Tue)
by smurf (subscriber, #17840)
[Link]
The reason you want more than enough RAM isn't that you can't set up a usable system with less, one of my test systems runs perfectly well in a 400MB VM. The reason is that if there's even a hint of memory pressure, the system might need to swap something in when you hit a light switch. Few things in a home automation setup are more annoying to the users, esp. the not-computer-savvy ones, than random delays.
Posted May 27, 2025 20:36 UTC (Tue)
by jdulaney (subscriber, #83672)
[Link] (5 responses)
Posted May 27, 2025 20:53 UTC (Tue)
by Cyberax (✭ supporter ✭, #52523)
[Link]
The HA has a rule that integrations should not have any device interaction logic inside them, they should farm it out to a library. That's where most of 600 dependencies come from.
This makes it easier to develop device integrations, and forces a clean separation between device handlers and HA core logic.
Posted May 28, 2025 8:00 UTC (Wed)
by taladar (subscriber, #68407)
[Link]
Posted May 28, 2025 8:17 UTC (Wed)
by smurf (subscriber, #17840)
[Link] (2 responses)
Those 600 deps mean that HA uses existing and hopefully-tested-on-actual-hardware Python libraries to talk to $THING, which can be stubbed out for unit testing rather easily, instead of re-inventing 200 wheels that can't be tested without the actual hardware.
Posted May 28, 2025 9:54 UTC (Wed)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
And with hardware, you can test it directly instead of needing an HA installation to drive it.
Posted May 28, 2025 19:13 UTC (Wed)
by smurf (subscriber, #17840)
[Link]
You get to guess how many CI runners, or users for that matter, have 100 different kinds of home automation hardware attached to them.
Posted May 29, 2025 10:43 UTC (Thu)
by Rigrig (subscriber, #105346)
[Link]
Unfortunately "this week's latest feature" is often "talking to devices with this week's firmware update". Even if the manufacturer is decent enough to give you the choice, that still means choosing between "works with x-year old Home Assistant" and "latest (security) fixes".
Posted May 29, 2025 20:06 UTC (Thu)
by zigo (subscriber, #96142)
[Link] (2 responses)
I'm one of the 2 crazy guys that started this effort. Packaging all of these libraries, I found out that some are very well maintained, contain unit and functional tests, and some are really bad, with only a few lines of Python. So quality varies a lot.
What is pushing me to do this packaging work, is mostly because I kind of hate the way HomeAssistant is delivered by upstream. I also hate that it's updating every odd days: I don't need that, I want my home automation to be STABLE. In the sense: I don't want it to be a constantly moving target. I don't need new features more often than Debian Stable (ie: once every 2 years is really enough). I also hate having 100s of containers, and having a very poor access to it. I prefer all of these python things to be installed flat out, on my system, together with other things. I also don't want a specialized VM (which is what I'm currently using because ... no other viable choice), and I would like to be able to install other things in my home server than just HomeAssistant. I don't want also HomeAssistant to use the root of my home web server, or to use a specialized port, I would like it to just share port 443, like every other app in Debian, and just use /homeassistant (or /ha ?), and leave the rest of the namespace for *ME* to decide what to host in my web server/haproxy/whatever. Simple things like having SSL support in HA is just horrible. :(
So far, it takes us (me and the other DD) about 15 to 20 minutes to package a Python library, thanks to highly automated tooling.
I have to admit that I did a lot from July to October, and then did other stuff. I intend to restart the effort this summer, hopefully a bit during Debconf in July. However, help would be highly appreciated. If we get 20 people doing 10 package each, we're done! Having to finish the 200+ packages with only 2 persons WILL take a lot of time. Then once we're done, the fun part begins: we'll start playing the the core stuff, it's going to be fun.
Hopefully, we can have something that works well enough for Debian 14 (aka: Forky). Also hopefully: it's going to be practical in Debian Testing before then.
Posted May 29, 2025 22:08 UTC (Thu)
by Cyberax (✭ supporter ✭, #52523)
[Link]
You can do that just fine with HA and containers. Have the HA run on a port like 8080, and set up your frontend webserver/proxy to redirect everything for the '/ha/*' path to that port.
HA itself works fine with URLs that are not rooted, I believe you just need to set the `external_url` property in the YAML config for that.
Posted May 30, 2025 6:43 UTC (Fri)
by smurf (subscriber, #17840)
[Link]
Amen, brother.
> I also don't want a specialized VM (which is what I'm currently using because ... no other viable choice),
I'm using a simple venv, and a startup script that activates it and then starts the HA that's been pip-install'd into it. Works perfectly fine. So I wonder what do you need the VM for?
Posted Aug 9, 2025 22:51 UTC (Sat)
by Rudd-O (guest, #61155)
[Link]
Posted May 24, 2025 18:17 UTC (Sat)
by DemiMarie (subscriber, #164188)
[Link] (7 responses)
Posted May 24, 2025 21:02 UTC (Sat)
by ballombe (subscriber, #9523)
[Link] (6 responses)
Posted May 24, 2025 23:25 UTC (Sat)
by jkingweb (subscriber, #113039)
[Link] (5 responses)
Posted May 25, 2025 8:18 UTC (Sun)
by smurf (subscriber, #17840)
[Link] (4 responses)
It's not at all easy to replace that module there. In a "real" installation you can just update the requirements file with the version# with the bugfix and restart HomeAssistant.
That being said, this is for end users. A user won't muck about with Docker images, but then they wouldn't know how to edit their Supervised installation either (not without messing it up anyway). The user files the bug, somebody else notifies upstream with a fix, and you get that in the next regular update.
Actually *running* HA in Supervised mode will continue to work because they (and we) need that mode for development and testing. It'll just not be end-user-supported by them. After all, you can't rebuild a Docker image or re-provide+-boot your appliance every time you fix a typo, that'd take much too long.
Posted May 25, 2025 9:49 UTC (Sun)
by ballombe (subscriber, #9523)
[Link]
Posted May 25, 2025 11:36 UTC (Sun)
by pizza (subscriber, #46)
[Link] (1 responses)
On the contrary, it's increasingly common these days that the only build artifact produced is a docker image.
Posted May 25, 2025 18:52 UTC (Sun)
by smurf (subscriber, #17840)
[Link]
Posted May 25, 2025 18:56 UTC (Sun)
by Cyberax (✭ supporter ✭, #52523)
[Link]
The way the HA environment is set up, you can create "patches" in the `config/custom_components` folder, the Python file loader looks there first. So you can replicate the directory structure of the affected package and patch individual files. Once you're done, you can do a full-blown build.
And even for the core development, you don't need the full Supervised mode. Just clone the repo and install dependencies for the core and the parts that you want to change.
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
An ongoing theme with the developers
Difference in perspective
Difference in perspective
Difference in perspective
Difference in perspective
Difference in perspective
"nonreproducible".
Difference in perspective
Difference in perspective
Difference in perspective