OpenSource Together

Command Palette

Search for a command to run...

Chapter 8: Contributing to Existing Projects

Contributing to open source is the most direct way to learn how open source works in practice.

It teaches collaboration, communication, and decision-making in real environments.

This chapter focuses on how to approach contributions thoughtfully and effectively.


Contribution as Collaboration

A contribution is not just a code change.

It is a proposal made in a shared space.

Contributing means:

  • respecting existing decisions
  • understanding project context
  • communicating clearly
  • being open to feedback

Successful contributions balance initiative with humility.


Starting from Usage

The best way to contribute is to first use the project.

Using a project helps you:

  • understand its purpose
  • encounter real issues
  • identify friction points
  • build context

Many contributions start as user frustrations.


Reading Before Acting

Before contributing:

  • read the README
  • review documentation
  • check existing issues
  • search past discussions

This avoids duplicated effort and misaligned proposals.


Finding Contribution Opportunities

Common entry points include:

  • bug reports
  • documentation improvements
  • small fixes
  • test additions
  • “good first issue” labels

Small contributions build trust and familiarity.


Understanding Project Norms

Each project has implicit norms.

Pay attention to:

  • coding style
  • commit message format
  • review tone
  • decision-making patterns

Matching these norms increases the chance of acceptance.


Issues as a Starting Point

Issues are often the best place to begin.

Good issues:

  • describe the problem clearly
  • include reproduction steps
  • explain expected behavior

If an issue is unclear, asking clarifying questions is acceptable.


Proposing Changes Thoughtfully

Before writing code:

  • confirm the issue is valid
  • discuss the approach
  • ask if maintainers agree

Early alignment saves time for everyone.


Forks and Branches

Most contributions follow a standard flow:

  • fork the repository
  • create a dedicated branch
  • make focused changes
  • keep commits scoped

Small, focused changes are easier to review.


Writing a Good Pull Request

A good pull request:

  • explains the problem
  • describes the solution
  • references related issues
  • highlights trade-offs

Pull requests are communication tools, not just code diffs.


Responding to Feedback

Feedback is part of the process.

When receiving feedback:

  • read it carefully
  • avoid defensive reactions
  • ask questions if unclear
  • iterate thoughtfully

Review is a collaborative process, not a judgment.


When Contributions Are Not Accepted

Not all contributions are merged.

Reasons include:

  • misalignment with project direction
  • scope concerns
  • maintenance burden
  • alternative solutions preferred

A rejection is not a failure.


Respecting Maintainer Time

Maintainers often work with limited time.

Good practices include:

  • being concise
  • avoiding pressure
  • respecting silence
  • following guidelines

Patience is part of open source collaboration.


Non-Code Contributions Matter

Valuable contributions include:

  • improving documentation
  • writing examples
  • triaging issues
  • helping other users

These contributions often have outsized impact.


Learning Through Contribution

Each contribution teaches:

  • how decisions are made
  • how feedback works
  • how projects evolve
  • how collaboration scales

Open source accelerates learning through exposure.


Reflection

Think about:

  • a project you use regularly
  • a friction point you encountered
  • a small improvement you could make

That is often the best place to start contributing.

Earl Grey Badge

You've Completed Chapter 8

Well done! You've learned about contributing to existing projects.

Next Up

9: Designing a Contributor Experience