We have less than two weeks to come to a widespread consensus on a decision on whether or not to adopt a hard fork.
If we fail to come to a wide-enough consensus, then either a sizable portion of the community will be disenfranchised and forced against their will to follow the rest of the community (in forking, or in not forking), or our community will split into two communities, with each running their preferred fork of the protocol. The fork with the most adoption will likely be called “Ethereum”. The other will need to find a new name.
Each of these outcomes can come at a significant cost to community cohesion, and might impair our ability to engage the decentralized governance problems we will have in the future.
I really don’t want anyone in the Ethereum community to feel bitter, disenfranchised, coerced, silenced, or ignored. We can minimize the divisiveness of this necessary, controversial public debate by being courteous. By listening to each other’s points of view, by being generous with our interpretations of each other’s positions, and by not being defensive, paranoid, or condescending in our responses. I hope we set an example of good etiquette in decentralized governance.
Where I am
I initially became a fan of protocol hard forks a long time ago, when I realized that they are a necessary part of the blockchain technology upgrade path. Immediately after learning about the spectacular DAO theft, I realized that even forks that directly tamper with the state of applications on Ethereum can be completely justifiable.
I had been investigating how decentralization technology can go very badly for almost a year. I paid some attention to the potential consequences of unintended behaviour of software, but most of my concern was about unethical (oftentimes downright evil) applications that run exactly as intended. I spent time imagining how we can mitigate the damage caused by unethical autonomous software through social norms, network effects, and “counterattack” efforts by decentralized applications and organizations. It never struck me, however, to question the autonomy of the software.
Creating a scalable platform for autonomous software has been a life goal of mine for over two years. I still very much believe that the autonomy of this technology is paramount to its success as a public platform (and more broadly to our survival as a species, but lets not argue about this here). However, I now have a more detailed understanding about the quality of autonomy that I believe is necessary. It is both possible and critically important that the Ethereum protocol and platform be autonomous of any legal or regulatory system from any jurisdiction(s). On the other hand, it isn’t possible or necessary for the Ethereum protocol and platform to be independent of the Ethereum community.
The Ethereum Social Contract
The Ethereum community has an implicit, constantly evolving social contract that describes which changes to the Ethereum protocol and platform it would consider adopting. Hard forks that are technical in nature (e.g. forks that improve the security, usability, or scalability of Ethereum) appear to be uncontroversial (at least for now). Hard forks that reverse damage caused by the unintended behaviour of distributed applications (when those damages are large and/or externalized enough) are now being tested for the first time.
This social contract determines the nature of the autonomy of the protocol, the platform, and of its smart contracts. If the social contract insists that the protocol can’t be upgraded, then it is effectively completely autonomous (but it can’t be upgraded). If the social consensus is that smart contracts should never have their execution interrupted or tampered with, then they are effectively autonomous (but the community then can’t prevent or reverse damage caused by the smart contracts). If the social contract is to insist that the protocol won’t ever be forked for the sake of being compliant with the legal frameworks of any jurisdiction, then these kinds of hard forks can’t happen.
It is paramount that the social governance process, rules, or principles that govern hard forks do not become institutionalized. The community must not be bound by precedents (or lack thereof), it must not be bound by miner voting, it must not be bound by coin voting (although these may be useful for signaling), it must not be bound by the will of its leaders, and it must not be bound to any other kind of majority rule. While it may streamline governance, any insistence on strict adherence to processes, rules, or principles places the Ethereum community in a position where it can be compelled to make bad choices, to be unable to make good choices, and more generally puts the platform at risk of being gamed by motivated parties.
If we place community cohesion above all of our other values, however, then in the long run it will be impossible to prevent a majority from controlling the protocol in a way that runs against our core values. If we place our values ahead of community cohesion, then when there’s an attempted majority takeover, or an irreconcilable difference in values between subsections of our community becomes evident, then the community will split and maintain separate blockchains.
The Ethereum community has a short time to come to consensus on whether or not to hard fork the protocol to fix the DAO. If we do not reach consensus on time, then either large portions of the community will be disenfranchised by a decision that flows against their core values, or the community will split and maintain two blockchains. If we do reach consensus, then we will have witnessed an example of successful decentralized governance.
In any case, we will be making cryptocurrency history.