Pfft. It’s only semi open source. People are paid to work on it. Plus it’s not my project. And the statement is still exactly true. Here’s detailed items.
-
NOBODY in the embedded systems pro world ever distributes source for embedded devices. (But ok fine. If you’re going to, make a proper build system, see below…)
-
NOBODY builds that source on the customer system. (The most ridiculous part, really. From a company selling underpowered hardware as the build platform??? Seriously??? No one measured how long a full update of 100-200 devices takes and went, oh… this sucks… or limited the release cycle because of it?)
-
NOBODY rebuilds modules unnecessarily for devices that don’t even need a rebuild just because the version number of the upstream project rolled. (Only one item in the latest release notes even affected half of my devices. The integration has NO CLUE and an update all rebuilds every device binary. For no reason whatsoever other than a version number change.)
-
NOBODY builds a build system that makes a new directory and builds the entire tree every week-ish. (Notice the release notes for the last dot version? Four completely optional items, not a single one regression tested, single dev approval? Yeah, let’s make every HA system running the integration earn users that they’re out of date for that silliness… repeat this as a mantra for embedded development: Users shouldn’t need to read release notes to know the update system is building things unnecessarily adding significant risk something will go wrong.)
-
NOBODY turns on features in the code that break updates because adding them runs the device out of flash space. (Forced addition of API encryption. No documentation on how to remove it.) None of my devices at adoption had API encryption. I don’t really mind until it fills available flash, but if it does that the build system needs to know how to upload minimal firmware and then recover by uploading the larger file. It also could gzip the file and compare to the available flash space — that information is available from the device. (If there’s a way to turn off forced API encryption and maintain connections to the device or force a gzip, feel free to point to the documentation showing it.)
-
NOBODY rebuilds the same tree over and over for the exact same devices. Build once, package in config changes. Individual binaries per device doesn’t scale. 20 devices of the same architecture and hardware is a rebuild of one, maximum… and and modules that change because of configuration items. Rebuilding the serial library — or network library — or whatever — every device, is pure silliness.
Except… HA and this Integration. Haha.
There’s no real fixing it without a complete refactor, frankly. I thought it was a joke, at first. The more I dig into it the more broken it is.
It’s fine to be lazy. It also means it’ll get called out. It doesn’t ever mean the “customer” or user is responsible to fix it.
Now brass tax. Do I care? No. Not further than discussing it. All these devices will happily run Tasmota which deals with all of this nicely. TasAdmin add-in and away you go…
Measured it. Test system to update the latest ESP release with four completely optional updates, none critical, one lowered flash size on a couple of devices by 180K is all… over an hour.
Same style devices on the other test system running Tasmota? Two minutes including reboot time. Three of the devices even needed to go up a major version.
Obviously my testing is complete. Heh. There’s no reason to stay on ESP with this integration being this wasteful of time and resources on what’s an automation platform for embedded tiny devices.
Just figured smart folk here would appreciate the technical analysis. But it’s bad. Really bad. Like ten orders of magnitude bad, objectively measured with real numbers and times.
Not emotional about it. I’ve seen far worse sold to paying customers and sat on change control boards that stopped some of them. Haha. Not exactly new at this, as mentioned before.
Some things are just architected poorly and yet wildly popular. See Microsoft. Ha. Shrug…
Life is just a bowl of cherries… cheers. Good discussion. Brings up that broken attitude that users are supposed to fix things. Nope. By definition they aren’t qualified to do so. Open source continues to pretend everyone is a dev… which I’ve realized over nearly thirty years is pure silliness wank.
You don’t WANT neophytes coding for embedded devices that might be hard to access and are critical for home automation. Not without strong peer review, regression tests, and proper controls on what becomes a user “warning”… big orange ball that says “you need to upgrade!!’” — what do you think the average user is likely to do?
UI/UX. It’s important. Two minutes vs an hour of compiling in a non-dismissible window… come on. Clearly that’s not bright. Put it in the background… at least… haha… wow… bad. Makes no sense at all.
Was fun to test ESP. I hope it catches up. Probably turn the test system down now and flip those devices back to Tas… May keep it… not lots of personal time avail for that level of testing and it’s so far behind it becomes a “I’ll check back in a year or more” thing for me, really. Especially with as mature as Tas has gotten.
Have fun y’all.