Getting started, continued | 2023 Jan 8-14

This week I got started on rust-lightning. Picked up an issue, and opened a draft PR. I felt super slow. Rust-lightning is quite a big repository, and I have not really onboarded to a repo of this size before.

I guess I’ve had some similar experiences in the past, but they’d all been pretty brief, and I hadn’t cared much to contribute meaningfully. The work was more or less handed to me, and I took it as it was because to me I was just getting experience.

This time is a bit different. I’m interested and care about this work, so as opposed to just understanding what I need to do and getting it done, I have broader goals in mind. I want to understand more about the bigger picture and the smaller picture, so I can do work that’s really helpful.

Getting better at open-source

I’ve read a bit about the contribution process to open-source and particularly Bitcoin open-source projects, however even though I’ve read a lot of information, I’m realizing just how true they are from my first-hand experience getting started contributing. Some things I’m learning:

Understanding the bigger picture and why an issue was opened is important for contributing meaningfully. This is the difference between doing work that’s given to you, and scoping out work to aid the overall goals of the project. It’s tough to have a great understanding while starting out on a project, which is why it’s important to start with smaller issues and why it’s even more important to participate in code review.

In the PR I recently opened, I was struggling a lot to understand basically everything about it: if I was looking at the right piece of code, how this piece actually executes what it’s said to, when a user would even use my new addition, etc. I made a basic implementation without even really understanding when/how it would be used besides what’s communicated in the function signature. I am just starting out and trying to contribute, but how can I implement the solution to an issue when I don’t understand when/how it would be used? I felt sort of embarrassed once I realized this, but thankfully the maintainers have been supportive. So, I’m going to participate in more code review, and try to understand more of the why going forward.

In line with this, I’m understanding more why PR review club is a thing. On large projects, it’s difficult to start being helpful because the projects are just so large. You don’t know what’s going on, where everything is, why things are how they are, etc. Code review is a way to provide meaningful context while you start absorbing parts of the code base. Again, I am going to make a greater effort to do more of this.