Applications deployed on EOSIO-based blockchains are upgradeable. This means you can deploy code fix, add features, and change the application’s logic, as long as sufficient authority is provided. As a developer, you can iterate your application without the risk of being locked-in to a software bug permanently. It is also possible, however, to deploy smart contracts that cannot be modified on a EOSIO-based blockchain. These decisions are at the discretion of developers rather than restricted by the protocol.