The target audience has been shifting to the lowest common denominator mass audience for a while now. At least ostensibly. But many things that get moved to the UI under the guise of “make it easy” ends up reducing the functionality of the original config requiring non-user-friendly workarounds.
Literally every release comes with a litany of “backwards incompatible changes” (the artist formerly known as “breaking changes”) that everyone who is affected by has to deal with.
Almost every one of those changes force the user (newb or seasoned) to figure out the workarounds needed to restore the old functionality. These are always sold as “make it easy” when in fact they almost inevitably end up as “make it harder” for users of both experience levels.
Recent examples are (obviously) the topic of the latest kerfuffle being the scan_interval changes and the big one before that was the removal of the weather forecast attribute. Both of those (and many more…so many more) required the user to implement complex workarounds for something that was once simple built-in functionality.
OK, so some people were abusing the scan_interval. So instead of completely removing it make it optional with a warning against abusing it or just hide it with a drop-down in the UI config flow to open the edit field. The system can then leave the default at whatever it wants unless the user intentionally changes it.
The weather forecast attribute was removed in my understanding to reduce the attributes of the weather entities to make it easier for users to access that info (and maybe because of the scan interval so see above). But then the user has to figure out how to recreate the forecast sensor again by using way more complicated template sensors and manually calling services. And that workaround just ends up creating an entity with a bunch of forecast attributes that the user STILL has to figure out how to access. There was no benefit that I can see. It only reduced functionality and made getting back to the same point we were at more complicated. I don’t get it.
The alternative workarounds to both of those examples is not user friendly and is in complete opposition to “make it easy”. I keep putting that in quotes because that was the whole original justification for putting everything in the UI vs yaml and was basically the tag line of a blog post (the Future of Yaml) introducing the migration to the UI.
from that blog post in April of 2020:
Enabling configuration via the UI
Before talking about YAML, let’s explain the reasoning behind all the UI features introduced.
The Home Assistant project has grown at a ludicrous rate in the last few years. Being one of the few solutions to provide a local home automation platform, that puts privacy first, has gathered interest from all kinds of people on this planet.
In the beginning, Home Assistant was a small project; aimed at developers and the tech-savvy. With the growth of privacy concerns, but also the growth in the availability of IoT devices in our homes in general, the project gained traction; attracting lots of new community members that are not always the tech-savvy types.
This is great, but that also means we need to adjust, to make it usable for everybody. We want everybody to enjoy what we all have been enjoying already. No matter your level of experience.
Considering that, enabling and empowering people with managing their Home Assistant instance via the user interface is needed. Not just for the lesser tech-savvy, since it also brings convenience, that even many technically capable users enjoy and prefer.
Goal: Making things easier.
The goal of making it easier is currently the main focus.
Breaking changes
We all dislike them, those breaking changes when a new release is published. We all scan the release notes hoping you are not affected by any of them in that release.
There is a big upside on using configuration via the UI: Home Assistant manages that configuration part for you and handles the upgrades and migrations. Virtually removing the chances of hitting a breaking change, we all hate just as much.
“Virtually removing the chances of hitting a breaking change, we all hate just as much.”
That’s a bold statement and here we are three and a half years later still waiting for that promise to be fulfilled.
HA is over 10 years old but still with every release comes new challenges to try to figure out how to deal with constant (and mostly unnecessary and self-inflicted) “backward incompatible changes” to the point that many users (myself included) dread the new release because you never know what will pop up that could take hours of research to mitigate the effects of the latest and greatest “BIC”.
And my system becomes harder to maintain on every release because all of these workarounds cause the config to be spread all over between the UI, !include files and packages.
Actually it gets stored as json in .storage.
If it was yaml then it would be way easier to edit but the way it is now there is no easy/good/safe way to edit those files unless you really know what you are doing.
Yeah, what the developers keep losing sight of (and it was even mentioned in that snippet of the blog post above) is that HA became as popular as it did BECAUSE of the flexibility and power that HA provided. It wasn’t in any danger of getting LESS popular because there was no UI config. It was getting more and more popular IN SPITE of there being no UI config options.
The latest popularity seems to come at the expense of the things that made HA popular in the first place.
agreed.