Here's how we do it for analytic systems: data and software. The software services are open source running on Kubernetes. If you don't like the vendor or the vendor goes away, the existing services keep running. You can also maintain them because the stack is open source.
This is different from what the local-first article is describing, which addresses data for individuals. That's a much harder problem to solve at scale.