Most of the contracts in ZNS (except ZNSAccessController) are upgradeable UUPS Proxies. This entails certain limitations, so please consider the following:
We decided to go with upgradeable pattern for ZNS to ensure we are able to fix any potential problems that may arise in the system with usage. We also wanted to have an ability to evolve system over time with the help of user feedback and possibly add features that our users might find necessary.
Upgradability of contracts will be managed by the ZERO DAO, which will directly control all aspects of ZNS over time. This control will start with a ZERO 6 of 12 multisig, and slowly evolve into a full-fledged DAO that will more gain control as the system logic finalizes.
All upgradeable proxies are of UUPS kind. One of the main reasons to use UUPS is to introduce a means of removing upgradability in time, after the system is fully finalized and time-tested as to bug-free.
As ZERO is an open-source platform, all smart contract changes coming with proxy upgrades will be public and available for anyone to see and analyze. In addition to that, any significant logic changes to existing contracts or addition of new contracts will be audited before they are deployed to Ethereum mainnet. When the DAO is fully functional, only the DAO will be able to approve a mainnet contract upgrade.