A Beginner’s Guide to Open Source Contribution (Code & No-code)

What is open source contribution, how to get started with code or no-code contributions.

A Beginner’s Guide to Open Source Contribution (Code & No-code)

The world of open source software awaits you and your valuable contribution.

Table of contents

1. Introduction

2. What is Open Source Software

3. Who is involved in Open Source Projects

4. Open Source contributions

5. Common misconceptions

6. Types of OSS Contributions

a. Code-based contributions
b. No-code or low-code contributions

7. Terms you should know

8. Ways to contribute (with pro tips)

9. How to get started

10. Project Recommendations

Photo by Drew Beamer on Unsplash

Hello, World!

Nope, this isn’t a cliché intro. The significance of these 2 words is worlds larger for a new developer. :)

(It’s a computer program that displays “Hello, World!” to a user — serves as a common first exercise for learning a new programming language.)

In this blog, you’ll learn what open source contributions are and how you can contribute — regardless of your background.

What is Open Source Software

Open source software is software that can be freely used, modified, and shared by anyone.

Nine out of ten companies use open source software. It has been the foundation for some of the largest companies and projects.

💡 Fun Fact: Without open source, Facebook, Google, Amazon, and nearly every other modern technology company wouldn’t even exist!

Check out this blog to know more about all the basics of open source software! ⬇️

What’s the Open Source hype all about?

An intro to open source and commercial open source software (COSS)

medium.com

Who all are involved in an open source project

A typical open source project has the following types of people:

Author: The one(s) who created the project.

Owner: The one having administrative ownership over the organization or repository. (may or may not be the author)

Maintainers: Contributors who drive the vision and sustain the project. (may or may not be the author/owner)

Community Members: The ones who use the project. Usually actively communicating, sharing feedback on the project.

Contributors: The ones who contribute something back to the project.

Photo by Tim Gouw on Unsplash
“I need to have a lot of experience”
All experience levels matter in some way or the other. ✔️

“It is extremely complicated to contribute”
Start small and ask for help — the community is there for you. ✔️

“I need to have a technical background”
Non-technical contributions also exist. ✔️

“I must have it all figured out to start”
You don’t need to — you can figure it out along the way! ✔️

“I have to have a developer background to contribute”
Not necessarily. Different backgrounds are helpful in different ways. ✔️

“My contribution has to be huge to actually make a difference”
Smaller contributions also lead to significant value-add. ✔️

I can’t ask for help from others”
Open source revolves around the spirit of collaboration! ‘nuff said.

Contributions can take the form of new components or features, changes to existing features, tests, documentation, bug fixes, optimizations, or just good suggestions.

Source: Code Contributions (adobe.com)

Contributors can be classified into 2 categories:

  1. Code contributors
  2. Low or no-code contributors

Code-based contributions

As the name suggests, code contributors or developers make code-based contributions to a project.

These contributions are related to building features or viewing, reviewing, understanding, modifying, fixing issues/bugs in the source code of a project.

Some basic prerequisites

  • A technical background
  • Understanding programming language(s)
  • Familiarity with version control systems

Terms you should know

Photo by Edho Pratama on Unsplash

GitHub: GitHub is a web-based version-control and collaboration platform for software developers.

Git: Git is free and open source software for distributed version control.

Public Repository: A public repository can be viewed by anyone, including people who aren’t GitHub users.

README: A text file containing information about the project in a repository — with instructions, help, or details about the patches or updates.

Documentation: A set of information that describes a product to its users, including what it is, how it operates, and how to use it.

Clone: A clone is a copy of a repository that lives on your computer instead of on a website’s server somewhere, or the act of making that copy.

Fork: A fork is a personal copy of another user’s repository that lives on your account — helping you freely make changes to a project without affecting the original upstream repository.

Issue: Issues are suggested improvements, tasks or questions related to the repository. They can be created by anyone (for public repos)

Label: A tag on an issue or pull request. Repositories come with a handful of default labels, but you can create custom labels.

Merge: Merging takes the changes from one branch (in the same repository or from a fork), and applies them into another.

Branch: A branch is a parallel version of a repository. It is contained within the repository, but doesn’t affect the primary or main branch for you to work freely without disrupting the “live” version.

Pull request: Pull requests are proposed changes to a repository submitted by a user and accepted or rejected by a repository’s collaborators.

Commit: A commit, or “revision”, is an individual change to a file (or set of files). They usually contain a message which is a brief description of what changes were made.

Source: GitHub glossary — GitHub Docs and Topics on GitHub · GitHub

Ways to contribute (code contributions)

Photo by Oskar Yildiz on Unsplash

🔍 Find and report bugs

Where there’s a software project, there are bugs

This is usually a good way to get started with code-based contributions. Projects are likely to have errors and bugs. Once you find a bug, submit an issue. Tracking and identifying bugs helps save a ton of developer time. It also eases maintainers’ lives.

Note: Reporting a bug also involves providing the steps to reproduce it.

Pro-tip: Always go through an issue tracker to figure out whether a bug has already been identified.

🛠️ Fix bugs

This goes one step beyond identifying issues. Once you’ve found a bug and have the ability to fix it — go ahead and submit a pull request (PR) with its fix.

Note: Bug fixes are sometimes temporary workarounds until a better solution can be implemented.

Pro tip: Avoid trying to solve bugs you don’t fully understand.

✍🏻 Write a test

Testing code and features is critical to software projects — to verify expected functionality and usability. There’s always room for more tests in a test suite. There are many types of tests but they’re broadly manual or automated.

Note: Test scripts and test cases are different. The former is a short program for testing a specific function; while the latter is a detailed document with steps.

Pro tip: Think of test cases as snack bars, test suites as a vending machine, and test plans as the room having the vending machine.

Add a feature

Some of the best things about open source are flexibility and room for innovation. Recommending or adding relevant features is a great way to contribute! The usual steps are filing an issue (with the feature, why it’s needed, an example), forking the repo and creating a new branch for it.

Note: This contribution requires more experience and maturity as a developer. Adding new features includes updating the documentation.

Pro-tip: Always ensure you review the code and maintain the original coding style — pretty much like following brand style guidelines.

Note: The above list of contributions shares a high-level overview. The step-by-step approach is a topic for another day.

Contributing in a parallel universe 😉

Low or no-code contributions

These contributions do not require a technical background. They’re open to various other non-engineering roles like writers, designers, speakers and more.

“Open source is the default way to build software now. And non-code contributions help create, manage, and sustain these projects.”

Navendu Pottekkat, OSS contributor and maintainer

Types of no-code contributions

Photo by Dell on Unsplash

📜 Documentation

A highly underrated way of contributing to open source. Documentation is the means for anyone to understand what the project is all about. Clear and easy to understand documentation is helpful for everyone. You can always improve existing documentation by fixing errors, adding missing steps etc.

Note: A fresh set of eyes can always spot deficiencies, gaps and potential way better than the ones who are well-versed with the project.

A 🎬 example: Think of Tony Stark from Iron Man 2. He had a new perspective towards his dad (Howard Stark)’s documentation on the Stark Expo — and (re)discovered a new element.

✍🏻 Writing

As a writer, you can get started with contributing to open source documentation as a technical writer, content writer, UX writer or editor. You can also use your skills to write or edit blogs, tutorials, guides (for developers, users, newcomers) and other relevant collaterals.

Note: Writers from technical and non-technical backgrounds are uniquely relevant as contributors.

Bonus: You can also work as a ghostwriter for open source maintainers’ social handles.

🎨 Designing

Designers can add immense value to open source projects. Improving the design language of a project, adding missing elements, designing a brand style guide, icons, logos, improving the UI/UX of the product/ website are some of the ways you can contribute.

Note: Even designers should have a GitHub profile and submit pull requests for design changes.

💡 Bonus tip: You can design a brand style guide or social media creatives.

👥 Community Management

Good open source projects usually have strong and active communities — on platforms like Discord, Slack (beyond GitHub.) Being a community manager is a great way to help the members navigate and resolve their doubts and concerns. Managing and moderating communities is a full-fledged role today.

“Active communities in open-source speed up innovation in three ways. They respond to current trends in technology, have frequent release cycles, and have vast redistribution of the software.”

— Sandra Dindi

💬 Translating

Open source software is for and by developers all across the world. It encourages inclusivity and has projects in many different languages. Translation is an important skill set to bridge gaps and open new user bases — surpassing limitations.

💻 Content Creation

Content creation in any form (text, audio, video) is an underrated way of contributing to open source. The plethora of platforms encourage distribution and it’s a great way to help OSS with marketing as well. Examples: Social media posts, blogs, podcasts, tutorials etc.

🔊 Advocacy

“I alone cannot change the world, but I can cast a stone across the waters to create many ripples.”

The essence of advocacy is about creating a ripple effect. Awareness is the first step towards any change. There are various means and ways to contribute as an open source advocate or evangelist—social media content creation, public speaking etc.

✂️ Video editing

Video editing is another useful skillset that can help with marketing and distribution activities. It’s also required for editing tutorials, creating video walkthroughs, and helping open source maintainers or influencers with content creation.

How to get started

Look for projects that you might be interested in, or start with the ones you must’ve already used.

Go to their GitHub Repository, read their documentation, go through their issues and look for their community platform — Discord, Slack or an IRC channel.

IRC stands for Internet Relay Chat. It was insanely popular back in the day, and is apparently, still selectively around.

Ask questions, seek help from others, and try to follow best practices.

Note: Always read a project’s licenses and contributor’s guide before getting started.

Hacktoberfest

Hacktoberfest is a month-long celebration of open-source projects, their maintainers, and the entire community of contributors. It starts on 26th September and ends on 31st October.

The values of Hacktoberfest:

Everyone is welcome 💙
Quantity is fun, Quality is key
Short-term action, Long-term impact

The participation rules are simple:

1. Visit the official Hacktoberfest website and register yourself as a contributor.

2. Browse through projects and narrow down your search of issues using labels.

💡 Tip: Use the label ‘goodfirstissue’ if you’re a beginner.

3. Find relevant issues to contribute to, and submit your pull requests.

4. If 4 of your pull requests get accepted, you get a chance to win official badges & merchandise or a tree planted in your name!

In 2022, Hacktoberfest encouraged non-code contributions more than ever! You can learn more here.

Some projects embracing Hacktoberfest:

  1. Medusa
    2. Strapi
    3. Forem
    4. Redoc
    5. RocketChat
    6. Meilisearch
    7. Docusaurus
    8. BoxyHQ
    9. Appwrite
    10. Devtron
    11. Amplication
    12. Hoppscotch

Fun Fact: Over 90k projects on GitHub participated in Hacktoberfest in 2022!

Here are the projects you can contribute to, by GitHub.

Source: GitHub

🎁 Bonus: GitHub — EddieHubCommunity/hacktoberfest-practice

Other programs you should know

1. Google Summer of Code (GSoC)
2. Rails Girl Summer of Code
3. GirlScript Summer of Code
4. Outreachy
5. MLH Fellowship

Check out this blog for more open source programs!

🎁 Bonus: Follow Eddie’s Twitter and the EddieHub community if you don’t already! Thank me later :)

Grateful to XKCD comics for the fabulous comic strips we’ve used in this blog! ✨

That’s it for today. Stay tuned for more!

Follow Scoutflo on Twitter, Medium and Linkedin to learn more about the open source ecosystem! 🚀