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

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

The world of open source software awaits your valuable contribution.

Featured on Hashnode

drew-beamer-3SIXZisims4-unsplash (2).jpg

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

t113w28pbqh51.webp

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

9 out of 10 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!

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.

“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.

Open source contributions

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:

Code contributors 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

1_1J7cA07ZFpuysXhGWeyGGg.jpeg

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)

1_o-vs_3hpglf3UEQWuZ_6Yg.jpeg

🔍 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

1_x-zMtnqUPMHnH1_451tCtA.png

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

1_6u51C_pl-UH3X3CbggmCjA.png

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.

1_8JLk-abafx-K0AS0eE-Wzg.png

Low or no-code contributions

1_768LIl32LnOzJVDcDFXGhQ.jpeg

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

📜 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.

1_vV17K7l2CZjZb0XTgIUsEg.png

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.

Some programs you should know as a beginner:

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

Project Recommendations

Some projects you can check out (in no particular order):

  1. Medusa
  2. Strapi
  3. Forem
  4. Cal
  5. RocketChat
  6. Fonoster
  7. erxes
  8. BoxyHQ
  9. Appwrite
  10. Devtron
  11. Amplication
  12. Penpot
  13. Karate Labs
  14. Hoppscotch
  15. Formance

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

1_J-1MC3QGbIuwq4tb-yr-iA.png

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

That’s it for today. Subscribe below and stay tuned for the next blog!

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