My Ideas on Legacy Software
The word ‘legacy’ has been a word that I have watched change in meaning over the years. When I was younger, I remember legacy as being a word describing someone (usually) or something (less often) which for some reason was important after its heyday – profound importance demanding respect, unambiguous visibility, permanence and a model of a life well lived or a design well carried out. I just did a Google search for “legacy” and found 81 million links related to obituaries, politicians and traditions.
The first time I heard the adjective describing software, I was a bit puzzled. The software in question was some industrial software from my company that I had worked on, used internally but not significant enough to garner respect of the general public, customers or even many employees. I initially was a bit flattered that something I was connected with had received “legacy” status, but I soon realized that the term was not being used in a flattering sense.
I have heard the term used perhaps a hundred times since then, in reference to software; the negative meaning, that is. I don’t use the word that way myself, but still cling to the original meaning of the word. I thought about some of the legacy software that is in the world, in the original meaning of legacy. The oldest known software is likely either from Ada Lovelace or Charles Babbage, which are now long gone. Some legacy software that is still around and in active use is perhaps some operating system code or running our telephone system or something on a satellite orbiting the earth. The software that is probably going to be the longest lived in its original form, and perhaps outlive any on Spaceship Earth is the navigation software that went to the moon with the Apollo program. Apollo 8 had two Apollo Guidance Computers (“AGC”) determining its flight path in the Command/Service Module (“CSM”). Apollo 9 through 17 had two AGCs in each of the CSMs (all of which returned to Earth) and one in the Lunar Excursion Modules (“LEM”). All of the LEM AGCs from Apollo 11 on were crashed on the moon’s surface during the trip back, except for Apollo 13’s, which burned up in Earth reentry.
This device was not an early computer by any means, but it had several firsts, and it was important enough to guide the Apollo astronauts from Earth to moon orbit, to the lunar surface, and back to Earth – all separately designed tasks. There were only 75 devices made, but the need for them drove integrated circuit technology in the 1960s, and defined part of the curve for Moore’s Law. Each unit had about 70K magnetic core memory in today’s terms (2048 16 bit words RAM, 36864 words ROM), and interfaced to 7 I/O devices.
The software running this device was simple, yet very robust. Despite the newness of software technology, it was capable of handling high data and interrupt loads, failing gracefully and recovering quickly. During the Apollo 11 landing for example, a 1201 alarm appeared, which the astronauts had not seen during training, and called home with some concern. The reply was that this was handled in the software, and they did not need to abort the landing. Likewise if a 1202 alarm appeared, all was well. Right after that reply, a 1202 alarm occurred. It turns out that each of these alarms were overload conditions, and the device was about to do a warm reboot. Since the operating system was dedicated to navigation, a reboot took a fraction of a second and things proceeded mostly as normal. The software was robust enough that it was used largely unchanged for all of the following missions. Decades later, I know of no modern software that runs with that level of performance, reliability or grace.
That, my friends, is what I consider to be legacy software!