First Contributions is a hands-on tutorial repository that walks complete beginners through making their very first open source contribution. It isn't software you install or run — it's a guided, low-stakes practice ground. You fork it, add your name to a single file (
Contributors.md), and open a pull request, completing the full fork → clone → branch → edit → commit → push → pull request workflow that every open source contributor uses. The collection covers this workflow from the command line, from seven different graphical Git tools, and in more than 60 languages, plus a library of advanced Git how-tos and guidance for non-programmers who want to contribute.
This guide explains what the collection contains, how to navigate it, and which path to take based on the tools you use and the language you read. Everything described here is drawn directly from the repository at commit e63c867.
Note
This is a learning resource, not a code project. There is nothing to build, deploy, or configure. The "deliverable" is you successfully opening your first pull request and getting it merged.
What's in This Collection
The repository is organized around one canonical tutorial (the root README.md) with supporting material branching out from the docs/ directory. The top-level structure maps as follows:
| Path | What's here |
|---|---|
README.md |
The main tutorial — the command-line fork → clone → branch → edit → commit → push → PR walkthrough. This is the starting point. |
Contributors.md |
The file you actually edit. A long, alphabetically-loose list of every contributor's name (1,456 lines). Adding your name here is the practice task. |
docs/translations/ |
108 files — the README tutorial translated into 60+ languages (e.g. README.es.md, README.zh-cn.md, README.ar.md). |
docs/cli-tool-tutorials/ |
Command-line tutorials for the GitHub CLI (gh) and plain git CLI, plus their translations (30 files total). |
docs/gui-tool-tutorials/ |
Step-by-step tutorials for seven graphical Git tools, plus translations (58 files total). |
docs/additional-material/git_workflow_scenarios/ |
24 advanced Git how-to documents (amending, rebasing, squashing, resolving merge conflicts, and more). |
docs/additional-material/Things a non Programmer can do.md |
23 concrete ways to contribute to open source without writing code. |
docs/how-to-contribute-to-open-source-projects.md |
A long-form beginner essay on why and how to contribute to open source generally. |
.github/CONTRIBUTING.md |
How to contribute to this repository — primarily aimed at people adding or reviewing translations. |
.github/SECURITY.md, LICENSE |
Security-reporting policy and the MIT license. |
Tip
If you only read one file, read the root
README.md. Every other document in this collection either translates it, re-tells it for a specific tool, or extends it with advanced techniques.
How to Read / Use This
This collection is meant to be done, not just read. The intended path is linear for your first pass, then browse-by-topic afterward.
Prerequisites (the only real ones):
- A GitHub account (free).
- Git installed on your machine — the tutorial links to GitHub's setup guide. If you plan to use a graphical tool instead, that tool bundles Git for you.
Important
You do not need to know how to program to complete this tutorial. The practice task is editing a plain text file (
Contributors.md) and adding your name to it.
Choose your path based on how you want to work with Git:
Command line
Start with the root README.md. It uses plain git commands. If you prefer GitHub's official gh CLI, use docs/cli-tool-tutorials/github-cli-tutorial.md instead.
Graphical tool
Skip to the Section Walkthroughs below and pick the tutorial that matches your tool — GitHub Desktop, VS Code, GitKraken, Sourcetree, IntelliJ IDEA, Visual Studio 2017, or Sublime Merge.
In your language
Open docs/translations/Translations.md (or the flag grid at the top of README.md) and pick your language. Each translation mirrors the English tutorial.
Suggested entry points by reader type:
| You are... | Start here |
|---|---|
| A first-timer comfortable with a terminal | Root README.md |
| A first-timer who prefers buttons over commands | A GUI tool tutorial |
| Not a programmer, but want to help | Things a non Programmer can do.md |
| Already made a PR, want to go deeper on Git | git_workflow_scenarios/ |
| Wanting the big-picture "why" first | how-to-contribute-to-open-source-projects.md |
Note
After your pull request is merged, a maintainer note in the tutorial points you to the project's companion web app, which lists other beginner-friendly projects with easy issues to tackle next.
Section Walkthroughs
1. The Main Tutorial (README.md)
This is the heart of the collection. It walks you through the complete contribution workflow using plain git commands, with screenshots at each step:
- Fork the repository (one click on GitHub).
- Clone your fork locally:
git clone "url you just copied". - Create a branch:
git switch -c your-new-branch-name(the tutorial includes a fallback togit checkout -bfor older Git versions). - Edit
Contributors.md— add your name anywhere in the middle of the file. - Stage and commit:
git add Contributors.mdthengit commit -m "Add your-name to Contributors list". - Push:
git push -u origin your-branch-name. - Open a pull request with the Compare & pull request button on GitHub.
The tutorial anticipates the two most common beginner errors and tucks fixes into expandable <details> blocks: the git switch "not a git command" error (older Git) and the post-2021 password-authentication-removed push error (switch the remote to SSH or use a personal access token).
Warning
When adding your name to
Contributors.md, put it somewhere in the middle of the file — not at the very beginning or very end. Edits clustered at the file boundaries are far more likely to cause merge conflicts with other newcomers doing the same exercise at the same time.
Tip
The exact branch name doesn't matter, but make it descriptive — the tutorial's own example is
git switch -c add-alonzo-church. A name likeadd-yournamekeeps your work easy to identify.
2. CLI Tool Tutorials (docs/cli-tool-tutorials/)
For people who want to stay in the terminal. The primary English document, github-cli-tutorial.md, uses GitHub's official gh CLI, which collapses several manual steps into single commands:
gh auth login # authenticate once
gh repo fork firstcontributions/first-contributions # fork + clone in one step
git switch -c add-john-doe # create your branch
git add Contributors.md && git commit -m "Add john-doe to Contributors list"
git push origin -u your-branch-name
gh pr create --repo firstcontributions/first-contributions # open the PR from the terminal
This folder also contains plain-git CLI variants and translations (Bengali, Kannada, Hindi, Urdu, German, Gujarati, Indonesian, Korean, Malayalam, Portuguese (BR), Sinhala, Tamil, Arabic, French, Polish) — 30 files in total.
Note
The
gh repo forkcommand prompts you to clone the fork at the same time — accept the "yes" option so you end up with a local copy ready to edit.
3. GUI Tool Tutorials (docs/gui-tool-tutorials/)
The same contribution workflow, retold for people who prefer a graphical interface over the command line. Each tutorial is self-contained and screenshot-heavy. Seven tools are covered:
| Tool | Tutorial file |
|---|---|
| GitHub Desktop | github-desktop-tutorial.md (plus an older-version variant) |
| Visual Studio Code | github-windows-vs-code-tutorial.md |
| GitKraken | gitkraken-tutorial.md |
| Atlassian Sourcetree (macOS) | sourcetree-macos-tutorial.md |
| IntelliJ IDEA | github-windows-intellij-tutorial.md |
| Visual Studio 2017 | github-windows-vs2017-tutorial.md |
| Sublime Merge | sublime-merge-tutorial.md |
Including translations, this folder holds 58 files.
Tip
Pick the tool you already have open during your normal work. The point of this exercise is to learn the contribution flow, not to install a new application. If you use VS Code or an IDE daily, use that tutorial.
4. Additional Material — Git Workflow Scenarios (docs/additional-material/git_workflow_scenarios/)
Once you've made your first PR, this is where you go to learn the Git techniques you'll hit in real projects. The folder's index, additional-material.md, assumes you've finished the basic tutorial first. Highlights:
| Scenario | When you'll need it |
|---|---|
| Amending a commit | Fix a commit message or forgotten change before pushing. |
| Keeping your fork synced | Pull upstream changes into your fork so it doesn't fall behind. |
| Resolving merge conflicts | Two changes touch the same lines — the classic newcomer roadblock. |
| Squashing commits | A reviewer asks you to combine many commits into one. |
| Reverting a commit | Undo a commit you've already pushed. |
| Undoing a local commit | Reset your local repo when you've made a mess. |
| Stashing a file | Set changes aside temporarily without committing. |
| Rebase vs. merge | Understand the two ways to integrate branches. |
The folder contains 24 documents in all, also covering configuring Git, creating a .gitignore, storing credentials, deleting branches, moving commits between branches, resetting branches/commits, checking the commit log, installing Git on Arch/Ubuntu, and a curated Useful Links page.
Caution
Several of these scenarios — reverting, resetting, and force-related rebase/squash steps — rewrite history. Read each document fully before running the commands on a branch you care about, and prefer practicing on a throwaway branch first.
5. Things a Non-Programmer Can Do
Things a non Programmer can do.md is a standalone essay listing 23 concrete, non-coding ways to contribute to open source. It's organized by area:
- Listen & engage — join mailing lists, follow project blogs, hang out in IRC/Discord.
- Work with tickets — diagnose bugs, triage and close stale issues.
- Work with code (lightly) — test a beta, write a test, silence a compiler warning, add a clarifying comment.
- Work with community — answer questions, write blog posts, improve the website.
- Work with documentation — write or improve docs, create how-to examples.
- Modern outreach — accessibility audits, organizing events, curating "awesome" lists, social media, localization, UX feedback, grant writing.
Note
This document reinforces a core message of the whole project: code is only one way to contribute. Documentation, triage, translation, and community-building are all genuine, valued contributions.
6. The "How to Contribute" Essay
how-to-contribute-to-open-source-projects.md is a longer-form companion that answers the why and the how at a strategic level: why contributing builds skills, portfolio, and network; how to choose the right project; why to start small (good-first-issue, documentation, tests); and how to handle common challenges like imposter syndrome and large codebases. It points back to the README for the hands-on practice.
Contributing / Extending
The repository's own contribution rules live in .github/CONTRIBUTING.md. Two points stand out:
- Suggesting workflow or tutorial changes: open an issue first so the change can be discussed collectively before any code is written.
- Translations: when you change a translation, request a review from the existing reviewer(s) for that language (the file lists named reviewers per language). The stated goal is for every translation to carry the same content as the English
README.md, except for the inter-translation language links.
Important
Adding your name to
Contributors.mdis the practice exercise, not a substantive contribution to the project. It exists so you can rehearse the pull request flow safely. Real contributions are translations, tutorial improvements, and the workflow scenarios.
For security issues, .github/SECURITY.md directs you to GitHub's private "Report a vulnerability" workflow, or email [email removed]. The project is released under the MIT License.
Related Resources
These resources are referenced directly from the repository's tutorials:
- Companion web app — firstcontributions.github.io hosts a project list of beginner-friendly repos and a social share page to celebrate your first PR.
- More practice — roshanjossey/code-contributions for a code-oriented follow-up exercise.
- Set up Git — GitHub's Git setup guide, linked from the main tutorial.
- GitHub CLI — cli.github.com, used in the CLI tutorial.
- SSH authentication — GitHub's SSH key guide, referenced in the tutorial's push-error troubleshooting.
Tip
Once your first pull request here is merged, the most valuable next step is to find a real project that interests you. The web app's project list is curated specifically for that hand-off.