Many of my frustrations today come from the sharp line between apps and OS. Apps have custom storage formats, custom UIs, and custom settings, and that makes it difficult for a user to deal with their data holistically. Even something as trivial as searching across all my data is not a solved problem, and that's because every app has a different way of representing data.
But what is an app? An app is just a UX/UI on top of a data model with domain-specific rules for transforming that data. What if we could decompose those pieces: the UX is just a custom control; the data model can be represented by a standard database; the domain-specific rules can be a headless component.
The decomposition gives the user more control: all my data is in a standard database. I can drive headless components via script or agents. And I can compose my UX based on my preferences instead of how the app decided to package it.