When we want to replace software systems, we often start calling them legacy systems. Sometimes we call legacy after we have made the decision to switch. Sometimes legacy is used as a pejorative to precipitate change. Keep reading for a discussion on a definition of legacy systems.
When people want to replace an existing system, they often start calling it legacy. Legacy systems are a staple of the IT industry. Even the latest version of Windows is based on Windows NT from 1993. If you prefer Apple, your product runs on an even older system — BSD Unix. As long as you stay on the latest version, no one will say that you are running on a legacy system. We need a definition of legacy that is not about age.
— Glen B. Alleman (@galleman) May 5, 2016
People have different definitions of legacy systems and software:
- Woody Zuill defined it as “any code that is in use“. A definition so generic that it has little value for decision making.
- Some will say that it is legacy when the cost of maintenance is higher than the potential for improvement. By that definition software with high technical debt can be legacy even before it is first used.
- Others will say that it is legacy if it is based on outdated or end-of-lifed technology. Supporting technology is long-lived. Windows XP has been EOLed. Windows NT keeps being updated. VAX VMS is not there any longer. Open VMS lives on. Naming something as legacy based on “old platform” is often due to a lack of information.
- Another way to define legacy is based on life-cycle decisions. The moment a decision has been made to replace an existing system, it becomes legacy.
It should be clear that legacy systems are not about technical considerations. It is about how well the existing system meets and is able to adapt to business needs. Once a decision has been made to switch, that’s when we should start calling a system legacy.