This blog post was prompted by a conversation I was having with Kristov Atlas on Twitter. I started writing a response for Twitter, but quickly realized it wasn’t the right medium. So I’m posting here instead. This isn’t necessarily a direct response to him, but was inspired by his comments. See the thread starting here for context.
It’s definitely frustrating to spend time on something only to have the intended audience reject it. Hopefully we can turn such failures into a learning experience so we can increase the odds of acceptance the next time around.
Here’s how I see it:
A company’s contribution to Bitcoin doesn’t have to be hiring a coder. It could be sponsoring a development fund, or doing research, testing, documentation, etc. Of course if a company contributes code it should be something that enough people want that it will likely get accepted. Yes, it’s risky if it’s uncertain that the contribution will be accepted. It’s also risky for a company to develop a product that the market might not want. So do what’s necessary to minimize the risk, or don’t do anything at all (more on why Bitcoin companies shouldn’t “do nothing” later).
Bitcoin is an interesting challenge because it relies on consensus. If your contribution changes consensus, yes it will be held to much higher scrutiny. These kinds of changes are inherently risky to invest in without an extremely high level of buy-in. If your business wants/ needs consensus changes, then you either need to do the legwork to get buy-in from the necessary stakeholders, or else change your business (or find a workaround).
Getting buy-in for a contribution to Bitcoin requires an initial investment even before resources are invested into actually making the contribution. This initial investment could be bigger or smaller depending on how significant the change is and how many stakeholders need convincing. In the end, maybe it doesn’t pan out, and you have to go back to the drawing board.
This process is similar to the exploratory phase of starting a new business, creating a new product, or entering a new market. You can try to minimize the exploration costs, sure, but it’s still a necessary cost of doing business – or else you stagnate. Nothing gets done, and you don’t get anywhere. Not every exploration will pay off. But some will, and that’s when you make your ROI. Ideally, your ROI is greater than all of your costs. That’s when you profit.
I’m not suggesting that well-funded Bitcoin businesses throw their money away on ideas that will almost certainly get rejected. Rather, I would encourage these businesses to make smart, well-planned contributions to Bitcoin that are both beneficial to their business and something that stakeholders are likely to accept. If your business wants to make a consensus change, recognize that this is a change that affects everyone in a multi-billion dollar economy. Treat the change as if billions of dollars are on the line – because they are.
Maybe you can’t afford to make all the upfront investment to get buy-in and code a change yourself. So get other businesses and investors to pool resources with you to get it done. If it’s an important enough change that is needed by enough people, you will find the resources you need. Then code the change, deploy it on a test network, and test it. Test it some more. Give it to others to test. Run simulations that mirror the conditions of the main network as closely possible. Attack the change from every angle. If flaws are revealed, fix them.
Once the change is robust and is shown to both fix the target problem and not introduce new problems (at least none that could jeopardize the chances of acceptance), then reach out to stakeholders and let them know the results of your experiments. Show them a cost-benefit analysis of implementing the change. Ask them if they will commit to running the new code as long as there’s enough buy-in from others. Make the buy-in process as transparent as possible to stakeholders so they will have trust in the process and each other. This is essentially a kind of diplomacy, and is necessary for consensus changes or changes where you’re trying to get many parties to adopt the same standard (like SegWit, P2SH, or Payment Codes). If you’re not good at diplomacy, hire someone who is.
With all this work necessary to contribute to Bitcoin, why should Bitcoin companies even try? After all, they’ve got businesses to run, and any money spent investing into Bitcoin development is money they’re not spending on growing their businesses. Here’s the thing: Bitcoin businesses are able to exist because someone who came before invested in Bitcoin protocol development. Maybe it was time, or maybe it was money, but investments were made, BIPs and documentation were written, code was written and tested, and Bitcoin was built up to a usable state that businesses felt comfortable building on it. Maybe the decision to build on Bitcoin was correct, maybe not, but the decision was made and money was invested to create value for customers using the open-source Bitcoin protocol. Businesses that rely on the Bitcoin protocol would be smart to give back to the community that has given so much to them already.
If Bitcoin continues to improve – by becoming more user-friendly, by scaling to accommodate more transaction volume, by protecting the privacy and security of users – then more people will want and be able to use Bitcoin. All Bitcoin businesses benefit when there are more people using Bitcoin – a nice halo effect, a positive externality of contributions to Bitcoin. So Bitcoin businesses should make smart investments in protocol development not just because of altruism, or good will, or to make hodlers rich, but because it will ultimately allow them to keep growing and fulfill the promises made to employees and investors. The resources needed to keep Bitcoin growing have to come from somewhere, and well-funded Bitcoin businesses are in a good position and have all the right incentives to be major influencers and providers for core protocol development.
Note: I feel this way about all free software that businesses use. If your business is getting value out of free software, pay it forward. Create a budget with whatever you can afford to make contributions back to free software projects that your business relies on to do business. Even if it’s just a few hundred or few thousand dollars per project, if all businesses did this, it could add up to a lot and help make free software maintenance sustainable. If you don’t know how to contribute, just reach out to the maintainers and ask! They’ll probably have some ideas.