This gist contains a summary of the experiments around initialization of proxy contracts, comparing the current approach with new ones we have been working on. We used a sample ERC20 and an ERC721 contracts for testing. Most of these tests can be found in the labs repo. Credit for most approaches listed here goes to @frangio.
Initializer functions is the current approach used for zOS. All contracts must be modified to have an initializer
function, which is invoked right after creating the proxy. It must also be decorated with an isInitializer
modifier to ensure it can be called only once.
Note that this modification, while is currently done manually, could be automated by using a tool.