4 ms·
I used to be annoyed by the push from yaml to ui. I wanted my config to be version controlled, and I wanted the power that I though text based config gave me.
by Dayshine 3y ago
I used to be annoyed by the push from yaml to ui. I wanted my config to be version controlled, and I wanted the power that I though text based config gave me.
However, it turns out it's really annoying to use text based config for most things. Primarily because integrations can't edit your config, so you have to do a lot more manual migration of config. Yaml also doesn't have any proper ide support, so it's an annoying loop of restarting the app and staring at logs looking for typos.
And finally the version control was useless because so much of what I wanted to keep was state, which can't be in config.
I've recently realised that I only actually needed the complex rules and UI to be in code. And they still are: now through the ui with instant validation.
- wjdp 3y agoI'm very much in the same boat as you here I think. I loved the idea of version controlled config and accepted the edit/reboot loop as that was the only way of doing it back then. It does seem though most of what was in config does live more naturally in UI, a great example is editing a scene with realtime feedback on the actual devices. I do still periodically go into the config folder and do a bulk 'bump' commit, though given the config is likely useless without the state of the database I don't know if this is ever going to be useful. Perhaps having some history is good in case a complex automation is lost but still quite limited.
- garblegarble 3y ago>Yaml also doesn't have any proper ide support, so it's an annoying loop of restarting the app and staring at logs looking for typos. Since YAML is a superset of JSON, I highly recommend converting[1] it to JSON, and then just treating it as a JSON config file. 1: For this, I use yaml2json (npm yaml-to-json)
- maxerickson 3y agoIsn't Yaml a serialization format? Seems like it shouldn't be a big deal to read it into a live object, remap things and then write the updated config back out.