Hello, everyone! Penning down these words as we approach the end of the summer in 2023, I’ve just wrapped up my internship at Summer of Bitcoin. Undoubtedly, this experience ranks among the most wonderful things in recent times.
It involved lots of coding (ofc), meeting incredibly awesome people, and working with fantastic mentors. But what made it truly special was that, for the first time in my life, I did something that had a real impact on the world.
I think it’s essential for all of us to have a vision of the world we want to build, and I believe I might have just found mine. This is the future I’m building!
Here’s a basic overview of how the program looks from my perspective:
Applications and Screening:
The initial step involves completing the applications. If the program organizers consider you a suitable candidate, they will provide you with a test link. Based on your performance in this test, they will assess your problem-solving abilities. In 2023, the test comprised two data structures and algorithm problems.
Fortunately, when I applied, my competitive programming profile was quite strong, which led to the exclusion of this round in my evaluation. (If you have previously been a GSOC intern or have participated in any other well-known open-source program, it is highly probable that you will also be exempt from this round and proceed directly to the next stage.)
Learn Bitcoin Course:
This year, they tried something different and added a new phase in which candidates had to finish a fundamental Bitcoin learning course before moving on to the next round. I believe this is important as it gives you a basic understanding of what is Bitcoin, why it is important, and what you are enrolling into.
Proposals:
Selected candidates advance to the next level when they are presented with a list of organizations and projects. It is recommended that each participant make proposals for one or two of these projects. The website contains all of the technical information needed, but the one thing that troubled me the most was deciding which organization to choose.
My only advice to anyone who is perplexed by the same issue is to not limit yourself to the technology you are familiar with. Choose an organization whose projects and goals you most connect with and are most driven by. The proposal and program period will most likely be sufficient for learning about new technologies. I learned C++ for the first time in order to contribute to Bitcoin Core. Most of the other interns also learned new technologies in order to contribute. Personally, I found Bitcoin Core’s projects to be the most fascinating because they included networking and security. These are the areas I’ve long been intrigued by.
Once you’ve found some organizations that excite you the most, you should go on and try to complete their project’s Competency Tests. Completing a project’s competency test successfully indicates that you have everything the project requires and that with enough effort, you will be able to complete the project on time.
One thing I believe I did better than other students who gave proposals to Bitcoin Core was to be active in community conversations. I was helping other students in completing their competency tests and resolving their project-related questions.
Contributing to open-source is not about competition for me. Imagine it as an intellectual charity in which you try to help others with great kindness.
By the end of the proposal, you should have enough contributions (anything, PRs, blogs, community presence) to present your proposal. Again, the SoB website has all you need to know about writing a superb proposal. But the only advice I can give is to try to show your intent clearly, to show that you are not just motivated to contribute for the sake of Summer of Bitcoin or money, but that you genuinely align with the goals of the organization and intend to continue contributing to it even after the program ends.
Here’s my Proposal for Bitcoin Core: Summer of Bitcoin 2023 Proposal — Bitcoin Core
Project Period Kicks-Off:
Selected proposals are instructed to meet with their mentors to discuss their work and timeframe, and the project is started!
This concludes the pre-project time; now, let us discuss my project and what I contributed.
My Project:
The Bitcoin Core Wallet codebase had almost no Fuzz coverage to it (look). My job was to increase the Fuzz coverage over the wallet codebase by writing Fuzz Harness files for it.
If these terms confuse you, kindly have a look at my other blogs: Blog1, Blog2.
My Contributions:
My contributions to Bitcoin Core include 5 files, 4 PRs, 3 technical blogs, and one new introduction to the coding style of Bitcoin Core. One of my merged PRs indicated an increase in Fuzz coverage of over 98% for its file. I can’t tell how much more Fuzz coverage there is because most of the PRs have yet to be merged into the Core. But I’ll update the blog as soon as they are.
Here are some of my most valuable contributions:
- Coin Control PR merged, with Spend and Crypter PRs live and under review.
- Introduced the concept of Singleton Classes in the Bitcoin Core codebase. To the best of my knowledge, no one used Singleton in the codebase before this. For our file, my mentor and I discovered how helpful the use of Singleton can be on the speed of Fuzz targets because it saves multiple creations of the same objects, by re-using the already created object again and again. (I’m still waiting for other Core reviewers to comment on this)
Community Interaction:
Interning in the Summer of Bitcoin not only gave me exposure to meet other wonderful and talented interns, alums, and mentors but also indirectly helped me to be a part of some other wonderful communities as well. One of them is Bitshala, a huge shout out to everyone on their Discord server for helping me throughout the journey and explaining technical concepts to me on calls that would have been extremely tough for me to understand otherwise. They also gave me an opportunity to listen and interact with Adam Jonas, which was just awesome!
We also had the opportunity to speak with Adi Shankara (the man himself) about Bitcoin-related topics. I could listen to him talk about Bitcoin for hours; he’s one of the most intelligent and passionate people I’ve met in the entire space. Adi, thank you for starting it all!
The Most Wonderful Mentor:
The man, the myth, the legend, Bruno Garcia. The most shocking thing about Bruno is that he is just 23! (24 now ig) and already a legend in the Bitcoin ecosystem. He at the start of the program told me that we are going to keep this as a learning experience for you. He made me comfortable with doing mistakes and learning from them along the way. Never pressured me with anything. We worked like a force throughout the 3 months period, towards increasing the Fuzz coverage over the wallet. If I’m not wrong we contributed nearly 7 PRs to Bitcoin in this period related to Fuzzing! (most of them are his, ofc)
Conclusion:
I believe that open source and Bitcoin have and will continue to improve my life and the lives of millions of others. I’m not sure about the millions, but I’m planning to write some more follow-up blogs about how open-source helped me get a better career! See you soon!
Author:
Ayush Singh (Twitter)