Open source projects

Resources

Websites wit suggestions about open source projects..

The Odin Project

Tips from Seth Godin

You’re either remarkable or invisible. The world is full of boring stuff—brown cows—which is why so few people pay attention…. A purple cow… now that would stand out. Remarkable marketing is the art of building things worth noticing. - Purple Cow, Seth Godin

Tips from Chad Fowler

A 2005 career guide with a quirky title: My Job Went to India: 52 Ways to Save Your Job written by Chad Fowler, a well-known Ruby programmer who also dabbles in career advice for software developers.

Featured among Fowler’s fifty-two strategies is the idea that the job seeker should leverage the open-source software movement. This movement brings together computer programmers who volunteer their time to build software that’s freely available and modifiable. Fowler argued that this community is well respected and highly visible. If you want to make a name for yourself in software development—the type of name that can help you secure employment—focus your attention on making quality contributions to open-source projects. This is where the people who matter look for talent.

How to start contributing to open source projects?

Okay, contributing to open source is a fantastic way to learn, build your portfolio, network, and give back to the community! It might seem daunting at first, but it’s definitely achievable, even for beginners. Here’s a step-by-step guide:

Phase 1: Preparation & Finding Your Niche

  1. Identify Your Skills & Interests

    1. What technologies do you know or want to learn? (Python, JavaScript, Go, Java, Rust, specific frameworks like React or Django, infrastructure tools like Terraform or Kubernetes, etc.)
    2. What kind of work interests you? (Web development, data science, DevOps, documentation, testing, design, community management?)
    3. What domains are you passionate about? (Gaming, science, education, social good, productivity tools?)
    4. Contributing to something you genuinely find interesting will keep you motivated.
  2. Sharpen Your Foundational Skills

    1. Git & GitHub (or GitLab/Bitbucket): This is non-negotiable. You must understand basic Git commands (clone, branch, add, commit, push, pull, merge, rebase) and the standard GitHub workflow (forking, creating pull requests). There are tons of free tutorials online (GitHub Skills, Codecademy, Udacity).
    2. Basic Programming/Tech Skills: You don’t need to be an expert, but have a foundational understanding of the language or technology the project uses.
  3. Set Up Your Environment

    1. GitHub Account: Create one if you haven’t already. Polish your profile a bit (picture, bio).
    2. Install Git: Make sure Git is installed on your local machine.
    3. Code Editor/IDE: Have your preferred editor ready (VS Code, PyCharm, Vim, etc.).
  4. Find Projects: This is often the trickiest part. Here are some strategies:

    1. Tools You Already Use: Think about the open-source software or libraries you rely on daily. Check out their GitHub repositories.
    2. GitHub Explore: Use GitHub’s explore section (github.com/explore). Filter by topics, languages, or trending repositories.
    3. Good First Issue Aggregators: Websites specifically designed to help beginners find suitable issues:
      1. goodfirstissue.dev
      2. up-for-grabs.net
      3. firstcontributions.github.io
      4. codetriage.com
    4. Awesome Lists: Search GitHub for awesome [topic] (e.g., awesome python). These lists often link to active open-source projects.
    5. Company Open Source Pages: Many tech companies have dedicated open-source program offices (OSPOs) or pages showcasing their projects (e.g., Google, Meta, Microsoft).
    6. Look for Specific Labels: On GitHub Issues, projects often use labels like:
      1. good first issue
      2. help wanted
      3. beginner
      4. documentation
      5. easy / low-hanging-fruit

Phase 2: Understanding and Engaging with a Project

  1. Choose ONE Project (to start)

    1. Don’t overwhelm yourself. Pick one that seems interesting and reasonably active.
  2. Read the Documentation (Seriously!):

    1. README.md: This is the front page. Understand what the project does, its goals, and how to set it up.
    2. CONTRIBUTING.md: Crucial! This file outlines the project’s contribution process, coding standards, expected workflow (forking, branching conventions), and how to submit changes. Read it thoroughly.
    3. CODE_OF_CONDUCT.md: Understand the community norms and expectations for respectful interaction.
    4. Installation/Setup Guide: Try setting up the project locally. This is a great way to understand its dependencies and structure. If you encounter issues, that might even be your first contribution (improving the setup docs!).
  3. Lurk and Learn

    1. Watch the Repository: Use GitHub’s Watch feature (try Releases or Participating to avoid being flooded).
    2. Read Issues: See what problems people are reporting, what features are being discussed.
    3. Read Pull Requests (PRs): Look at recent merged PRs (especially small ones) to understand what successful contributions look like and how the review process works. Pay attention to the discussions.
    4. Join the Community (if applicable): Does the project have a mailing list, Discord server, Slack channel, or forum? Join and listen in. Don’t feel obligated to talk immediately.

Phase 3: Making Your First Contribution

  1. Find Something Small to Work On:

    1. Good First Issues: Start with those labeled issues. They are usually well-defined and don’t require deep project knowledge.
    2. Documentation: Typos, unclear explanations, missing steps in setup guides are excellent first contributions. They are valuable and usually easier to get merged.
    3. Writing Tests: If you understand a piece of code, adding unit or integration tests is very helpful.
    4. Bug Triage: Reproduce reported bugs and add more information (logs, screenshots, steps to reproduce).
    5. Answering Questions: If you’ve learned something about the project, help answer questions in the issue tracker or community channels.
  2. Claim an Issue (if necessary)

    1. If you find an unassigned issue (especially a good first issue) you want to tackle, leave a polite comment asking if you can work on it (e.g., “Hi, I’d like to try working on this issue if it’s still available!”). Wait for a maintainer to respond before diving deep.
  3. Follow the Contribution Workflow (Usually):

    1. Fork: Create a personal copy of the repository on GitHub.
    2. Clone: Clone your fork to your local machine.
    3. Branch: Create a new branch for your changes (e.g., git checkout -b fix-readme-typo or git checkout -b feature-new-button). Use descriptive branch names.
    4. Code/Edit: Make your changes. Keep them focused on the specific issue you’re addressing.
    5. Test: Run any existing tests. Add new tests if appropriate. Make sure the project still builds/runs.
    6. Commit: Write clear, concise commit messages. Follow project conventions if they exist (often mentioned in CONTRIBUTING.md).
    7. Push: Push your branch to your fork on GitHub (git push origin fix-readme-typo).
    8. Create a Pull Request (PR): Go to your fork on GitHub. You’ll usually see a prompt to create a PR from your new branch to the original repository’s main branch.
      1. Write a clear PR title and description.
      2. Reference the issue number it fixes (e.g., Fixes #123).
      3. Explain what you changed and why.
      4. Mention any testing you did.
      5. Follow any PR templates the project provides.

Phase 4: The Review Process and Beyond

  1. Be Patient and Responsive

    1. Maintainers are often busy volunteers. It might take time for your PR to be reviewed.
    2. Respond politely to feedback and review comments. Ask clarifying questions if you don’t understand something.
    3. Be prepared to make changes based on the review. Push updates to the same branch, and the PR will update automatically.
  2. Celebrate (Even Small Wins!)

    1. Getting your first PR merged is a great feeling!
  3. Stay Engaged

    1. Look for another issue.
    2. Help review other contributors’ PRs (if you feel comfortable).
    3. Participate in discussions.

Key Tips for Success

  1. Start Small: Don’t try to refactor the entire codebase on day one. Fix a typo, improve a doc string.
  2. Communicate Clearly and Politely: Be respectful in issues and PRs.
  3. Read the Guidelines: Seriously, CONTRIBUTING.md is your best friend.
  4. Don’t Be Afraid to Ask Questions: But show you’ve done your homework first (read the docs, searched existing issues).
  5. It’s a Marathon, Not a Sprint: Building reputation and making significant contributions takes time.
  6. Non-Code Contributions are Valuable: Documentation, testing, issue triage, community support are all vital.

It is a rewarding journey.


Links to this note