Some advice for everybody at this point in time

By January 18, 2016Bitcoin Business
Click here to view original web page at www.reddit.com

Hi all. I'm taking the liberty to share some hard-won experience at this point in time.

Some advice for Core and supporters

It's easy to feel resentment at this stage, having done so much work and written so much high-quality code, and yet getting a shitstorm for it. When I was leading the Swedish Pirate Party into the European Parliament, I was gradually getting used to getting a barrage of criticism grenades for everything I did and didn't do every single day, starting with when I did or didn't get out of bed in the morning.

It's very hard to explain what this does to your psyche to somebody who hasn't experienced it. Imagine everybody was out to get you, every single day, and giving you high-pitched screaming blame for everything from an orange being round to some Mongolian guy's utter misinterpretation of what you said three years ago.

I'm not exaggerating when I say that people could probably snap and go restraining-shirt-insane for much less.

But the crucial thing when you're in a leadership position like that, getting criticism for absolutely everything, is to maintain your ability to sort the relevant criticism apart from the back seat drivers who make a living out of complaining but not contributing. You've also got to trust your inner compass of the vision you want to accomplish.

From what I can tell, Core has made the common but crucial mistake of isolating itself from the community and taking on an expert attitude toward everybody else in trusting this inner vision compass over external criticism, where Core is somehow right by definition - the development happens as Core wants it, period. This is very dangerous in any open-source / free software project. Other people are just as intelligent and may have considerable experience and ability to evaluate the claims made, and these should - no, must - be taken seriously.

To illustrate just one point, let's take a look at Core's scaling solution here, Segregated Witness.

When I apply my nontrivial experience in coding and systems design - I started coding 37 years ago - I see these two options for scaling bitcoin near-term:

OPTION ONE - Change the blocksize upper limit to two megabytes. One line of code for the constant, about ten LOCs for activation trigger logic. Requires upgrading of a majority server software.

OPTION TWO - Introduce Segwit. About 500 lines of new code, of which at least 100 in the hypersensitive consensus code. Requires upgrading a majority of server software and all client/wallet software and client/wallet hardware, especially those needing to pay money to an arbitrary address (as Segwit introduces a new type of address).

When proponents of Core's scaling tell me that Option Two here is the better because it's safer, and I try to comprehend that statement, I am either utterly insane or the statement is the equivalent of "black is white and up is down". It's just not completely counter to all experience in software engineering risk management, it's so far out it doesn't reflect sunlight anymore.

When I try to understand more and challenge the assertion that option two is safer - on what I must say are very good grounds - I'm told that I should be leaving design to the experts and that I don't understand enough of the complex machine that is bitcoin. I know I am capable of learning complexities, but I am firmly told off from even trying.

That's just not how you succeed in maintaining a community. That's not how you make people want to run your code.

Of course, people are free to run whatever code they like. But the checks and balances in an open source community is simple: if the leadership for a project builds something different from what people want to run, they will run something else. It's therefore in the interest of the leadership to listen to the community to understand what software a majority wants to run. These competing interests provide the checks and balances.

Now, I understand the complexity of block transfer times through the Chinese firewall and that preliminary tests indicate that a typical full node is saturated at a blocksize of 32 megabytes. However, none of these limits will be hit by this particular scaling. Also, when blazing a trail like this, you work one problem at a time, you solve one bottleneck at a time. People have been flagging for the necessity of increasing the blocksize for ... I don't have dates here at hand, but it should be the better part of a year if not more. Further down the road, scaling node throughput capacity can be done in a number of ways from GPUing ECDSA to specialized hardware, but it's not the imminent bottleneck.

When such an enormous amount of crucial data (on the need to raise the blocksize limit) is ignored, that is done at the peril of the project.

People in the bitcoin community are intelligent geeks, capable of inhaling absurd amounts of information and cross-referencing all of it. If you are unable to explain why your solution is better than another proposed solution, people will be utterly dissatisfied with the response "because we are the experts" - for you must assume that other people in the community, in the general case, are at least as intelligent and capable of learning as you are. It's even possible that if you can't explain your solution to an open and intelligent mind, it's not a good solution.

Some advice for Classic and supporters

So it appears the hard fork is happening. A lot of people have fought hard to raise the blocksize limit for a long time, using a variety of means, and it seems to be happening at long last.

Core didn't take the last available opportunity to include a blocksize limit lift in 0.12, but have announced the release candidate without that feature. So this is it, this is when the fork happens or doesn't happen. Right now, based on announced support, the fork appears to be moving forward. A lot of people supporting Classic are feeling a lot of relief, even if people know that this effort is not done until the blocksize trigger has activated on the network. It's far from there at this point - there's not even deployed code. But everything seems to be going the right way.

It's important to reflect on how this is more than a discussion on features. This is an election of what people decide get to decide on the features, direction, quality, and vision moving forward. And as Satoshi declared, there's only one thing determining the outcome of the election: what code is producing the longest chain. That's how bitcoin's democracy works, right there.

This is not a selection of features. It's much bigger than that. It's an election of governance and stewardship into the future.

As in most elections, there has been a lot of animosity - in both directions. As heels have been dug in, ditches turned to trenches, and preferences turned into prestige, people are starting to call out each other and accuse the other side of not working for what's best for bitcoin, and actively naming specific names in negative contexts.

When those in power do this to you, you're feeling everything in the book between resentment, belittling, and outrage. It's easy to do the same thing back. There have even been suggestions that Core is deliberately sabotaging bitcoin to the benefit of ... a selection of actors.

This creates a toxic culture leading up to the election point, where people are afraid to take bitcoin-positive initiatives in anticipation of all the negative attention that follows - for in such an environment, practically all attention will be negative.

It doesn't help that people incumbent in positions of power tend to "do what they must, because they can" in order to safeguard the status quo, however small or insignificant that incumbency is - this includes everything from Theymos' deletion of discussions, via the silly DDoS attacks on XT nodes, to LukeJR's poison pull request to Classic about killing all miner hardware investment. Actions such as these are not really excusable, but they are still human: people tend to do the very human mistake of letting the ends justify the means, with the ends being what they believe is best for the bitcoin network.

Of course, other people disagree of what's best for the bitcoin network, and toxicity follows until the conflict is resolved. And beyond. The toxicity will remain until actively removed by leadership.

It is the responsibility of the winner in any rift to end a toxic animosity culture of hostilities and personal adversarialism. I cannot stress this enough.

History is full of examples where the winners refused to live alongside the losers and rebuild the world together once the conflict was resolved. It never ends well. On the other hand, where the opposite has been true - South Africa's end of segregation with Mandela as president comes to mind as a good example of leadership here - people learn to put animosity behind them.

A lot of people who have submitted code to Core (and previously) are skilled coders, after all, working from their vision. This vision doesn't have to be incompatible with Classic's vision in the slightest - it may just be a matter of slightly different feature priorities, with people intending to get everything in there anyway.

(I'd also therefore like to praise Jonathan Toomim for not engaging in the rifting but focusing on solving the problem to most people's acceptance. Real MVP right there.)

Finally, some personal reflections

Unfortunately, I believe bitcoin development has lost touch with large-scale rollout necessities over the past year or so. At the moment, there are three use cases which all new features should seek to improve:

Remittance. The act of sending money between individuals in different countries.

Drop-in credit card replacement, from the perspectives of both the payer and the merchant (two different use cases). This means that a payment must be instant, easy, and much cheaper than a credit card settlement.

These three use cases must be front left, right, and center when doing any design on the bitcoin network, as far as I'm concerned. They also reinforce each other when funds received by remittance don't have to go via fiat to be used for purchasing something.

If there's no profit to be made in using bitcoin as a drop-in replacement for credit card payments, bitcoin will not be deployed at scale. Deployment and outcompeting legacy systems depend entirely on merchant financial gains from rollout. The story begins and ends with this observation.

That's why I'm concerned when I'm looking at the features of 0.12. I don't see any features targeting one of these three use cases. Fact is, I see at least one feature severely degrading the drop-in capability of credit card replacement - RBF - and the lack of scaling severely jeopardizing, not to say ultimately removing, the profitability in replacing credit cards.

What I see is instead engineering for the sake of engineering. The question of "who's the customer?" seems to have gotten lost in the process. While it's arguable that there's no customer as such in an open source project, there's nevertheless an importance in understanding where the front bowling pins are for a disruptive technology like this - and it's certainly not in the one-time initialization time of starting up a new node. I'd argue that the front bowling pins instead are the three use cases I listed above, and would love to see a stronger focus on tangible use cases moving forward even if people disagree with my choice of cases.

Onward and upward. Bitcoin will recover and move on. Let's learn from this experience.

It’s easy to feel resentment at this stage, having done so much work and written so much high-quality code, and yet getting a shitstorm for it. When I was leading the Swedish Pirate Party into the European Parliament, I was gradually getting used to getting a barrage of criticism grenades for everything I did and didn’t do every single day, starting with when I did or didn’t get out of bed in the morning.

It’s very hard to explain what this does to your psyche to somebody who hasn’t experienced it. Imagine everybody was out to get you, every single day, and giving you high-pitched screaming blame for everything from an orange being round to some Mongolian guy’s utter misinterpretation of what you said three years ago.

I’m not exaggerating when I say that people could probably snap and go restraining-shirt-insane for much less.

But the crucial thing when you’re in a leadership position like that, getting criticism for absolutely everything, is to maintain your ability to sort the relevant criticism apart from the back seat drivers who make a living out of complaining but not contributing. You’ve also got to trust your inner compass of the vision you want to accomplish.

From what I can tell, Core has made the common but crucial mistake of isolating itself from the community and taking on an expert attitude toward everybody else in trusting this inner vision compass over external criticism, where Core is somehow right by definition – the development happens as Core wants it, period. This is very dangerous in any open-source / free software project. Other people are just as intelligent and may have considerable experience and ability to […]

Leave a Reply

All Today's Crypto News In One Place