how will we support software upgrades for peripheral programs?
The context was that they used a wrong version of FP program for creating and registering FP over Euphrates devnet. The registration failed. Then they changed to use the correct version, and somehow the FP in DB follows a different schema compared to the correct version, and they have to remove the existing FP and its keys and start over.
We might face similar issues in practice, e.g., after we ship a new major version of a peripheral program, e.g., FP, it might have breaking changes in DB, and we might need to define migration functions for these peripheral programs as well.
from the moment we will release stable Babylon version (probably last testnet, definitly mainnet) we will need to care about backwards compatibility ie. properly version dependencies, have a matrix of supproted versions, perform db migrations, properly update changelogs.
More practically, for db migrations we will start shiping migrations scripts.
Example how lnd ship db migrations: https://github.com/lightningnetwork/lnd/tree/747abb4a0eb0aa7c7a59f4c15475760143ce7ab6/channeldb/migration12