
Behind the Scenes: The Story of Pull Requests to Meta and Vercel Projects
M. Zakyuddin Munziri
@zakiego
Originally written in Bahasa Indonesia.
This article was previously published on Medium: Behind the Scenes: The Story of Pull Requests to Meta and Vercel Projects.
Background
That night, when my first pull request to a project owned by Meta (formerly Facebook) was merged, I was overjoyed.
An achievement for a newcomer in the software development world.
Like a child who just learned to walk, even though later as an adult, they no longer feel the happiness of taking those first steps.
2021
Going far back, a year ago. When tweets from @mathdroid, @BukanYahya, @tibudiyanto, @resir014, @pveyes, @sonnylazuardi, @agalliosamai, and @zainfathoni were flooding my timeline.
These Indonesian developer legends were showcasing how they collaborated in public. I was in awe. I wanted to help, but at that time, all I knew was HTML.
Every tweet replying to that thread, I read carefully. Even though I didn't understand what they were writing.
Not long after, the projects wargabantuwarga.com and silacak emerged. I still remember clearly, when the silacak project was running, I had just learned to use Tailwind CSS. There was an issue to create a part of the dashboard, and I tried to build it.
When more than half of the code was written, I hesitated to contribute. I wasn't confident with my messy code. Eventually, the code was left sitting in my local machine.
Time passed, I had worked on several personal projects with over a thousand commits, but I still didn't dare to create a pull request.
Small Steps
On my bed, before sleeping. Feeling bored, I opened the website lexical.dev, a young text editor framework.
Something felt off. When using dark mode, the hover for the "Visit Button" turned black instead. (video)
From there, I thought about fixing it. This was just a simple CSS issue. Meaning, I didn't need to write code with super complex logic. Just a few simple lines.
Finally, I mustered up the courage.
Clicking the fork button, cloning from the forked project. Creating a new branch. Writing two lines of CSS code. Pushing the code to my personal repository. Finally, pressing the pull request button that appeared on the repository page.
Wait. This wasn't as smooth as you might think. I checked multiple times whether the code I wrote was correct. Somehow, my heart was beating faster than usual.
https://github.com/facebook/lexical/pull/2462#issue-1274990303
Voila. Pull request created (https://github.com/facebook/lexical/pull/2462). I intentionally included a screen record so the reviewer could easily understand the problem I was referring to.
https://github.com/facebook/lexical/pull/2462#issuecomment-1158837326
Turns out, open-source projects at Facebook require every contributor to sign an agreement. Don't worry. It's just a few clicks. Just like clicking the terms and conditions agreement when creating an account on a service (has anyone ever read it completely? :D).
https://github.com/facebook/lexical/pull/2462#pullrequestreview-1010455855
Less than 15 minutes later, the reviewer had already given feedback. I just needed to press "commit suggestion" to change the code according to the reviewer's suggestion.
Pull request approved.
The bot responsible for checking whether the contributor had agreed to the contribution terms and conditions was also synced.
Pull request merged!
Second Step
After making a pull request to a Meta project, it felt easier to make a pull request to other projects. I mean, in terms of convincing myself.
Those days I was actively browsing the Next.js repository because version 12.2 was approaching release. So I read every commit made, looking at what was changed. One commit I noticed was when Lee Robinson (one of the coolest developers I admire), fixed a typo, from rewrites (with an "s" ending) to rewrite.
https://github.com/vercel/next.js/pull/38000
But when reading the Middleware Upgrade Guide page, it still said rewrites (with "s").
So again, I tried to fix this small typo.
https://github.com/vercel/next.js/pull/38016
I mentioned the pull request made by Lee earlier, to show that the change I made was similar to his.
https://github.com/vercel/next.js/pull/38016#pullrequestreview-1019410068
This project was simpler, no agreement needed like in Meta's project. Just waiting for approval from the reviewer. If approved, it would be merged to the main branch.
Next Steps
Again, starting from Twitter, this is one of the reasons why I follow many developers on Twitter. The main developer of SWC (a compiler used by Next.js) announced that he had just created a new project (again) called FnApi.
When I looked, the documentation website wasn't user-friendly on mobile. The website was still built on Nextra version 1.
Coincidentally, I had seen the author of Nextra tweet about Nextra version 2.
Starting from there, I created a pull request, using the Cobe project as a reference.
As a note, at the time of writing this, Nextra version 2 was still in beta status and documentation for upgrading to version 2 was not yet available.

Even quicker. Merged!
Takeaways
A few takeaways for beginner developers like me to start contributing:
- Contributions don't have to involve writing complex code, you can start by submitting issues or fixing typos.
- Follow the commit writing style of each project. To find out, read the commit history of that project.
- "Look for mistakes" in newly released projects. Like the Fresh framework from Deno whose footer link was still pointing to the old GitHub (https://github.com/denoland/fresh/pull/296).
Closing
It took a very long time before I finally dared to make a pull request to an open-source project. And even then, it was only a (very) small contribution.
But that's okay. Before breaking the world record, Usain Bolt also needed some time after he was born, just to be able to stand and walk. In other words, take your baby steps.
This is about the learning process, understanding how systems work, and daring to try.
Thank you to the Indonesian developer legends I mentioned above, for inspiring me to dive into this world.

Lastly, for beginner software developers like me who want to learn to contribute, the contribution guide (https://github.com/kawalcovid19/wargabantuwarga.com/blob/main/CONTRIBUTING_ID.md) from KawalCovid19 is highly recommended.
Connect
Want to discuss more about this topic or other technology-related topics? You can reach me at @zakiego!


