Open source contribution is one of the highest-leverage things you can do as an engineer. You learn from real codebases, build a public portfolio, and give back to tools you use every day. And yet, most engineers never do it — because getting started feels overwhelming.
Let's make it concrete.
Don't start with a huge project like React or Linux. The barrier to entry is high and your PR will sit in a queue for months.
Better starting points:
good-first-issue or help-wanted label# Search GitHub for beginner-friendly issues
# Filter by: label:good-first-issue language:TypeScript
# Or use https://goodfirstissue.devOnce you've found a project and an issue to tackle:
# 1. Fork the repository on GitHub (click Fork)
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/REPO_NAME.git
cd REPO_NAME
# 3. Add the upstream remote
git remote add upstream https://github.com/ORIGINAL_OWNER/REPO_NAME.git
# 4. Create a branch for your work
git checkout -b fix/issue-123-button-alignmentAlways branch from main (or whatever the default branch is). Never work directly on main — it makes keeping your fork in sync painful.
This is where most contributors go wrong: they jump to writing code before understanding the codebase. Take 30 minutes to:
CONTRIBUTING.md — it tells you the conventions, how to run tests, and PR requirementsgit grep, your editor's search, or the GitHub search)# Find relevant files fast
git grep -l "ComponentName"
# Understand recent changes to a file
git log --oneline -- path/to/file.tsKeep your change small and focused. One issue per PR. If you find other bugs while exploring, open separate issues — don't bundle fixes.
// Before: hardcoded breakpoint
const isMobile = window.innerWidth < 768;
// After: use the existing breakpoint constant from the codebase
import { BREAKPOINTS } from "@/constants/layout";
const isMobile = window.innerWidth < BREAKPOINTS.md;Write tests that match the project's existing style. If the project has 100% test coverage, your PR needs tests too.
# Keep your branch up to date before submitting
git fetch upstream
git rebase upstream/main
# Push your branch
git push origin fix/issue-123-button-alignmentWhen writing your PR description:
Closes #123)## What
Fixes the button alignment regression introduced in #120.
## Why
The `flex-col` on mobile was conflicting with the gap utility from the parent. Switched to `flex-wrap` which handles both cases correctly.
## Testing
- Tested on Chrome 121, Firefox 122, Safari 17
- All existing tests pass
- Added unit test for the wrapped layout case
Closes #123You will get feedback. This is not a rejection — it's the point. Maintainers leave comments because they want your contribution to land.
Congratulations — you're a contributor. Now:
git branch -d fix/issue-123-button-alignment)git fetch upstream && git merge upstream/maingit push origin mainAnd then: do it again. The second contribution is always easier than the first.
Open source is a long game. Don't expect to become a core maintainer overnight. Show up consistently, communicate clearly, and keep your changes small and focused. That's all it takes.