4 exercises — following CONTRIBUTING.md rules precisely, understanding CLA/DCO licensing clauses, reading Code of Conduct norms, and handling conditional process requirements.
0 / 17 completed
1 / 17
You're about to submit your first PR to a project. The CONTRIBUTING.md says: "All commits must follow Conventional Commits. PRs without a linked issue will be closed. Run `npm run lint:fix` before pushing." Which action plan correctly follows this guidance?
Option B correctly follows all three explicit requirements in the CONTRIBUTING.md:
Reading requirements as requirements, not suggestions: The word "must" in "commits must follow Conventional Commits" and "will be closed" for unlinked PRs are not soft language — they are hard gates. Many CI pipelines actually lint commit messages automatically (commitlint) and some bots auto-close PRs without a linked issue. Treating these as optional is the #1 reason first PRs get bounced.
Conventional Commits format: `type(scope): description` — e.g. `fix: resolve null pointer in parseConfig()`. Common types: fix (bug fix), feat (new feature), docs, chore, refactor, test. This format is machine-readable — many projects auto-generate CHANGELOG.md and determine semantic version bumps (patch/minor/major) directly from commit type.
"PRs without a linked issue will be closed": This means: open (or find) an issue first, then reference it in the PR — `Closes #142` or `Fixes #142` in the description, which auto-links and auto-closes the issue on merge. Skipping this step, even with a well-written PR, risks an automatic close by a bot before a human even looks at it.
Why "the rules seem like guidelines" is risky: CONTRIBUTING.md is the project's explicit statement of what they will and won't accept. Ignoring it signals you didn't read it — which is often visible to maintainers even without them saying so (e.g. commit format mismatches are immediately obvious in the PR history).
2 / 17
A project's CONTRIBUTING.md includes this clause: "By submitting a pull request, you agree to license your contribution under the project's MIT license, and confirm you have the right to make this contribution (see our CLA for details)." What does this mean for a contributor?
Option B correctly explains the legal function of this CLA/licensing clause:
Why this clause exists: Open-source projects need clear legal chains of ownership. If a contributor submits code they copied from a proprietary source, or code their employer legally owns and hasn't authorized for open-source release, the project could face a legal claim later. The CLA (or the lighter-weight DCO — Developer Certificate of Origin, usually satisfied with a `Signed-off-by:` line via `git commit -s`) creates a paper trail confirming the contributor had the right to submit the code.
What contributors should actually check before contributing: 1. Does your employment contract have an IP assignment clause that could cover code you write, even in your own time? Some companies require written permission for employees to contribute to open source. 2. Are you copying code from another codebase with an incompatible license (e.g. copying GPL code into an MIT project)? This can create license contamination. 3. Is there a `CLA-bot` or `DCO check` in the project's CI? If so, your PR will be blocked until you sign electronically or add `Signed-off-by:` to your commits.
Why "it's just boilerplate" is wrong: It has real legal weight — it's the mechanism that lets projects legally accept and redistribute contributions. Corporate contributors especially should not assume this is irrelevant; many companies require legal sign-off before employees contribute to external projects, precisely because of clauses like this.
DCO vs full CLA: DCO is lighter — just a sign-off statement per commit, no separate document to sign. Full CLA (used by some larger foundations) may require a one-time signed agreement, sometimes through a bot that comments on your first PR with a link to sign.
3 / 17
You're reading a project's CODE_OF_CONDUCT.md, based on the Contributor Covenant, before your first interaction in the project's Discord. It lists "Examples of unacceptable behavior" including "trolling, insulting or derogatory comments, and personal or political attacks" and "publishing others' private information without explicit permission." Why does reading this matter, even if you don't plan to misbehave?
Option B is the correct, practical reading of a Code of Conduct (CoC):
Why reading the CoC before engaging matters: 1. Calibrates communication style — a CoC that explicitly bans "personal or political attacks" and "derogatory comments" signals a community where blunt criticism should target the code/idea, never the person. This is useful even in disagreement: "This approach has a race condition" is fine; "this is a lazy implementation" crosses into personal territory. 2. Tells you where to report problems — every Contributor Covenant-based CoC has a contact section (usually an email address of a small enforcement team, kept separate from the general maintainers so reports about a maintainer can still be made safely). Knowing this exists — and where it is — matters if you ever witness harassment. 3. Signals real enforcement authority — most CoCs describe a clear escalation ladder: private warning → temporary ban → permanent ban. This isn't just decoration; large projects (Rust, Python, Kubernetes) have publicly banned contributors under their CoC. Assuming it's "never enforced" is a real risk.
Why "only applies to maintainers" is wrong: Contributor Covenant explicitly applies to "everyone participating" in project spaces — issues, PRs, Discord/Slack, mailing lists, and often even conference spaces associated with the project. Contributors, first-time posters, and lurkers are all covered.
Practical takeaway: Reading the CoC for 2 minutes before your first post costs almost nothing and prevents the most common first-timer mistake: overly casual jokes or blunt criticism landing badly in a community whose norms you don't yet know.
4 / 17
A CONTRIBUTING.md says: "Small typo fixes and documentation corrections do not require an issue. All other changes, including bug fixes, must have an associated issue discussing the approach before a PR is opened." You noticed a bug and want to fix it. What should you do?
Option B correctly applies the explicit exception structure in this CONTRIBUTING.md:
Reading conditional rules precisely: This clause carves out ONE exception ("small typo fixes and documentation corrections") and explicitly states the general rule ("all other changes, including bug fixes") requires an issue first. Bug fixes are explicitly named as NOT exempt — so confidence in the fix's correctness is irrelevant to the process requirement.
Why "open the issue first" protects your effort: 1. The maintainer might already be aware of the bug and have a fix in progress, or a different root-cause diagnosis than yours 2. The maintainer might have architectural context that changes the "right" fix (as in cases where a quick patch conflicts with planned refactoring) 3. Getting alignment before writing code avoids the frustrating case of a PR being rejected after significant work, because the approach — not the code quality — was wrong
Why skipping straight to a PR is risky even when you're right: Even a technically correct PR can get closed unreviewed if it violates the stated process, simply because maintainers use "requires an issue" as their triage/spam filter. Following the process is often more decisive for getting merged than the quality of the fix itself.
The general principle: CONTRIBUTING.md documents often distinguish trivial changes (typos, docs) from substantive changes (logic, behavior, APIs) precisely because substantive changes benefit from a design discussion before implementation — this is the same principle behind RFCs for larger changes.
5 / 17
Alice from the `frontend-team` just posted this message in Slack: 'I'm totally blocked! The API keeps returning 500 errors when I try to fetch user data. It's driving me nuts!' Considering the project's CONTRIBUTING.md emphasizes clear communication and escalating issues, what is the MOST appropriate next step for you?
The key here is recognizing that a 500 error indicates a serious problem. Opening a PR immediately would be premature and potentially misleading. Ignoring it isn't a solution; proper issue tracking is crucial for collaboration. Reporting the error with details allows the backend team to investigate effectively – this aligns perfectly with the guidelines regarding escalating issues.
6 / 17
You're reviewing a PR submitted by Charlie. The PR description reads: 'Fixed a bug in the user authentication module. Added unit tests.' The project's CONTRIBUTING.md states: 'All PR descriptions must include a link to the relevant issue and briefly outline the approach taken.' What is the MOST important thing you should request from Charlie?
The CONTRIBUTING.md explicitly requires linking to issues. This is vital for traceability and context within the project. While other details are helpful, connecting the PR back to its originating problem ensures proper workflow and allows reviewers to easily understand the purpose of the change.
7 / 17
David is submitting a pull request. The project's README.md states: 'This project uses TypeScript with strict type checking. Ensure your code adheres to these rules.' David includes a comment in his PR that says, 'I fixed the typo!' What does this comment suggest about David's understanding of the project's requirements?
TypeScript's 'strict type checking' means that David *must* understand the project's type system. Simply stating 'I fixed a typo!' doesn't demonstrate this understanding. A proper commit message would acknowledge the use of TypeScript and highlight any adjustments made to ensure code adheres to those rules – this is a common misconception.
8 / 17
Emily wants to contribute a new feature. Before creating a PR, she consults the project's CONTRIBUTING.md and finds the following: 'All features must be discussed in an issue before implementation.' Emily has already spent two days working on the feature. What should she do next?
The CONTRIBUTING.md clearly states that all features require discussion *before* implementation. This ensures alignment with the project's goals and prevents wasted effort. Starting an issue allows for collaborative refinement of the feature's requirements – this is a core principle of open source development.
9 / 17
Ben from the `backend-team` has submitted a PR with a large code change to the database schema. The project's CONTRIBUTING.md states: 'All schema changes require discussion in an issue and must be accompanied by a migration script. Please include a link to the corresponding issue in your PR description.' Ben's PR description only mentions 'fixed a performance bottleneck'. What should you do FIRST?
The CONTRIBUTING.md explicitly outlines the requirements for schema changes – discussion and a migration script. Ignoring this guidance would violate project standards. Option A is correct because it directs Ben to fulfill these documented needs before further review can begin. Options B and D are premature; reviewing code without understanding the context or required steps is inefficient, and option C assumes Ben has already followed protocol.
10 / 17
Sarah is drafting a PR description. The project's CONTRIBUTING.md states: 'All PR descriptions must include a concise summary of the changes and a link to the related issue tracker ticket.' Sarah writes: 'This fixes a critical bug in the user profile page! It's complex, but it should be fine.' What is the MOST appropriate action?
The CONTRIBUTING.md mandates a concise summary and a link to the issue. Sarah's current description lacks these crucial elements. While brevity is valued, it cannot compromise clarity or traceability. Option A is incorrect because failing to meet the requirements means the PR may be rejected. Options B & D are too prescriptive – Sarah needs guidance on *how* to fulfill the requirement.
11 / 17
During a standup meeting, Liam says: 'I'm working on implementing the new user profile page. It's proving more complex than anticipated and I'm struggling with the API integration.' Considering the project's CONTRIBUTING.md which emphasizes discussing changes before PR creation, what is the BEST immediate response?
The CONTRIBUTING.md stresses proactive communication and issue creation *before* implementation. Creating an issue allows the team to understand the scope of the problem, offer assistance, and track progress effectively. While offering direct help might seem helpful initially, it bypasses the crucial step of formalizing the discussion and establishing a clear plan. Options A and D are inappropriate because they ignore established workflow.
12 / 17
During a code review session, David points out that a commit message reads: 'Fixed bug'. He asks you about the project's CONTRIBUTING.md guidelines regarding commit messages. The CONTRIBUTING.md states: 'All commits must follow Conventional Commits, which include a short summary and a scope.' What is your primary response to David?
The CONTRIBUTING.md mandates adherence to Conventional Commits, which includes a scope for each commit. This provides context and traceability within the project's history. Reminding David of this requirement ensures consistent commit practices and facilitates effective debugging and understanding of changes. Options A and C disregard the guidelines; D is overly disruptive.
13 / 17
You're reviewing a PR submitted by Rohan. The PR description reads: 'Implemented feature X'. The project's CONTRIBUTING.md states: 'All features must be discussed in an issue before implementation.' Rohan says he didn't create an issue because it was a straightforward change. What is the BEST way to proceed?
The CONTRIBUTING.md's requirement for discussing features in issues *before* implementation is a core process for collaboration and risk mitigation. While Rohan's change might seem simple, adhering to this guideline ensures proper planning and communication within the team. Requesting he create an issue is the most constructive approach, promoting best practices without unnecessarily delaying progress. Options C and D are overly restrictive.
14 / 17
Mark from the `mobile-team` submits a PR with a significant change to the UI. The project's CONTRIBUTING.md states: 'All PRs must include a link to the corresponding issue tracker ticket in the PR description.' Mark's PR description reads: 'Fixed some UI issues.' Which of the following is the BEST response you should give Mark?
The CONTRIBUTING.md explicitly requires a link to the issue tracker ticket for all PRs. Option 1 directly addresses this requirement and provides constructive feedback. Options 2 and 3 ignore the guideline, while option 4 requests help that isn't needed – Mark should understand the process.
15 / 17
During a standup meeting, Tom says: 'I'm working on optimizing the database queries. I'm not sure how much performance improvement to expect.' Considering the project's CONTRIBUTING.md, which is stated to say: 'All features must be discussed in an issue before implementation,' what should you do?
The CONTRIBUTING.md requires discussion in an issue before implementation. Tom's statement indicates he hasn't followed this process. Option 2 correctly identifies the missing step – initiating an issue allows for tracking progress and collaboration. Options 3 and 4 are irrelevant to the requirement.
16 / 17
You're reviewing a pull request submitted by Maria. The PR description states: 'Implemented new feature X and added some styling.' The project's CONTRIBUTING.md clearly states: 'All PR descriptions must include a link to the related issue tracker ticket.' Maria hasn't included this link. Which of the following actions should you take?
The project's CONTRIBUTING.md explicitly requires a link to the issue tracker ticket in all PR descriptions. This ensures traceability and proper workflow management. Failing to adhere to these guidelines demonstrates a lack of understanding of the team's processes; therefore, immediately informing Maria is the correct response.
17 / 17
During a Slack discussion about contributing to the project, John says: 'I'm going to create a new feature and just push it directly to the main branch. It's quick!' Considering the project's CONTRIBUTING.md which states: 'All contributions must be submitted as pull requests, even small changes.' What is the BEST response you should give John?
The CONTRIBUTING.md emphasizes the importance of pull requests for code review and tracking. Directly pushing to the main branch bypasses this process, increasing the risk of introducing bugs or inconsistencies. John's approach is a violation of established workflow best practices; therefore, explaining the benefits of pull requests is the most constructive action.
What will I practise in "Reading Contributing Guidelines"?
This module focuses on Open Source Contribution — real workplace phrasing you'll use on the job. It contains 17 scenario-based multiple-choice questions with instant feedback.
Is this exercise free to use?
Yes. Every exercise on CoderSlingo, including this one, is free to use with no account or sign-up required.
How many questions does this exercise have?
This module includes 17 questions. Each one gives an immediate right/wrong result plus a full explanation of the correct phrasing.
What happens if I answer a question incorrectly?
You'll see the correct answer highlighted straight away, along with a plain-English explanation of why it's right and why the other options don't fit — mistakes are part of the learning here.
Can I retry the exercise if I want a better score?
Yes — use the 'Try again' button on the results screen to reset your score and go through the questions again. There's no limit on attempts.
Who is this Open Source Contribution exercise for?
It's aimed at IT professionals with working English who want to sound more natural and precise around open source contribution — useful whether you're preparing for real conversations at work or just building confidence with the vocabulary.
Do I need an account to track my progress?
No account is needed. Your progress through the exercise is tracked locally in your browser for the current session, and you can replay the module at any time.
How is this different from reading a blog article?
This exercise is an interactive drill that tests and reinforces specific phrasing through multiple-choice questions with instant feedback, while blog articles explain concepts and vocabulary in prose. The two work well together.
Where can I find more Open Source Contribution exercises?
See the Open Source Contribution hub for more modules like this one, or browse the full Exercises page for other IT-English topics.
Can I complete this exercise on my phone?
Yes — every exercise on CoderSlingo is fully responsive and works on phones and tablets, so you can practise anywhere.