Once you have your production systems running on a cloud vendor it becomes increasingly difficult to move off it regardless if you're only using OSS components, there's an inherent risk with every migration that grows the more services you use and years you host on it that needs to be offset with any migration and given the major cloud vendors are comparatively priced, there's little incentive to invest their time and energy doing that instead of focusing on their core business.
The small players will always stay niche, a cloud is effectively a network monopoly (like iOS and Android) with most companies only wanting to invest in the cloud that's going to have everything they need when they need it, they'll still offer proprietary services to differentiate against the other 2 cloud vendors and additional way to lock you in and make it harder to migrate away.
You could choose to build out your system to be completely cloud agnostic but that is generally regarded to be economically irresponsible in itself preventing you from leveraging the best features available in each cloud.
> You could choose to build out your system to be completely cloud agnostic but that is generally regarded to be economically irresponsible [...].
I don't see it being anywhere near that clear-cut.
Seems more akin to what the RDBMS world went through for a long time, and still does, because people insist on using things other than Postgres[1]. You can stay SQL-standard compliant, writing your app to be portable. Or you can use these appealing proprietary extensions to the spec, and not be portable.
Seems like a majority of folks writing in-house choose to use the extensions, and the majority of folks who want others to use their software make an effort to be cross platform.
You'll probably see a similar split with cloud services, although I'm not sure it will necessarily follow the same lines.
...but that is generally regarded to be economically irresponsible in itself preventing you from leveraging the best features available in each cloud.
This is only true as long as the costs of maintaining a cloud provider abstraction layer are greater than the costs of being locked in to a single vendor. I believe that some businesses, once they are armed with an abstraction toolkit like this, will be able to employ arbitrage between the cloud vendors for themselves, and sell that toolkit to other companies who want the same kind of freedom.
And then somebody creates a free software alternative, and will maintain it and keep it up to date.
The problem of leaky abstractions can't be solved by slapping yet another abstraction on top. The best case is that you become locked into your cloud provider abstraction layer instead of the cloud providers themselves - and then what stops them from becoming just as monopolistic?
The small players will always stay niche, a cloud is effectively a network monopoly (like iOS and Android) with most companies only wanting to invest in the cloud that's going to have everything they need when they need it, they'll still offer proprietary services to differentiate against the other 2 cloud vendors and additional way to lock you in and make it harder to migrate away.
You could choose to build out your system to be completely cloud agnostic but that is generally regarded to be economically irresponsible in itself preventing you from leveraging the best features available in each cloud.