Code Sustainment – Concept

Written by

in

,

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.

GenerationStackGap driverLesson
1 (1959–)COBOLPeople only — compiler and mainframe still healthyPure demographic cliff; you can’t train out of it
2 (1991–)PowerBuilder / DelphiProduct + People — vendor transfer saved PowerBuilder, not DelphiVendor transfer can rescue a product
3 (1998–)VB6All three at once — IDE dead 18 yrs, people gone, runtime ends ~2030The most advanced gap in the set
4 (1996–2020)Flash / ActionScriptTotal collapse — runtime actively removedWhen environment loss is removal, there’s no sustainment — only migration
5 (2000s–)Java / .NET / JSVersion churn — today’s stack is tomorrow’s legacyThe gap is being created now in real time

Seven sustainment principles

  1. Separate and track the three axes independently — “the code runs” ≠ “the toolchain works” ≠ “someone understands it”
  2. Never let the toolchain be the single point of failure — prefer multiple independent compilers (COBOL has three; VB6 has one, unsupported)
  3. Treat source as the asset, not the binary — but source without a working toolchain is an archive, not a codebase
  4. Plan migration before the gap, not after — the window for cheap migration closes when the toolchain or people go
  5. Prefer incremental over big-bang migration — the pattern works across every successful case (COBOL→Java, PowerBuilder→C#, Delphi→web)
  6. Capture business logic before the people leave — code without people who understand it is archaeology, not engineering
  7. Design the next stack for its own sustainment — whatever you migrate to will enter its own gap in 20–30 years

Comments

Leave a Reply