Lead developer Gavin Andresen chided the commercial bitcoin community for not getting involved enough in core bitcoin development and testing this week. In a mail to the bitcoin developers list updating the community on some bug fixes in the code, he called companies out for not giving back.
The mail started out serenely enough, as a general update on what the team has done to fix some immediate transaction malleability issues in the reference version of the bitcoin client software. But it had a sting in the tail:
“Testing and code review is, as always, the bottleneck for getting out a release with these changes. We have a chronic problem with people running bitcoin services on top of the core code waiting until there is an ‘official’ release, and then assuming that somebody else has done the hard work of reviewing and testing the changes.”
“YOU SHOULD NOT BE MAKING THAT ASSUMPTION!” he added, arguing that companies calling procedures in the bitcoin software might trigger some unlikely bug.
When a software engineer speaks in all-caps, you can tell that they’re frustrated.
A tough month
It’s been a tough month for the core development team. Mt Gox’s cessation of bitcoin withdrawals, which it blamed on a long-known flaw in a software component used by the bitcoin network, bought to light a range of problems associated with double spending.
While by no means fatal, they were irritating enough for the Bitcoin Foundation to address them in a public statement.
The latest missive highlighted some immediate work that had been done on the bitcoin wallet to change the way that it handled these issues.
They had been low priority, Andresen said, because they were “edge cases”, meaning that they wouldn’t happen in the normal course of operation.
They would only occur if users did unsupported things. In any case, he said, they were fixable using what he described as a “heavy-handed workaround”.
But software engineers generally like things to be nimble, and elegant, and so the team got to work on it. It resulted in three broad fixes, which would help to ‘de-confuse’ wallets that didn’t know whether their coins were spendable or not.
On of the fixed blocked one of the easiest ways to mutate transactions on the bitcoin network, and Andresen said that many big mining pools were already running this patch.
Time to give back?
But the community has to play ball, Andresen said, by helping to test the fixes out, rather than just running services on top of the latest version of the code and hoping that the team had fixed problems for them.
“Or, in other words: do not treat the core development team as if we were a commercial company that sold you a software library,” he wrote. “That is not how open source works; if you are making a profit using the software, you are expected to help develop, debug, test, and review it.”
BitPay, the payment processor that employed core developer Jeff Garzik last May, was quick to respond.
“Every serious bitcoin company should employ a core dev,” said CEO Tony Gallippi. “Jeff has been fantastic and continues to spend most of his time working on bitcoind and the bitcoin core, and much of the upstream developments that BitPay needs to succeed.”
Peter Gray, co-founder of Canadian company Coinkite, which makes an online wallet to support its bitcoin debit card and POS system, explained that his firm uses its own implementation of the bitcoin protocol in custom-built software, and doesn’t rely on the core bitcoin RPC interface that Andresen describes.
Nevertheless, Gray believes Andresen has a point:
“I do think that Gavin is right to complain about these companies which rely so heavily on open source and don’t contribute back,” he said. “My hope is those same companies are supporting the Bitcoin Foundation financially, and the Foundation, in turn should be funding full time programers and testers.”
Should the Bitcoin Foundation be partly responsible to help ensure the health of the core protocol and reference clients, by encouraging input from industry? The Foundation didn’t return CoinDesk’s request for comment, but Garzik did.
“The Bitcoin Foundation itself is somewhat limited by community ethos. Few people want to centralize a large number of key engineers at the Bitcoin Foundation, which then comes into accusations of ‘controlling bitcoin’ rather than simply being one-of-several bitcoin advocacy organizations,” he said.
Wendell Davis, the founder of Mac OS X-based wallet Hive, admitted that his company hasn’t contributed to the bitcoin source tree:
“Gavin is completely correct of course; they are not a vendor and should not be expected to deliver like a vendor.”
He continued to liken bitcoin to Linux. If Red Hat – which profits from the open-source operating system – didn’t contribute both QA and source improvements, Linux would be far less secure, and more buggy.
“That said, speaking from the perspective of a very small company like Hive (which by the way uses bitcoinj rather than bitcoind, which Gavin is responsible for), it is usually a non-trivial matter to thoroughly go about this kind of work, when you already have your hands full enough at your own ‘layer’,” argued Davis.
Perhaps that’s the problem – bitcoin is a startup currency, in the early stages of disrupting an entire economic model. Lots of people are busy trying to build out its commercial infrastructure.
The question is, how many of them have the time or the funding to support the core technical one? And what happens if the pressure continues to fall upon a small cadre of hard-working, largely unpaid developers?