While when one thinks about contributing to open source, the first thoughts are usually about writing code. Nonetheless, there are more fun ways that you can make your contribution other than coding, These include:
- Starting an Open Source project.
- By being an open source Evangelist
- Reviewing a project
- signing-up as a Preview user / Beta test user
- Mentoring developers & Being a Subject Expert by answering questions
- Creating Educational materials and Content
- By signing-up as a Preview user / Beta test user
- Contributing to Documentation
- Organizing Conferences/meet-ups
Now let's discuss these fun ways in detail …
Have you thought about a cool solution that you think can be implemented with technology? Is it something that could interest other developers? Well, you may not know how to code but you may contribute by making that first step to establish that cool idea as an open source project.
- Give your project a a good descriptive name.
- Author a public document describing the project, its purpose and vision.
- Spread the news out to developers through a communication channels like Online Forums, a mailing list or at a tech event.
- Request an early adopter to open a repository, submit a contributor's guide so that other developers can easily get started contributing.
- You are all set! The other way of going about this would be attending an open-source sprint, sharing about you project and getting team-mates to start hacking off.
An Example of an Open Source project that can be started by a non-programmer is awesome-electron which is just a dev interesting resources list. As Idan Arye notes in the comments, this is mostly possible for none code projects to avoid the 'build it for me' cliche 🤔.
As a project evangelist, you have some technical knowledge but you don't have to be a developer. Your main duty is to invite contributors to the project through events, hackathons, digital communication and make it easy for people to get started by maintaining relevant documentation like Readme, Contributing guides, and introducing the project to people at open source sprints.
An evangelist may also have to invite users to the project so as to solicit their feedback and forward it to the developer contributors. This role would make good use of your marketing genius too.
How to become an evangelist:
- Find out what problems the solution can solve
- Define who your target developer is. You have to narrow down your target audience as developers are not interested in the specifics of stacks they don't use.
- Find out about the technology used to develop the solution
- Establish quick steps on how one can get started contributing to the project
- Create content like videos, blogs, slides that you can share or present to developers covering the above points.
A reviewer is a person who visits the project github repo, project website, looks through the product and gives feedback on what improvements can be made and what may need more focus.
A reviewer could send feedback like:
- "Hi, I had a quick look at your project and realized that it is written in Python 2.7. I would advise you to move to Python 3 as soon as possible as Python 2 maintenance ends early next year"
How to become a Reviewer:
- Visit the project website or have a look at the product
- Provide actionable feedback to the developers through comments and opening GitHub issues.
As a user, you are arguably the most important part of an open source project, for if it were not for you, why would anyone build it? A user will deploy the solution, through download or installation and by attempting to use it, they are usually the first people to give feedback, discover bugs, caveats and hangs in the software.
How to become a contributing User:
- Download/install the tech solution by visiting a project download page. Example in case is VS Code,
- Use the technology and look out for any abnormal/unexpected behaviour and errors that may occur.
- Provide descriptive and actionable feedback to the developers through comments and opening github issues.
Furthermore, a user will only be important to an open source if they provide direct feedback to the maintainers by opening issues on the project github repo or by accepting to submit anonymous usage data to the developers about their interaction with the technology.
Below is an example of a pop-up requesting for user feedback on the VS-Code project.
As different from a normal user, a test user is usually referred to as an insider because they start using the product or the latest version of it before it is available to the general public. This is to provide the developer with early advice to avoid obvious mistakes that cause user-outcry due to errors caused by changes in new releases.
An example of doing this is downloading pre-release versions of products/software like these Python pre-release versions.
Any open source technology needs users who have used it, explored it and are willing to help out by answering questions from new users and providing advice when needed. If you have answered a question from other users about the use of open source software like on StackOverflow (example: React Questions), You have made a huge contribution to that open source so stand proud of yourself.
A content creator is similar to a subject expert/ Mentor but they go ahead and create materials that can be used by developers to learn about the open source solution and to acquire skills in using the same. Good examples would be blog posts like this one, Video tutorials like this VueJs Class, or writing a book (like AutomateTheBoringStuff with Python)
In this role, you will help by reviewing and editing project official documentation with intention of keeping it relevant to changes in code, keeping it simple to use for various audiences and skill levels and making sure it is easily accessible and easy to explore for user looking for guidance.
An example would be contributing to the Tensorflow documentation sprint that has been running this year.
This is similar to the the content creator but they play quite different roles. A meet-up organizer plays the role of creating, organizing and volunteering to help run events that are based off of open source software.
Examples of open-source conferences include PyCon, Docker-Con and many others.
Those are some of the ways you can contribute to Open source as a non-coder. Do you know of any others? Post them in the comments below.
If you feel comfortable with writing code. Let me outline some quick steps for you to get started contributing to open source:
- Identify your target open source project. Its better if this is a project you use daily in your work. An example could be Tensorflow.
- Read the project Readme to learn more about the purpose of the project.
- Read the contributing guide or dev guide of the project to find out how to set up the project on your local machine to get started writing code. An example is the VS-Code developer guide here.
As a developer, there are many ways you can help out on an open source project. The most common ones are:
- Writing code that implements new features.
- Creating patches / solving bugs reported as issues by users.
- Improving documentation by solving an issue like this one.
- Reviewing Pull requests of other developers by advising them on how to refactor and improve their code for example ensuring that python code is PEP8 conformant.
- Writing unit tests for existing code that has no tests in the code base to improve test-coverage.
Whether you are a beginner at coding or Expert Developer, the HacktoberFest Challenge is open to every one and you can win lots of Swag for your contributions. Do it!