Skip to main content

Types of Open Source Contributions

Contributions to open source projects can take many forms, such as coding, documentation, testing, and more. It is important to note that open source contributions are not limited to developers only. Anyone can contribute to open source projects, regardless of their technical skills.

In this chapter, we will discuss the non-coding and coding types of contributions in open source.

Non-Coding Contributions

Non-coding contributions are types of contributions that do not involve writing or modifying code. However, they are essential for the sustainability and growth of open source projects.

These types of contributions allow individuals with various skills and backgrounds to participate and make meaningful contributions to the software and the community. You can read this article to learn more about contributing to open source projects without knowing how to code.

Next, we will talk about some common non-coding contributions.


Are you a lover of words? Do grammar errors irritate you? Do you like breaking down complex problems or helping people learn? Then, documentation is for you!

Documentation is crucial to open source projects. It involves creating, improving, or maintaining the written resources accompanying open source software projects. Documentation can make a project more accessible and user-friendly, help attract new users, and encourage repeat contributions to the project.

Tips for Contributing to Documentation

If you are interested in contributing to documentation, here are a few tips that you might find helpful:

  • Read the entire documentation.
    Reading the whole documentation will help you better understand the product and how to use it.

  • Find a task that fits your skills and interests.
    If you're unsure where to start, look for issues or discussions you believe you can solve before reaching out to a maintainer.

  • Use the product.
    Using the product yourself will help you gain user insight and help you determine which information needs to be added to or removed from the documentation.

  • Be patient and persistent.
    Writing good documentation takes time. Don't be afraid to ask for help if you need it.

Examples of Documentation Contributions

Now, you might wonder what you should do to contribute to a project's documentation. Here are some examples of what to contribute:

  • Write or update the README file
    If you see that a project needs a README explaining how to install and use it, you can offer to write one. Or, if you notice information or instructions are missing from the README, you can create an issue and suggest how to update it.

  • Create a tutorial
    When the documentation about a feature is unavailable, you can address this and create a tutorial that guides users through the feature.

  • Update documentation
    Sometimes, a project has new changes or releases, but the maintainers still need to update the documentation. You can help update the documentation to reflect these new changes.

  • Translate documentation
    If you are proficient in other languages, you can help a project by translating the documentation to expand its reach to more users.

  • Fix typos and grammatical errors
    Although they seem small, fixing typos and grammatical errors can help maintain consistency and clarify the documentation.

Graphic Design

Are you a creative person who's into design? If so, you might want to consider contributing to an open source project through design.

This contribution involves creating visual assets for open source projects, such as logos, icons, illustrations, website designs, and other graphical elements. These visual assets play a significant role in enhancing the project's overall user experience and branding. Graphic design contributions can make open source software more appealing, user-friendly, and recognizable.

Here are some examples of what to contribute through design:

  • Logo and branding
    Designing a unique and memorable logo for an open source project can help establish its identity and brand. A well-designed logo can make the project recognizable and give it a professional image.

  • Icon design
    Icons are essential for user interfaces. You can create custom icons for software applications or websites, improving the visual appeal and usability of the project.

  • Website design
    Open source projects often have websites to provide information and documentation about the project. You can contribute by designing website layouts, graphics, banners, and other visual elements to make the site more attractive and user-friendly.

  • User Interface (UI) design
    UI design is crucial for software projects. You can create mockups, wireframes, and high-fidelity designs for the user interface, making it more intuitive and visually appealing.

  • User Experience (UX) design
    By considering how users interact with the software, you can contribute to improving the overall user experience. This includes designing user flows, navigation, and usability testing.

  • Accessibility design
    Software and websites must be accessible to all users, regardless of whether they have disabilities. You can contribute, for example, by creating accessible color schemes and contrast or positioning visual elements within the project. You can help ensure all visual elements are clear and easy to use.

  • Responsive design
    Designing visuals that work well on various devices and screen sizes is crucial for modern web applications. Responsive design ensures the project looks good and functions properly on desktop and mobile devices.

Content Creation

Contribution through content creation—blog posts, videos, or streaming—involves researching, writing or recording, editing, and publishing the content. The goal is to inform and educate others on a particular open source software, project, technology, or best practices to attract more users and contributors. Like documentation, you don't necessarily have to know how to code to create these contents.

Here are some ideas about what to create:

  • Latest features
    You can share the latest features of an open source project, such as a new version of the software or a new plugin.

  • Tutorial
    Most of the time, documentation has limited space to explain the project in detail to accommodate all levels of users. You can take this opportunity to target particular audiences and create a tutorial on installing and configuring the software or using it.

  • Impact
    You can consider sharing about an open source project's impact on its users. Why do they want to use it, or what are the benefits of using the software? That way, you are helping to promote the project to gain more users.

  • Open source best practices
    Although many content creators have shared information about how to use Git and GitHub or how to contribute to open source, whenever you learn something new, you can always share it through your content. You never know if what you create can inspire and help others contribute to open source.

Coding Contributions

Coding contributions power open source development. They entail writing, modifying, or improving the actual source code of an open source project, directly impacting the software's functionality and quality.

Contributors collaborate with project maintainers and the community to ensure their code contributions align with project goals and coding standards. Open source projects typically have guidelines and processes for accepting and integrating coding contributions, such as code reviews and continuous integration.

Here are some examples of contributions you can make to a project with your coding skills:

  • Write new code
    This is the most common type of coding contribution. You write new code to add features or enhance the functionality of an open source project.

  • Bug fix
    Identifying and fixing bugs is a critical coding contribution. You locate issues within the codebase, diagnose them, and then write code to fix them. Bug fixes improve the software's stability and reliability.

  • Code refactor
    Refactoring code involves restructuring and improving existing code without changing its behavior. This helps enhance code readability, maintainability, and scalability, which are vital for the project's long-term health.

  • API design and maintenance
    You can contribute to projects with public APIs by designing, maintaining, or improving the API to ensure its quality and reliability.

  • Feature development
    You can help implement new features or functionalities in response to user needs or project goals. Feature development involves planning, designing, and coding new components or capabilities.

  • Performance optimization
    You can contribute to optimizing the software's performance by improving algorithms or optimizing resource usage. This type of contribution aims to make the software run more efficiently.

  • Testing and Quality Assurance (QA)
    Writing automated tests, including unit tests, integration tests, and end-to-end tests, is a coding contribution that ensures software reliability. Testing helps catch and prevent regressions and issues.

Congratulations on finishing this course! Let's recap what you have learned in the next chapter.