Here’s the framework in brief:
The three failure axes
Code dies along three independent clocks, each on its own schedule:
- Product loss — the vendor withdraws the compiler/IDE (commercial, abrupt)
- Platform or Environment loss — the target OS/runtime moves on (gradual, OS-driven)
- People loss — the cohort who understand it retire (demographic, irreversible)
The dangerous phase is desynchronisation: when the runtime still ships but the toolchain is gone and the maintainers have left. That’s exactly where VB6 sits — it runs but you can’t safely evolve it.
The generational pattern
Five generations show the same arc: build → mature → product loss → people loss → environment loss → sustainment gap → migrate or lose. Cycle time is roughly 20–30 years.
| Generation | Stack | Gap driver | Lesson |
|---|---|---|---|
| 1 (1959–) | COBOL | People only — compiler and mainframe still healthy | Pure demographic cliff; you can’t train out of it |
| 2 (1991–) | PowerBuilder / Delphi | Product + People — vendor transfer saved PowerBuilder, not Delphi | Vendor transfer can rescue a product |
| 3 (1998–) | VB6 | All three at once — IDE dead 18 yrs, people gone, runtime ends ~2030 | The most advanced gap in the set |
| 4 (1996–2020) | Flash / ActionScript | Total collapse — runtime actively removed | When environment loss is removal, there’s no sustainment — only migration |
| 5 (2000s–) | Java / .NET / JS | Version churn — today’s stack is tomorrow’s legacy | The gap is being created now in real time |
Seven sustainment principles
- Separate and track the three axes independently — “the code runs” ≠ “the toolchain works” ≠ “someone understands it”
- Never let the toolchain be the single point of failure — prefer multiple independent compilers (COBOL has three; VB6 has one, unsupported)
- Treat source as the asset, not the binary — but source without a working toolchain is an archive, not a codebase
- Plan migration before the gap, not after — the window for cheap migration closes when the toolchain or people go
- Prefer incremental over big-bang migration — the pattern works across every successful case (COBOL→Java, PowerBuilder→C#, Delphi→web)
- Capture business logic before the people leave — code without people who understand it is archaeology, not engineering
- Design the next stack for its own sustainment — whatever you migrate to will enter its own gap in 20–30 years
Leave a Reply