Linux is less divergent than commercial Unixes used to be
Today, Trever Miller tweeted:
Tell me again how the Linux fragmentation is any different than the UNIX fragmentation of yore?
To boil my reply and the resulting conversation down, my view is that Linux is far less fragmented and divergent than commercial Unixes were back in the days of commercial Unixes. Part but not all of this is due to everyone having settled on a single hardware platform (yes, I know, ARM may upset this applecart, but not yet).
The reality is that a lot of Linux is common across most distributions (you can always do bizarre things with Linux but most distributions don't). Some of the credit for this goes to the FHS and some goes to open source competition, which insures that when people come up with good ideas they spread rapidly. But beyond those reasons, most Linux distributions are simply built on top of an essentially common base that differs only in minor details.
The commonality is impressive. Almost every Linux distribution has
system calls, low level C and C++ ABIs, and most higher level libraries
in common with everyone else, to the point where you can often copy
relatively sophisticated binaries from distribution to distribution.
In addition pretty much everyone has tacitly agreed on a common
set of tools and ways that the system works, things like PAM and
/etc/cron.d. To a large extent you can use and even administer a Linux
machine without noticing very much about what distribution it's running.
I was around for the era of commercial Unixes and I can assure you that this was not the case back then. Solaris, HP/UX, Irix, Ultrix, and AIX were far more divergent from each other than any mainline Linux distribution I've ever run into. Replacing an Ultrix machine with an Irix machine (or an Irix machine with a Linux machine) was a significant project; many things had to change and how you dealt with them was quite different. Even today Solaris on x86 looks nothing like Linux on x86 (I'm talking at the level of system administration or programming).
(Also, the commercial Unix world was full of interesting technologies that never spread because of vendor licensing issues. Sometimes this basically dictated your choice of which Unix you were going to use.)
The user experience is much more unified, too. Today you can run KDE or probably Gnome 3 on probably any main Linux distribution and you can certainly compile and run programs written for either on basically anything. This was very much not the case back in the days of commercial Unixes, not unless you wanted to write to Motif (and look very unconventional on non-Motif machines) and then probably pay a licensing fee to distribute your compiled program.
(Okay, you could write to basic X, do a lot of work yourself, and still look bad. This was a surprisingly popular choice, not because it was a good one but because people didn't have any other option.)
I feel strongly about this issue because I've dealt with both commercial Unixes and multiple Linux distributions. I would much rather do the latter than the former; it is much easier and more transparent.
(Today we use Ubuntu, Red Hat Enterprise, Solaris, and OpenBSD machines. The Solaris and OpenBSD machines are far more different from the Linux machines than the Ubuntu and RHEL machines are from each other.)