Well, I always get ideas and thoughts in exam times :S. Anyway, here we go.
Imagine your system's desktop as follows:
Gnome (*nix) + Windows sidebar + Visual Studio .NET + xCode (Mac) + GCC + Bash + Need for Speed + (well, any application that runs on another platform, OS, or H/W architecture), and they are all native.
Is that even possible ?
I might think of 5 factors that makes this not possible:
1- Application Binary Interface ( ABI ).
c- Instructions ( H/W platform )
d- Name mangling ( Dynamic-linking issues )
2- Application Programming Interface ( API ).
a- Arguably boiled down to only low-level system calls, thus it gets to the interface between pluggable API user-space libraries and the system kernel
3- Cross-compatibility between different expectations of Inter Process Communication ( IPC ) and common shared libraries.
a- A mix of point 1 and point 2.
4- Incompatible shared dependencies.
a- Application A depends on version X of library S and application B depends on version Y and both versions are incompatible if both applications use it for IPC. Well, this kinda also gets down to the scope of one platform
5- Incompatible assumptions about the expected behavior, especially if it was buggy behavior.
a- If an application depends on a known bug in the system API and another applications doesn't. This also gets down to the scope of one platform
I'd be thinking of a resolution to each of these points isA and writes thoughts here as an update isA. If you've got any kindly leave a comment.