The alternative to a rewrite, when a rewrite is off the table
A note on Strangler Fig by Martin Fowler, published on martinfowler.com.
Everyone quotes the metaphor and skips the operational part, which is where the value is. The pattern is gradual displacement, build the new thing alongside the old, move one capability at a time, and let the legacy system shrink rather than get replaced in one move.
Two things in it repay attention. The first is the emphasis on finding seams: places where a system can be split without unpicking everything. Most legacy code has almost none, and locating them is the actual work, not the migration.
The second is the defence of transitional architecture, the adapters and shims that exist only while both systems are live and get deleted at the end. People resist writing code they know is temporary. Fowler argues the reduced risk and the earlier return are worth it, which reframes throwaway code as insurance rather than waste.
For plugin work this maps almost directly. You cannot take an install base offline, so displacement is the only honest strategy available, and the transitional layer is the thing that lets old and new installs coexist through a release cycle.
This is the thinking behind backward-compatible migrations against a live install base.