Currently I'm working on documentation, trying to explain (and sort of figure out for myself) why I spent the last 2 years developing a declarative scripting framework called 'freckles' (
https://freckles.io ).
The code is at a state now that I'm happy enough with (at least to prove the concept), but I realized that it is not as obvious to other people why a thing like it should exist than it has been to me.
I was working as programmer as well as a sys-admin-type years before DevOps became a thing, and I always thought there was something missing. We are automating a lot of stuff, but not up to the 'last mile', there is always some manual requirement install or preparation necessary. And I always thought that once we can wrap every single one of the tasks 'around' a software project into a re-usable, formalized structure, it would make a lot of things easier, and open up lots of possibilities that are hidden from our views for now.
Basically, I think we should be able to create any desired state in a specific computational environment (physical machine, VM, container, filesystem, infrastructure, ...) using a single instruction, and one (optional) dictionary-type structure for arguments. Be it trivial (like make sure a folder exists) or fairly involved (setup a complete Wordpress instance incl. reverse proxy, Letsencrypt cert, firewall, ...).
There are technologies that help with some of the issues I have (Docker, K8s, Terraform, config-management ...), but it feels like they all have a slightly off-target focus and priority for what I have in mind.
I'm still struggling to find the right words (as you can probably see) to explain the what and why, but it's an interesting experience working on basically reverse-engineering something I think is important but can't express (it's like trying to explain a color). Gaining a lot of understanding about the problem too. And the funny thing is, I don't think I could have done all that before I went ahead and actually implemented the/my solution to the problem itself.