Standards and Information Technology’s Legacy Problem

The IA64 processor had to be largely abandoned because consumers wanted a 64-bit processor that was compatible with their existing 32-bit programs. Our modern, 64-bit personal computer processors are therefore still backwards-compatible with binaries compiled for 16-bit processors, which, for Intel family processors, were obsoleted with the 80386 processor in 1985. Resources have been specifically set aside to maintain this backwards compatibility, and the x64 assembly languages have additional complexity.

The vast majority of non-Apple personal computers boot using the BIOS system. Originally designed for computers in the 1980s, BIOS code is 16-bit, typically written in complex assembly, and can’t easily interface with pointer devices. The BIOS boot process relies on assumptions about disk and bootloader size that were true in 1980 but are laughable today, and as a result modern bootloaders rely on complex tricks (like storing the bootloader program in multiple stages) to boot up operating systems. For example, BIOS-readable disks can’t be any larger than 2 terabytes, and can’t have more than four real partitions. While there have been some extensions, the essence of the BIOS is still the same today as it was in 1980.

Standard web URLs begin with http://. Tim Berners-Lee, essentially the inventor of the world-wide web, has said that the two slashes are completely unnecessary, but we will be stuck with them forever, two extra characters taking up small amounts of bandwidth, storage space, and typing time for no gain.

The standard C library contains several functions (such as gets()) which are known to be security risks and should never be used. Nevertheless, because older code uses them, the POSIX standard still mandates that the functions be provided by the C library, and so every Unix-like system still has them.

I could go on and on with examples of how the decisions and limitations of the past still affect us today in the computer world, but I think I’ve made my point. Almost every new standard or library is plagued with the question: Will we be backwards compatible? New hardware is stuck with old interfaces, new programming paradigms are stuck with old syntax, etc. Every time I think about this issue, three questions come to mind:

  1. If we were to start fresh today, destroying every old computer and piece of code and removing the need to be compatible with any thing or attitude that existed before May 13th, 2011, would we be able to design our standards, interfaces, etc. in such a way as to allow for gradual improvement without permanently saddling future improvements with current shortcomings?
  2. If the answer to 1 is “yes”, how can we get to a similar point without a single cutting-off of the past?
  3. Do other fields suffer from similar problems? Do architects have to deal with hold-overs from how castles were built, do industrial farmers have to deal with hold-overs from the hand-plow, etc.?

Thoughts?

About Shea Levy

  • Andrew Dalton

    Here is an example outside of computer programming: human language, and orthography in particular.  There is a large advantage to being able read, without special training, what was written in one’s own language decades or centuries ago.  This is one factor that weighs against radical reforms in English spelling.

  • http://www.shealevy.com Shea Colton Levy

    Interesting example. But this only rules out immediate radical change, and gradual change happens in language all the time. Do you think the kind of gradual change that allows human language to grow past the limitations and mistakes of the past also can work for computer systems? I’ve not really seen that in my experience.

  • Andrew Dalton

    We have to be careful about what we mean by changes in language.  Things like pronunciation, grammar, and vocabulary change over time in all languages — sometimes quickly (e.g. English after the Norman conquest), sometimes slowly (e.g. Spanish since the Middle Ages).  I’m not referring to this organic and unplanned change; rather, I’m referring to how the language is written, which is definitely a choice.

    A historical example of the latter is when Turkish was changed from an Arabic script to a Latin script in the early 20th century.  I’ve read that the Latin system is better suited to Turkish, but it is undeniable that (easy) backward compatibility with the older writing system was lost.

    Computer languages have to be consistent and unambiguous, so they are more limited in the types of changes that will work.  Human languages are more forgiving, because humans have concepts and can fill in the blanks and resolve ambiguities from their context of knowledge.

  • http://profiles.google.com/aaronbilger Aaron Bilger

    Probably false, but fun: http://www.astrodigital.org/space/stshorse.html

    Language I think is a great example.

    Others:
    – which side of the road is driven on – backwards compatibility concern within a country
    – rail gauge – ”
    – electrical voltage, cycles, plug standards – ”
    – English, metric measurement systems

    Like language, all these choices are the result of age-old decisions that have been solidified by the sheer ‘installed base’.  Some are arguably inherently bad – e.g. most English measurements, some irregularly wide or narrow gauges.  The others aren’t bad in isolation, yet the competing installed bases prevent standardization and mean increased incompatibility and costs.

  • http://www.shealevy.com Shea Colton Levy

    Do you think there’s any aspect of how we currently write that’s somehow detrimental to our needs today as writers, but unchangeable due to the need for backward compatibility?

  • http://www.shealevy.com Shea Colton Levy

    Good examples. One reason I hope we find intelligent alien life is that we might be forced to change our electric charge sign convention, though perhaps Americans will still stubbornly stick to the one we use today.

  • Andrew Dalton

    Maybe the Latin alphabet itself, with the accompanying typewriters, printing presses, and computer keyboards. 

    It was created for Classical Latin, which didn’t have a lot of consonant sounds compared to many modern European languages.  For example, it lacked the sounds that we write in English as V, CH, J, SH, and TH.  The Slavic languages are even more complicated phonetically, which is one reason why an entire new alphabet (Cyrillic) was created for them by Christian missionaries.  (But many Slavic languages such as Polish use the Latin alphabet via diacritics, modified letters, and digraphs.)

    The most insane adaptation of the Latin alphabet, at least judging by eye, has to be Vietnamese.

  • http://twitter.com/Tenure NSFW

    Only you would desire for alien contact for that reason.