Last updated: 19 February 2020
I’m a Bitcoin Core contributor and protocol researcher. I also work on various other projects in the Bitcoin space. Here is what I have been working on and my future plans.

Overview

Bitcoin Core activity 2019-2020

  1. Among the top 10 contributors in commits and reviews since beginning to contribute in March 2019.
    $ git log --since=2019-03-15 --until=2020-02-03 --no-merges | grep '^Author' | sort | uniq -c | sort -nr | head -n 10
     1. 295  Author:  MarcoFalke
     2. 131  Author:  Hennadii Stepanov
     3. 126  Author:  fanquake
     4. 115  Author:  Andrew Chow
     5.  94  Author:  practicalswift
     6.  77  Author:  John Newbery
     7.  65  Author:  João Barbosa
     8.  59  Author:  Jon Atack
     9.  57  Author:  Pieter Wuille
    10.  49  Author:  Wladimir J. van der Laan
    
  2. #34 all-time of the Bitcoin Core contributors with 59 commits merged into Bitcoin Core and a primary focus on code review.
  3. Invited to join the Bitcoin and Bitcoin Core teams in November 2019 after 7 months of contributing.

What i have been working on

  1. Increasing the robustness of Bitcoin Core via code review, testing, bug discovery and fixes, and improvements in areas like:
  2. Co-maintaining and contributing to the Bitcoin Core PR Review Club with John Newbery, regularly hosting meetings, and creating and co-running the @BitcoinCorePRs twitter account.
  3. Participating in Schnorr/Taproot BIP review in November and December 2019.
  4. Publishing Bitcoin Core technical and social process information in jonatack/bitcoin-development, a resource which was relayed in a September 2019 article in Bitcoin Magazine.

Future work

  1. Continuing and deeper code review, notably of the difficult and important PRs. This is the most-needed work and bottleneck in Bitcoin Core development.
  2. Increasing Bitcoin Core's robustness: finding and fixing bugs and regressions, and adding missing test coverage and better testing in areas like the P2P network, fuzzing, and property-based testing.
  3. Working to strengthen Bitcoin Core's decentralization, censorship resistance, and privacy.
  4. Improving the Bitcoin Core wallet features and RPC/CLI/GUI interfaces.
  5. Investing in developer education via the Bitcoin Core PR Review Club and continued review/work for Bitcoin Optech.
  6. Continuing to publish Bitcoin Core technical and social process information in jonatack/bitcoin-development and here on this website.
  7. Longer term, if I can find a sustainable source of funding, possibly evolving to general maintainership.

Background

I began programming at age 9 in BASIC and assembly language. From age 14 to 18, I wrote several professional games in assembly for Atari and Commodore computers that were internationally published and widely known.

I studied Computer Science at Harvey Mudd College in Claremont, California (USA), Business Administration and French at Oregon State University, followed by an MBA at INSEAD in Fontainebleau, France. In addition to software engineering, I have 2 years of marketing brand management experience in mass consumer products at L'Oréal from their world headquarters in Paris. I speak English, French, and German.

Over the past decade I have been a freelance software engineer for large companies and an open source contributor (Ruby on Rails Top 100) and library author/maintainer, notably of Ransack, the leading Ruby search engine, but also of Kraken Ruby Client, an API client for the Kraken cryptocurrency exchange featured in the Kraken API documentation.

In March 2019, I started learning to contribute to Bitcoin Core, beginning with studying the repository and the social process and technical details of contributing to the project. I've been compiling and curating this knowledge at https://github.com/jonatack/bitcoin-development, which is frequently recommended to other developers like in this Bitcoin Magazine September 2019 article and is becoming an educational resource.

It became clear that what is most needed and useful, and paradoxically the least done by new contributors, is review and testing of PRs and issues. More than 350 pull requests and 750 issues are open at any given moment in Bitcoin Core waiting for experienced review and testing, and the amount continues to increase. The maintainers need help!

I quickly became an active reviewer and contributor to:

In early June 2019, thanks to John Newbery and Adam Jonas, I was invited to attend the Chaincode Labs summer residency Bitcoin seminars. I spent 2 weeks in the Chaincode Labs Manhattan office learning about Bitcoin and meeting core developers and the summer residents — an amazing experience.

Opening pull requests has not been a priority of mine. Yet, as a by-product of reviewing, finding issues, seeing what needs to be done, and understanding how to make contributions easy to review, I have had 59 commits merged into Bitcoin Core, more than any other new contributor in 2019. I am currently #34 of the Bitcoin Core all-time contributors and among the top 10 currently active contributors.

While reviewing Bitcoin Core pull requests, I have caught a fair number of bugs before they were merged and found and fixed a few regressions afterwards as well.


Future work in detail

I plan to prioritise my time to Bitcoin roughly as follows:

Robustness > Privacy > Features > Scaling > UI

Robustness and privacy/censorship resistance are therefore my highest priorities.

Goals

  1. Dedicating time to deep review of the important, critical PRs that often sit for months without enough review to be merged and have to go through multiple painful rebases, which blocks vital progress and demotivates experienced long-term contributors from working on Bitcoin Core.

    The number one bottleneck in Bitcoin Core is experienced review of difficult PRs. As Steve Lee of Square Crypto wrote to me recently: "If literally all a developer did was review hard but important PRs it'd be incredibly valuable."

    • The idea is to unblock these critical PRs not only by reviewing them, but also coordinating with the maintainers and other contributors to ensure timely review where it is most needed and difficult.
    • Reviewing also means continuing to find and fix regressions and bugs throughout Bitcoin Core to make it more robust.

  2. Increasing Bitcoin Core's robustness: finding and fixing regressions and bugs, and adding missing test coverage and better testing in areas like the peer-to-peer network, fuzzing, Valgrind, Undefined Behavior and Address Sanitation, and property-based testing which I would like to continue integrating into Bitcoin Core. Robustness can also mean working on codebase performance, modularity and multiprocess.
  3. Improving the Bitcoin Core wallet features and RPC/CLI/GUI interfaces.
  4. Strengthening Bitcoin Core's decentralization, censorship resistance and privacy by working on the peer-to-peer network privacy and resistance to surveillance and attacks: researching and proposing improvements, and collaborating with and testing work by fellow developers and researchers. Examples:
    • V2 P2P message protocol with opportunistic encryption (BIP 324, BIP 150) by Jonas Schnelli, which was the subject of a presentation I made at Chaincode Labs and a Bitcoin Core PR Review meeting I hosted with Bitcoin Core maintainer Jonas Schnelli.
    • Multiple P2P networks instead of just one.
    • Possibly different IP buckets per peer; each IP would have its own AddrMan table and would confer to ensure they don't have the same peer IPs, to avoid IP poisoning e.g. flooding by attacker peers.
    • Package Relay, separating block relay from transaction relay into 2 networks. Suhas Daftuar is working on this; it will need extensive review and improvements/counter-proposals.
    • Improve our p2p simulation/network testing frameworks to better understand the multi-order effects of proposed improvements.
    • A better framework for systematically thinking about privacy.
  5. Investing in developer education and awareness of code review via the Bitcoin Core PR Review Club, and possibly continued review or work with Bitcoin Optech:
  6. Continuing to publish Bitcoin Core technical and social process information in jonatack/bitcoin-development and here on this website.
  7. Longer term, if funding permits, possibly evolving towards a maintainer role in Bitcoin Core. It fits my profile, experience, and "humble service" open source perspective, there will always be a need, and it takes years to cultivate a maintainer in a project like this.
References

Don't hesitate to ask any of the following people about me, particularly John Newbery and the Bitcoin Core maintainers below:

  • John Newbery, Chaincode Labs and Bitcoin Optech
  • Wladimir van der Laan, Bitcoin Core maintainer
  • Jonas Schnelli, Bitcoin Core maintainer
  • Samuel Dobson (meshcollider), Bitcoin Core maintainer
  • Michael Ford (fanquake), Bitcoin Core maintainer
  • practicalswift, Bitcoin Core developer — endorsement :)
  • João Barbosa (promag), Bitcoin Core developer
  • Andrew Chow (achow101), Blockstream

Feel free to reach out for more details or to chat.

Best
Jon

Jon Atack
Bitcoin Core contributor and protocol researcher