English for Open Source Contribution
The English phrases and conventions you need to contribute to open source projects — issues, pull requests, code reviews, and community communication.
Contributing to open source projects is one of the best ways to improve as a developer — and one of the most language-intensive activities in software engineering. You write issues, pull request descriptions, code review comments, and discussion posts — all in public, in English, for maintainers who may be volunteers with limited time.
Clear, professional English is not just about communication: it is about respect for the maintainers’ time. The better you write, the more likely your contribution is to be accepted.
Writing a Good Bug Report
A great bug report answers three questions: what did you expect, what actually happened, and how can someone reproduce it?
Template structure:
Title: Descriptive, specific — not “It doesn’t work”
Expected behaviour: “Clicking the ‘Submit’ button should trigger form validation and display errors if required fields are empty.”
Actual behaviour: “Clicking ‘Submit’ submits the form without validation. Required fields are not highlighted.”
Steps to reproduce:
- Navigate to
/signup- Leave the email field empty
- Click Submit
- Observe that no validation error appears
Environment: Node 20.11, Chrome 125, macOS 14
Additional context: “This worked correctly in version 2.3.1. I first noticed the issue after upgrading to 2.4.0.”
Useful phrases for bug reports:
“I believe this is a regression introduced in…”
“I have confirmed this happens consistently with…”
“I have not been able to reproduce this with…”
“Workaround: the issue can be avoided by…”
Writing a Feature Request
Title: “Add support for custom error message templates”
“Currently, validation error messages are hard-coded strings. For teams building localised applications, this requires forking the error handling logic.
I’d like to request the ability to pass custom error message templates via a configuration option. This would allow consumers to localise messages without modifying library source code.
Happy to implement this if the maintainers agree on the approach — I’d want to confirm the proposed API before starting work.”
Key elements: state the problem, not just the feature; explain the use case; offer to help.
Writing a Pull Request Description
A good PR description gives the reviewer everything they need without asking:
What: “Adds support for custom validation error message templates.”
Why: “Fixes #234. Teams building localised apps currently need to fork the validation module to customise error messages. This adds a
messagesoption to the validator config that overrides defaults.”
How: “The
createValidatorfunction now accepts an optionalmessagesobject. Keys match the validation rule names; values are strings or functions that return strings. A full list of overridable keys is in the updated README.”
Testing: “Unit tests cover all message override scenarios. I’ve also tested manually in the example app included in the repo.”
Breaking change: “No. Existing configurations without a
messagesoption continue to work as before.”
Responding to Maintainer Feedback
Accepting changes:
“Thanks for the review — these are fair points. I’ll update the implementation to match the existing pattern and add the missing test cases.”
“Good catch. I’ve pushed a fix in the latest commit — please take another look when you have a moment.”
Asking for clarification:
“I’m not sure I follow this comment — could you expand on what you mean by ‘prefer a functional approach’ here? I want to make sure I understand the expected pattern before I refactor.”
Respectfully disagreeing:
“I appreciate the suggestion. I considered that approach, but it would require changing the public API, which I wanted to avoid to maintain backward compatibility. I’m happy to discuss this further if you feel strongly.”
When a PR is closed without merge:
“Thanks for considering this — I understand the decision. I’ll close the fork and continue using the workaround for now. If the requirements change in the future, I’d be happy to revisit.”
This last response matters. Maintainers remember contributors who respond gracefully.
Writing in Discussions and Issue Threads
Adding information to an existing issue:
“I can confirm this — I’m seeing the same behaviour on Windows 11 with Node 22. Happy to provide a more detailed trace if that would help.”
Offering to help:
“I’d be willing to take a look at this if it’s something that would be accepted. Can you point me to the relevant code? I’m new to the codebase but familiar with the underlying pattern.”
Summarising a long discussion:
“To summarise the discussion so far: the main approaches proposed are X and Y. X is simpler but doesn’t handle edge case Z. Y handles everything but adds complexity. Does that capture it correctly before we decide on a direction?”
Common Open Source Phrases
| Phrase | Meaning / When to use |
|---|---|
| LGTM | Looks Good To Me — informal approval |
| WIP | Work in Progress — not ready for review yet |
| nit | Minor stylistic comment, not blocking |
| cc @name | Notify someone by mentioning them |
| PTAL | Please Take Another Look — after addressing feedback |
| bikeshedding | Debating trivial details; use: “I don’t want to bikeshed this, but…“ |
| upstream | The original project you forked from |
| downstream | Projects that depend on yours |
| cherry-pick | Apply a specific commit from one branch to another |
Open source contribution is as much a communication skill as a technical one. Clear, respectful, and thorough written communication makes your contributions more likely to be accepted, more likely to be merged quickly, and more likely to lead to long-term collaboration.