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.

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.

Next Up

Chapter 9: Designing a Contributor Experience

0 / 13 completed
Previous