Marc Espie: Historically, various Unices have been largely compatible with each other. This means that you could take source code from someone and compile it on your machine. On any given project, over 95% of the source code should be directly portable. There are some parts that require some adaptation, but it’s fairly easy to keep that in a small part of the project. Then there’s gratuitous incompatibility, of two sorts: either not knowing enough and writing code that will only work on some given machine/OS variant, because you don’t know better or putting something that you know only exists on your OS at a central point in your project.
If you’ve been working on Open Source projects for some time, you know that the above tendency has been increasing over time, with a main focus on GNU FSF tools and some Linux stuff.