<oembed><type>rich</type><version>1.0</version><author_name>npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_name><author_url>https://nostr.ae/npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-12-09&#xA;📝 Original message:On Wed, Dec 9, 2015 at 4:44 AM, Ryan Butler &lt;rryananizer at gmail.com&gt; wrote:&#xA;&gt;&gt;I agree, but nothing I have advocated creates significant technical&#xA;&gt;&gt;debt. It is also a bad engineering practice to combine functional&#xA;&gt;&gt;changes (especially ones with poorly understood system wide&#xA;&gt;&gt;consequences and low user autonomy) with structural tidying.&#xA;&gt;&#xA;&gt; I don&#39;t think I would classify placing things in consensus critical code&#xA;&gt; when it doesn&#39;t need to be as &#34;structural tidying&#34;.  Gavin said &#34;pile on&#34;&#xA;&gt; which you took as implying &#34;a lot&#34;, he can correct me, but I believe he&#xA;&gt; meant &#34;add to&#34;.&#xA;&#xA;Nothing being discussed would move something from consensus critical&#xA;code to not consensus critical.&#xA;&#xA;What was being discussed was the location of the witness commitment;&#xA;which is consensus critical regardless of where it is placed. Should&#xA;it be placed in an available location which is compatible with the&#xA;existing network, or should the block hashing data structure&#xA;immediately be changed in an incompatible way to accommodate it in&#xA;order to satisfy an ascetic sense of purity and to make fraud proofs&#xA;somewhat smaller?&#xA;&#xA;I argue that the size difference in the fraud proofs is not&#xA;interesting, the disruption to the network in an incompatible upgrade&#xA;is interesting; and that if it really were desirable reorganization to&#xA;move the commitment point could be done as part of a separate change&#xA;that changes only the location of things (and/or other trivial&#xA;adjustments); and that proceeding int this fashion would minimize&#xA;disruption and risk... by making the incompatible changes that will&#xA;force network wide software updates be as small and as simple as&#xA;possible.&#xA;&#xA;&gt;&gt; (especially ones with poorly understood system wide consequences and low&#xA;&gt;&gt; user autonomy)&#xA;&gt;&#xA;&gt; This implies there you have no confidence in the unit tests and functional&#xA;&gt; testing around Bitcoin and should not be a reason to avoid refactoring.&#xA;&gt; It&#39;s more a reason to increase testing so that you will have confidence when&#xA;&gt; you refactor.&#xA;&#xA;I am speaking from our engineering experience in a  public,&#xA;world-wide, multi-vendor, multi-version, inter-operable, distributed&#xA;system which is constantly changing and in production contains private&#xA;code, unknown and assorted hardware, mixtures of versions, unreliable&#xA;networks, undisclosed usage patterns, and more sources of complex&#xA;behavior than can be counted-- including complex economic incentives&#xA;and malicious participants.&#xA;&#xA;Even if we knew the complete spectrum of possible states for the&#xA;system the combinatioric explosion makes complete testing infeasible.&#xA;&#xA;Though testing is essential one cannot &#34;unit test&#34; away all the risks&#xA;related to deploying a new behavior in the network.</html></oembed>