I know tezos strongly believes in immutability but I would like to clear out some curiosity regarding upgradability of a contract.
If a function in a contract needs to be updated with it's logic , how can we do that?
If we want to add a new function in an already originated contract, Is it possible or do we need to deploy a whole new contract ?
How do we handle bugs if we get some issue in mainnet contract ? How are other product of tezos handling this ? Are there any example where a mainnet contract gets an issue and how was that issue handled?
Is there any concept like OpenZeppelin(tools for deploying upgradeable smart contracts in solidity) in tezos ?
Looking forward for the answers.