If you read the blogs, you'll learn how the long tail is great for business. The long tail can also be a curse. Consider developer communities. If you have a long tail of developers, it's harder to coordinate with all of them. The long tail of developers typically will attach itself to the dominant development platforms (C/C++, Intel x86, DOS/Windows), whereas other platforms (Java, PowerPC, Mac) have small development communities. The dominant platforms cannot coordinate with all the developers, so they must retain backwards compatibility. Their strategy is not to abandon their old systems, but to extend them. C was extended to C++. Intel 8086 was extended to 286 and 386 (remember "real mode" and "protected mode"?) and then later x86 was emulated inside Pentiums. DOS was extended to Windows and then replaced by NT, which still could run DOS programs. In all of these cases, the platforms have become incredibly ugly due to the backwards compatibility. Ask developers if C++ or Java is cleaner, if x86 or PowerPC is cleaner, if Windows or Mac is cleaner, and the answer will be clear: the system that was more recently designed is cleaner and more pleasant to work with. However most developers are still tied to the ugly systems. Why? Because backwards compatibility is the path to success. When you have that long tail of developers, you can't afford to abandon them, so you bend over backwards to keep their old programs working. I can still run Windows programs I worked on in 1993. I can't run Mac programs from 1993 in any nice way. I can still run 8086 programs on a Pentium IV without emulation. I can't run 6800 programs on a PowerPC without emulation. I can compile most C libraries in a C++ compiler. I can't compile C code in a Java compiler. The most popular systems have this curse.

This leaves me pessimistic about ever having clean successful systems. The successful systems are laden with backwards compatibility requirements. Those requirements make the system unclean.

1 comment:

Anonymous wrote at Friday, May 12, 2006 at 6:56:00 AM PDT

I completely agree with this. The reason why Intel is the successful company it is today is because of the promises it made to keep backward compatibility. Processing power could be so much more greater and efficiant if it were not for backwards compatibility. I mean the whole modern day PC architecture is not optimal. The size and complexity of software design these days make it absolutely impossible to have both. On a side note, as software becomes more powerful and user demands get greater the greater the requirement for better higher level HLL's. These languages breed a society of HLL developers (or business experts, if you will) that only want to get the job done. This compromises tons of stuff, performance, security and sometimes even quality. Computers are as flawed as we are and is dangerously flaky. Something big has got to happen to change things.