The Linuxization of Open Source
The Programming API layer is fragmented in the UNIX world. There's mostly only ANSI C, X, and gcc, which exist everywhere, but it's still not trivial to port between *NIX.
The kernel API is the most useless fragmentation of them all. It's addressed by POSIX and UDI
I thought the above two quotes interesting because they remind me of my favorite gripe about Linux. To explain... back in the 80's, there were two main variants of Unix, System V (r2, usually) and BSD 4.x. The shop I worked in ran SVr2. Every few days, though, we'd see a Usenet posting of some interesting bit of software; one problem, however, usually this nifty toy would require some feature of BSD Unix (e.g., job control) and we'd be out of luck.
Flash ahead to the present. In the interim, efforts such as the Posix standards and the SVr4 "unification" have removed most of the differences. Add to that the proliferation of "standards" such as X11 and gcc and most software can be easily ported between Solaris, HP-UX, SCO, et al.
My complaint? Well, these days I choose to run a BSD variant and every few days I'll check Freshmeat and see some interesting OpenSource software. But guess what? When I actually get around to downloading the tar file and trying to build the application, I discover something interesting... some little (or not so little) Linuxism has snuck in such as a dependency on a kernel structure or on some expectation about /proc.
If we were truly unified, then I wouldn't have to run an inferior port of Wine, nor would I have to wait until someone gets around to implementing clone(), so that I can run StarOffice.
This is not unification, it's a wedge.