Say what you like about Google, but it isn't an easy place to get hired at. The entrance interviews are notoriously tough, and it is a highly desired employer - which makes Mike Hearn's departure all the more notable.
Hearn is an expert in low-level software development, who worked as a site reliability engineer at Google, and focused on account security and antispam. He has also been one of the leading lights in the bitcoin community, heading up the open source development team for bitcoinj, which is the Java implementation of the bitcoin protocol.
He is leaving in part because of his growing interest in and commitment to bitcoin. Hearn sees a challenge ahead for the virtual currency: the core development team is shrinking.
Honey, I shrunk the team
"The long tail has grown longer, but the heavy lifting and design work has been done by a handful of people. That's quite concerning," says Hearn, highlighting a few key players on the team. He uses the team's page on Github, the open source code repository on which Github is hosted, to see who's most heavily involved.
Gavin Andresen, the lead developer, is an obvious mainstay. Others include Philip Kaufmann, who does a lot of GUI development. Wladimir J. van der Laan also works on the front end.
"There are occasional fixes and things submitted by other people, but the bulk of the work is being done by Gavin and those guys," says Hearn. "I am a bit concerned by the fact that we don't have a lot of people turning up and doing really serious, useful work on the core."
But then, that's a general problem with open source projects. Most people are not paid, meaning that participation can be patchy, and burnout rates can be high. Andresen is paid a salary by the Bitcoin Foundation, and Jeff Garzik, another programmer who has been heavily involved with core development, is in his first year at crypto currency payment processor BitPay, which has allowed him to focus at least partly on the protocol.
Quality, not quantity
Garzik says that Hearn has long been worried about team size, but says it's overemphasized. And statistics on Github may not be the easiest way to assess what's happening.
Open source projects are a question of quality, not quantity, says Garzik. For example, some of the most important features for bitcoin develop over months, meaning that their activity won't show up in the Git data.
He gives Gregory Maxwell as an example. Maxwell has 'commit access' on Github, which enables him to push in code changes.
"In terms of code output, Greg has produced very little. A pull request here, a few lines change there," says Garzik. "Counting Greg's commits or lines-of-code authored would rank him far below most other contributors, but we value his contributions very highly."
Garzik has also been busy behind the scenes, he says, coding contributions outside the core bitcoin project.
But the fact still remains that bitcoin is going through a revolution. Engineers used to rule the bitcoin world, but since then, the money has moved in, and agendas have changed.
“The long tail has grown longer, but the heavy lifting and design work has been done by a handful of people. That's quite concerning.”
Barry Silbert, head of the Bitcoin Investment Trust, has predicted that we are entering the third phase of development, with venture capital companies piling in. Institutional investors on Wall Street won't be far behind, he has said. With hundreds of millions of dollars now piling into the bitcoin economy, can the current development approach keep up?
It would help if some of them gave something back, complains Garzik. "In general, I am disappointed at the large number of bitcoin companies that contribute nothing back to the original open source project, the software that runs the network we all use.
Last week, Gavin Andresen implied as much in a missive on the bitcoin mailing list, when he told companies using the bitcoin core not to treat the core development team "as if we were a commercial company that sold you a software library”.
Hearn agrees, and adds that companies can fall foul of technical changes if they don't stay actively involved in helping with core development.
"The fact that Gox was unaware of malleability entirely and then blamed the bitcoin software is perhaps a good example of a company that treated bitcoin as if it was a perfect black box, and became so disconnected they weren't even reading the mailing lists or release notes," he says.
In the meantime, Hearn says, enhanced payments are one of the main thrusts for bitcoin development. This added feature, destined for the bitcoin client software rather than the core protocol, have been on the table for a while, but haven't yet made it into a release. They promise an easier way to make payments than dealing with long addresses, and they will also include support for memos.
Some people have also been working on subscription billing in the payment protocol, he says - this feature is badly needed in bitcoin. There has been some initial design work on this, which he would like to see turned into working code.
Smart transaction fees are also high on the agenda. Transaction fees today are not dynamic enough, he says. Instead, they are based on a set of arbitrary rules set by a core development team. This needs to be changed, (and is).
Smart fees are an attempt to make the fees float, and to formalise some of the rules about when fees are paid, explains Hearn.
"It's not very dynamic today. It's just some magic numbers chosen by Gavin and so on. It's very inflexible. The bitcoin dollar price moves, but the fees don't. "And the second problem is that it's centralized, because they're just some magic numbers chosen by the developers, which is not very feasible in the long run."
This didn't make it into the latest version of the core protocol, however, which Hearn takes as another example of lag in a resource-constrained project, while the commercial bitcoin community powers ahead.
A new kind of wallet
There are other developments afoot in the bitcoin community, too. Hearn is busy implementing hierarchical deterministic (HD) wallets in bitcoinj.
Traditionally, bitcoin wallets are designed to generate completely random addresses, encrypting the private keys for the user. These addresses are impossible to remember, and so the bitcoin wallet must be backed up frequently. Each backup includes all of the key pairs.
Instead, HD wallets use a single random number (also known as the extended address, or the seed), which can be written down as a series of twelve words. The wallet can then use a standard algorithm to derive many public keys from the seed, in the form of a tree.
"The idea is that you can type in the same set of 12 words, and they will deliver the same sets of keys," says Hearn. "With HD wallets, you can give me an extended address, and I can use that to derive fresh addresses. You only have to give me one piece of data, but I can generate new addresses from it each time."
This carries several benefits, including the ability to share a wallet between different devices. The tree structure also allows the seed's owner to share some groups of addresses derived from the tree, but not others.
The HD wallet standard was finalized at the Bitcoin Conference last May, and Hearn hopes to have the bitcoinj integration completed in March. The mathematics are complete, he says. The tough part is integrating it into the bitcoinj software itself.
One of the challenges with HD wallets is privacy. Simply branching from an extended address means that anyone can iterate their way through all of the possible addresses in the tree, meaning that they could tell which payments had been made to or from any of them.
Hearn raises an alternative posited by Peter Todd, called stealth addresses. These allow you to distribute one address that can be used to generate new ones, but makes it impossible for people to make a connection between them.
"It's not really clear to me that this is going to work in its current form because it's not really compatible with lightweight wallets, at least in the form that it's been proposed" he says. However, it's still in the design stage, so this may change in the future.
Other developments include the use of the Tor network by default in bitcoinj. Traffic sent through Tor is encrypted most of the way. he would like to see this happen by the end of March, when he is back from his vacation.
When that vacation ends, Hearn has something else up his sleeve. He'll announce it shortly, and CoinDesk will be there to cover it.