There's a coming blog post that goes into it in details but, briefly speaking, there are few 8-cycle long (about 3 weeks) periods. First, a proposal period where protocols can be proposed and an approval voting procedure ranks them. Then, a voting period where the top rated proposal can be adopted. Then a testing period where the protocol is run as a testnet. Finally, there's a confirmation vote to promote the testnet to the mainnet.