The model as you describe it wouldn't make a lot of sense. To simplify the description of what you're suggesting: it's to have the 'core' and 'UI' be separate.
But if the cores of different applications are interchangeable anyway (which they need to be, to make this model work), then why would multiple cores exist in the first place? It could just be reduced to a single one, and there'd be little incentive to start a new one if you can't deviate from the API anyway.
The closest real-world model to what you're describing, is an "implement once" public commons model; a shared commons of open-source / public domain libraries that implement a given responsibility or solution for a given problem, and that can then be used forever by everything, and that problem never needs solving again.
For that to work, the implementations in question need to be highly granular, so that using them is a no-brainer and you don't pull in additional complexity that you don't need. An "e-mail client", for example, would then effectively just be a UI, and all the business logic would be provided externally by a collection of loosely-coupled libraries.
Such a granular ecosystem, in turn, requires a dependency model where adding a dependency is (in and of itself) free and cannot cause dependency conflicts; otherwise people would start grouping complexity together again to reduce conflicts, as can be seen in the dependency ecosystems of many languages today.
The only ecosystem that is currently at a point where it can support the "implement once" model, is that of JS, due to everything being highly modular and interoperable. Rust is also moving in that direction, but its ecosystem is nowhere near mature enough yet.
Unfortunately, people are too busy complaining about meaningless dependency counts to understand what a highly-granular dependency model makes possible.