Why is the code not included in proposed protocol amendments?
- Telos Telos
I think it's great that protocol amendments to Telos are spelled out in plain English so that non-technical community members are able to understand and vote on them, but why not take it a step further and include the actual code as well?
As I understand it, proposed amendments to Tezos include the code, but are not accompanied with an easy to understand explanation of what the code does. I think it would be great to combine both together, so that not only do amendments make sense to the layman, but the entire process of upgrading the chain is executed in a trustless manner.
This would also remove accountability from a single group of developers and place it on the entire community. For if the upgrade were found the be faulty, the entire community would be held accountable for passing it, and would need to be more careful in the future or reconsider who they are delegating their vote to.
Also, the possibility exists that the core developers may not be available to write the code, or the amendment may not be implemented exactly as intentioned by the proposer.
Please let me know your thoughts.
This is a good question and a fairly deep one.
Let's start with the idea that code and the description of what that code will often, if not always, differ. Consider if a proposal includes both code and a description of the intent of that code--and it is later discovered that these two are at odds in some way. Which one would take precedence, the code or the human language description of it? If they are at odds, then one must prevail. But which?
So one reason to have either the code or the text be voted upon is that it removes the possibility of needing to debate after passage, which one was passed. With the Tezos system, there are, of course, explanations of the intention of the code, but it is the code, itself that will be adopted. On Telos, there may very well be code associated with the text. For example, right now we have three Telos Amend proposals that address the voting thresholds needed to pass a Telos Works proposal. These will actually require no new code because when the last code was updated for this, the Telos Core Developers (TCD) made the code configurable so that a single transaction by the block producers can change the threshold amounts. Of course, other times there were significant amounts of new code needed to integrate certain features such as in the case of the Telos Economic Development Plan (TED Plan).
So the biggest reason why people must vote on either the code or the text is a case of priority. What takes precedence if something conflicts between the two.
Another reason to not always propose exact code with Telos Amend proposals is that anyone should be able to propose an amendment. If code must be proposed along with it, it limits the participation in governance. Further, writing and testing code can be very time consuming and costly, given the high level of expertise required. With limited developer resources, creating all of this code ahead of passage is a waste of efforts. Imagine if several groups have competing ideas about how to modify the chain to perform better...if each needs to have code to go with their text, that limits the participation of groups that may have good ideas but not access to coding skills. Also, four pieces of code would have to be written, tested, and audited. (Otherwise, what if code passes and, upon testing is discovered to have errors? Would there need to be a new test?) This would slow down the velocity of development and create increased work which limits the ability of the chain to rapidly evolve. And rapid evolution is a key trait that leads to success. Finally, requiring code to go with any text means that developers have a critical place in governance. Imagine if there was a governance change that reduced the amount of pay that developers could receive from Telos somehow...what developer would write the code that would go along with that proposal? Probably few would be interested. In other words, the needs of developers would be overbalanced in the growth of the chain compared to other user groups.
There's no rule that says that possible code cannot be included along with proposed text. Each proposal will be different in their ultimate needs. By making text paramount, Telos keeps its governance acceptable to any user to understand or propose. It preserves development resources, and it allows swift evolution that is not tilted towards the needs of developers over other user groups.
It is quite common in more traditional governance for laws to be passed and have the bureaucracies follow up with how exactly those laws will be enacted. That's a common pattern of governance, in fact. On Telos this means that amendments that are passed are then turned into code, tested and audited (generally) to ensure they fit the purpose the voters set, and then enacted by the block producers.