Very good article by Gordon Brander on (indirectly) protocol design: 

Don't fork the ecosystem
Software can be rebuilt, because software is a machine. But a software ecosystem is not a machine. It is a living system.