Description
I’m organising an in person course on how to contribute to Bitcoin Core. The next edition will take place on Tuesday October 10th, which is right before the Bitcoin Amsterdam conference. We’ll most likely do it in Utrecht (very close to the train station, just 30 minutes from Amsterdam, and you’ll get a quick sight-seeing tour during lunch), but maybe in Amsterdam. Let me know if you have strong preference.
What You’ll Learn
This course focusses on the mechanics of Bitcoin Core development and code review, but not much on the details of the software itself.
You will learn how to make a useful pull request and how to (re)organize your commits for ease of review. Working on Bitcoin Core requires tremendous patience, while other developers break things from under you. This is known as rebase hell, and I’ll teach you how to (maybe) survive that.
You’ll also learn how to review someone else’s pull request and give useful feedback. We use actual examples of changes, so you’ll encounter real code and learn what it does.
About Me
I’m a
software developer based in Utrecht, The Netherlands. I’ve been working in the Bitcoin industry since 2014 and became a Bitcoin Core contributor in 2017, giving me a front row seat to all the latest and most exciting technical developments. I’m a co-host on the
Bitcoin Magazine podcast
Bitcoin, Explained and wrote a book titled
Bitcoin: A Work in Progress.
The Program
We’ll start around 9:30 and should be ready for drinks by 17:30. There’ll be plenty of breaks and time for lunch. You can optionally join me for dinner after, no reservation required.
A rough outline of the program (subject to change):
- Introduction and overview
-
A trivial pull request: the basics of changing the code on your machine and opening a pull request. You’ll also check out and test the work of a classmate in your role as reviewer.
- Fixing a real bug: I’ll explain a (more or less) real bug from the past and guide you through fixing it.
- Rebase hell (light): months go by and your bug fix is still not merged, now there’s a conflict and I’ll help you rebase. We’re also going to clean up your commits.
- Code review: I’ve prepared an alternative fix for the issue (or a different issue, tbd) which you will study and leave feedback on
- Bonus: if we have enough time, we’ll pick a fresh pull request and review it together
There should be plenty of time for Q&A along the way.
This Is Probably Not For
If you have no programming experience and/or deeply fear the command line. It’s very likely you’ll get stuck just setting up your system and dealing with all the confusing error messages an experienced programmer barely even notices. This would slow the class down too much.
There will be a quick test after the checkout page. If you’re unable to complete it with just a few Google searches, this course is not for you … yet! (you’ll get a refund)
What You Won’t Learn
The course and its examples only provide a glimpse of the vast Bitcoin Core codebase and is not a full guided tour. For the latter the Chaincode Labs
bitcoin protocol development curriculum is a good place to start. The course will not explain how Bitcoin works, other than what’s important to understand the example pull requests.
Secrets: Bitcoin Core is not an
MLM. You don’t have to buy “education” to be able to contribute.
Can’t I Learn This For Free?
Yes, and more! See for example the
Summer of Bitcoin. But if you like my help and prefer in person learning, this is your opportunity.
Requirements
Programming experience. Knowledge of C++ is not really required, but it will make the example pull requests a bit easier. You will be given a very simple coding exercise after checkout. It should take you less than five minutes and you have 48 hours to submit your answer(s). After that I may release the spot to another candidate and issue you a full refund.
Some experience with Git and Github helps, but I’ll give you all the incantations.
Some knowledge of how Bitcoin works. You should have used Bitcoin Core at least once in your life, to send and receive a (testnet) transaction.
You should have a laptop running either Linux or macOS. Unless you have experience compiling software on Windows, it’s not worth the pain and I can’t help you. Consider running a virtual machine with Linux.
Included
A day of learning.
Learning materials, printed and digital.
One physical copy of my book Bitcoin: A Work in Progress worth €27. I’ll even sign it if you behave 🙂
Coffee, tea and water.
Borrel! (aka drinks, hopefully on a rooftop)
Not included in the price (probably): lunch and dinner (plenty of options nearby)
You’ll get 1 free BTC! (on Signet)
Required Homework
Please take your time for this homework. It might take almost no time if all goes well, or it might take you a long time to figure out what’s wrong on your system. That’s not something you want to waste time on during the course day.
If you’re stuck, you can use Stack Overflow or get in touch with me. Waiting for answers takes time, so do you homework early. Really.
2. Launch src/qt/bitcoin-qt (the graphical client) with the -signet option
3. Sync the Signet blockchain (it’s small)
4. Create a new wallet and then generate a taproot address (tb1p…)
5. Send me the address
6. Watch 1 BTC appear in your wallet, profit!
7. Run the Python functional test suite
Optional Homework
Install Visual Studio Code (or your own favorite code editor)
Install Github Desktop (or your favorite Git powertool)
Make a PGP key, so you can sign commits.
Bring
Your Linux or macOS laptop.
Snacks (if you tend to get cranky before lunch, like I do)
Payment and other terms
With Bitcoin of course, either on chain or via lightning. Price includes 21% Dutch VAT. I can provide a more detailed invoice if needed.
No refunds, unless you stubbornly signed up as a non developer and failed the test, consumer rights say otherwise, or you’re a billionaire bully capable of suing me under English law. Just keep in mind that renting a venue is not cheap.
Future Dates
Can’t make it this time? I’ll announce future courses (if any) on my regular weekly mailinglist. You can also sign up specifically for these announcements: