Your First Open-Source Contribution: Fix One Step a Reader Can Check

Make a first open-source documentation contribution with a worked example: reproduce a missing step, check a small correction, and write a clear pull request.
Table of Contents
For your first open-source contribution, choose a project you can use, find one small problem you can demonstrate, read its contribution rules, and submit a correction you have checked. A documentation fix can be useful when it removes a real obstacle for the next reader. Finish your part with a reviewable pull request; whether and when it is merged belongs to the maintainers.
Start with a specific reader task, such as running a project's example. If the instructions leave out a required step, record where you started, what you tried, and what happened. That gives you a reason for the change beyond wanting a contribution on your profile. Avoid rewriting a whole README before you know which instruction is wrong.
Kognivu can help turn this learning goal and your available time into daily quests. Keep the repository, commands, and test notes in your own development tools. Plan a first contribution in Kognivu, then check that the proposed tasks include understanding the project, verifying the correction, and preparing it for review. Kognivu does not submit or review the pull request for you.
Pick a project you can inspect before choosing an issue
A familiar tool or lesson repository is a useful starting point: you already have a reason to follow its instructions. Read the README, contribution guide, code of conduct, and any documentation-specific instructions. Check recent issues and pull requests to see how maintainers handle changes like the one you want to propose.
GitHub's contributor guide recommends understanding project requirements and beginning with small fixes. Labels such as good first issue or help wanted can point to opportunities, but read the whole thread. The work may already be assigned, under discussion, or covered by an open pull request.
Choose a task whose acceptance condition you understand. "Add the missing directory step so the documented example runs from the stated starting location" is inspectable. "Improve the docs" leaves both the scope and the result open.
For this first attempt, move on if you cannot get the documented setup working well enough to check your change. Record the blocker or ask a focused question in the project's designated channel. Picking another suitable task is reasonable; pretending to have tested the original one is not.
Reproduce the reader's problem with a tiny example
Here is a fictional project called field-notes. These files and outputs are invented for the exercise, not a report about a real repository:
field-notes/
README.md
examples/
summarise.py
sample.csv
Suppose its README says to install the supported Python version, open a terminal in the repository root, and run:
python3 summarise.py sample.csv
The command cannot find summarise.py there because the file is inside examples/. You inspect the script and establish that its sample command is intended to run from that directory. Running the example there produces 3 entries, the expected result for the supplied three-row sample.
Save a short reproduction note:
Revision: the exact commit I checked
Environment: Python version and operating system used
Starting directory: field-notes repository root
Instruction followed: python3 summarise.py sample.csv
Observed: Python cannot find the script at that location
Proposed correction: enter examples/ before the sample command
Check: the sample runs from examples/ and reports 3 entries
The location is part of the bug. Without it, a maintainer who already has a terminal open in examples/ may see no problem. For a real project, preserve the actual command, relevant error, revision, and prerequisites. Remove private paths or sensitive values before sharing the note.
Before changing anything, search open and closed issues and pull requests for the error or the affected section. Open Source Guides advises checking existing discussion and giving enough context for others to understand a proposed contribution. Follow the project's rule about discussing a fix first, especially if you are unsure which behavior the documentation should describe.
Make the smallest correction that solves that problem
For the fictional example, the proposed documentation change is:
Open a terminal in the repository root, then run:
```sh
+cd examples
python3 summarise.py sample.csv
```
That change preserves the original example and adds its missing prerequisite. It does not rename the script, replace the project setup, or rewrite unrelated sections. In a real repository, check whether the surrounding instructions already change directories; adding a second cd examples could introduce a new error.
GitHub's fork-and-pull-request workflow lets you propose changes from your own copy and a separate branch. Use the project's accepted editor or local workflow, and compare the branch against the intended base before submitting. The final diff should contain the correction you meant to offer.
Watch for an editor that reformats the whole file. Restore unrelated formatting changes so a reviewer can see the actual fix. If the page is generated, follow the project's instructions for editing its source rather than changing only the generated output.
An AI assistant can help explain an unfamiliar instruction or suggest wording. Check its proposal against the files and the project's contribution rules. You need to understand every line you submit, including a command that looks routine.
Check the corrected instructions from the starting point
Return to the repository root and follow the revised steps in order. If you test only the last command from an already prepared directory, you have not checked whether a new reader can reach it.
For the fictional correction, verify all of these:
- The revised instructions begin at the root and enter the existing
examples/directory. - The sample command reads the intended sample file and reports
3 entries. - The text still states the required Python version and other prerequisites.
- Only the intended documentation lines changed.
Then run the checks required by the actual project. Documentation may have link, formatting, spelling, or site-build checks. A successful sample command does not replace them. If you cannot run a required check, say which one and why; distinguish a passing check from one you did not attempt.
Give the reviewer a clear reason and a checkable result
Use the repository's pull-request template. A concise description for the fictional change could be:
Problem: The README starts in the repository root, but the sample script
and CSV are in examples/. The listed command cannot find the script.
Change: Add the missing directory step before the existing sample command.
Verification: Followed the revised instructions from the root with the
documented Python version. The sample reported 3 entries. Ran the required
documentation checks and recorded their results.
Scope: README instructions only; no script or sample-data change.
Replace that last verification sentence with the commands and outcomes you actually observed. Never paste this fictional success into a real pull request. Reference a relevant issue if one exists, and use the project's convention for linking it.
Submit for review when the change and its checks are ready. If you still need guidance, use the project's draft or discussion process and identify the unresolved question. A draft is work in progress, not an accepted contribution.
When feedback arrives, restate the requested behavior if it is unclear, make the focused correction, and rerun affected checks. Keep the discussion and changes in the same pull request. Respect a maintainer's decision to use a different fix or decline the proposal; opening several duplicate requests will not make the original change easier to review.
Plan the work you control, including a stopping point
With five half-hour sessions available, a starting budget is one for project rules and duplicate checks, one for reproduction, one for the correction, one for verification, and one for the pull-request description and final diff. Those are planning blocks, not a promise that every contribution takes two and a half hours.
End each session with evidence and the next specific action. "Check whether the README assumes the examples directory" is easier to resume than "Contribute to open source." If setup consumes the available time, record that result and reconsider the task. Reduce optional changes before dropping verification.
Your controllable finish condition is a useful, scoped proposal with an explained problem and honest checks. Track later review or acceptance separately. A submitted pull request does not prove it is merged, and a merged documentation fix does not prove general job readiness.
If you first need practice building a small program, the first Python project guide covers that task. If you already have a stalled personal build, the side-project guide helps you finish your own scope. Contributing here adds another requirement: the work must fit someone else's project and review process.
Build my contribution goal in Kognivu with the project, reader problem, current blocker, and sessions you can protect. Review the generated path and first quest against the remaining checks. Keep the actual diff and reviewer feedback as your evidence of progress.
Written by
Ilia Sorokin
Founder of Kognivu. Writes about personal goal planning and reviewing AI-generated plans.
About the authorNext step
Need product path, not just theory?
Use Kognivu as a daily planner for goals when a normal to-do list is not enough. Build momentum with pre-decided quests and measurable execution.
Explore Daily Planner for Goals That Need Real Follow-ThroughContinue Reading
More from Learning & Career


