Are you looking to make contributions to open source and are wondering how best to go about it? Here is a detailed and comprehensive guide with adequate information for beginners and pros.
Why you should contribute to Open Source
Seeing as open source software is made accessible and free to all, there are many rewards attached to developing and contributing to the same. Developers stand to gain a lot from the exercise, mainly when they contribute often. Here is a breakdown of some benefits of contributing to open source.
Improving your skills
Open source projects come with a lot of demands, so many skills and applications are required to accomplish the tasks. This characteristic accords you as a contributor the opportunity to practice and build on skills you already have, and to acquire new skills as well.
Contributing to open source will allow you to practice in many fields that include (but are not limited to) graphic design, coding, writing, user interface design, organizing, and many others.
To improve software that you and others use often
Most open source contributors almost always use software before they make a contribution to it. By using it, you are able to identify various bugs and flaws, making it easy for you to make contributions aimed at fixing the bugs. In so doing, you get the software to work better, making work easier for you and for numerous other users who are going to use it with and after you once it is fixed.
In addition, you save others a lot of time and resources, especially those with limited skills and the ability to identify and fix bugs in software.
To teach and learn from others
When you are working on an open source project which involves other parties, you are bound to encounter challenges and solve them. For this reason, you will be in a position to teach other people how to go through similar challenges. When you make inquiries, you get help from those in your community. This accords you the opportunity to learn new skills and techniques from them, and to also teach them how you go about your contributions.
This symbiotic relationship allows growth among many people at the same time as opposed to when one works by themselves.
To build a network of like-minded individuals
One of the benefits of contributing to open source is that you get to build a network of people who have similar interests. You may, in the long run, end up with a community of colleagues-turned-friends that you can depend on for many things throughout your life.
To learn how to deal with people of different personalities
When working with various teams, you are bound to interact with them in one way or another. What this means is that you acquire the ability to deal with different people and various circumstances. You will acquire such skills as leadership, conflict resolution, crisis management, delegation, work prioritization, organization, and others.
To build a personal portfolio as well as a reputation
Working on open source projects accords you the opportunity to build a portfolio that proves the skills and abilities you have. You can use the said work samples as demonstrations to potential clients where skill is needed. In addition, you will be able to build on your reputation particularly because you can take credit for contributions made to certain software.
It is a gratifying endeavor
As humans, we have the tendency to gain satisfaction and a sense of accomplishment when we complete tasks efficiently. Contribution to open source also provides the same opportunity as it gives you a sense of empowerment once you fix a bug or develop software to work better and more efficiently. The simple knowledge that you have made software more reliable and easier to use will give you a sense of accomplishment and gratification.
Contributing to Open Source – What it entails
As a new contributor to open source software, you can find the process a bit difficult, and even unnerving. A step as simple as identifying a suitable project can be confusing, and a lot of the time, you may feel intimidated, question your skills, and even be afraid of making mistakes.
There are, thankfully, many ways to contribute to a project where multiple skills and levels of experience are required. Here is how to identify a suitable project and how to thrive in the same with little skill.
Go beyond coding
One of the biggest misconceptions that many people have is that open source is all about coding. The truth is that there are many other skills and contributions that are just as relevant as coding. In most instances, contributors pay little attention to other areas such as writing, so it would do you a whole lot of good to make a pitch that does not include coding. Here are a few areas that may prove lucrative for you.
Work as a designer
As a designer working on an open source project, you can;
- Redesign and restructure the layout of a project to improve its usability
- Create and implement a style guide that will give the project a compatible visual design
- Improve and reorganize the project’s menus and navigation from feedback obtained from a comprehensive user research
- Create art for merchandise like mugs, water bottles, T-shirts, and even the logo
Make contributions as a writer
As a writer, you can implement certain tasks such as;
- Creating or improving the project’s documentation
- Writing tutorials detailing certain aspects of the project
- Writing up translations for the project’s documentation
- Writing highlights from the project’s mailing list or creating a newsletter for the project
- Creating a folder containing samples and demonstrations on how the project works and how users can navigate it
Plan events for the project
If your strength lies in planning events, you can contribute to a project by;
- Organizing meetups or workshops pertaining to the project
- Come up with and submit proposals for conferences, and speakers and help community members identify suitable conferences around them
- Organize conferences for the project if they hold any
Work as a coder
If coding is your forte, you can;
- Improve the tooling and testing of the project
- Identify an open bug or issue to correct
- You can create or write a new feature for the project
- You can work on the project’s setup system for better user-friendliness
Help other people code
If, as a coder, you like to go the extra mile, you can;
- create tutorials and demonstrations on how a project can be used
- Review the code on other contributor’s submissions
- Teach other contributors and offer mentorship to interested parties
Work as an organizer
As an organizer, you can accomplish some of the following tasks;
- Identify old issues and close them as you go through new open ones
- Create links for duplicate issues and create new issue labels to keep everything organized
- Ask questions and make contributions to new issues that are relevant to a particular project
Offer help to other contributors and users of the project
When working on a certain project, you can help its users by;
- Giving information and answering questions about the project on various online platforms such as Quora and Reddit
- Act as a moderator for conversation channels and discussion boards pertaining to the project
- Answer people’s questions regarding open issues
Utilize your skills on non-software projects
While most open source projects almost always involve working on software-based tasks, there are other functions on which you can work that do not involve the same. You can contribute to a project by working on such items as stationery (books, lists), creating lists, and curating creativity programs for users and other contributors as well.
These tasks can also be performed by software developers (especially beginners) looking to get into open source projects in the long run. Such tasks will provide an opportunity for you to develop your skill and confidence, and they will also help to build on your experience level and portfolio.
Learn the ins and outs of new potential projects
Making a contribution to a project by fixing a bug, no matter how small, can prove an intimidating task. One of the most important aspects and considerations that one should make is what the software at hand is all about, and whether or not a certain aspect needs fixing.
Before you start to make contributions, it is important to know everything about the said software, right from how it works, its developers, how it is used, and so forth. With this knowledge, you will be in a position to make solid contributions that make an impact and that can also be noticed.
What are open source projects comprised of?
Every open source project comes with its own community, and every community has its own unique footprint. This is why it is important for contributors to work on various projects in the long run. Different projects have different contributors, lexicons, work systems, communication styles, and so forth. Working on different projects accords you the opportunity to learn the different ways various projects are handled and run.
Regardless, almost all projects present a similar organizational structure with each player assuming a different role than the other. A typical open source project will have the people outlined below;
- Project Owner;
This is the person who claims ownership of the depository or entire organization. Note that they are not always the author of the project.
- Project Author
This refers to the individual or organization that came up with the project.
These are all persons who have made a contribution to the project in one way or another.
These are the persons charged with driving the project’s vision as well as overseeing the organizational aspects of the whole project. In some instances, the maintainers are also the owners or authors of the project.
- Users/ Community members
The project’s community is largely comprised of persons who use the project. They also offer feedback regarding the project as well as suggest the general direction in which the said project should head.
The people outlined above largely comprise small and medium-sized projects. Larger ones may include more players tasked with various other responsibilities. When going through a large project’s website, you may find such players as organizers, event planners, triage teams, community moderators, and others.
Apart from the listed personnel, a project also comes with documentation. You will find these files listed in the top part of the depository. Here are the documents you can expect to see on a project;
Every open source project is required to have an open source license. This means that any project without this license is not an open-source project.
This is an instruction manual designed to welcome community members to the project. It also details why the project is useful and how to navigate and use it.
Unlike Readme documents which detail why and how to use certain software, the Contributing document file is made to help people contribute to the project. It explains in detail why certain contributions are necessary and how the contribution process works. Note that not all open source projects will have a Contributing file, but the presence of one is an encouragement to would-be contributors to study it closely and add value where they can.
- Code of Conduct
As the name suggests, the Code of Conduct details how all members should behave and associate. It seeks to maintain a healthy environment for all stakeholders that is conducive for everyone involved. The presence of a CODE OF CONDUCT indicates that the project is a friendly one that welcomes contributors.
Bigger projects sometimes come with other forms of documentation, some of which may include governance policies, walkthroughs, tutorials, and other similar works.
Apart from the documentation detailed above, open source projects also come with certain tools which aid in the organization of discussion. A walk through its archives will give you a clear insight into how a project’s community thinks and operates. Here are a couple of common tools;
- Pull requests – This is where people review and discuss changes in progress
- Issue Tracker – This is where community members discuss issues pertaining to the project
- Synchronous chat channel – Some platforms may take advantage of synchronous chat channels to discuss collaborations, have quick exchanges, or for casual conversation.
- Mailing lists or discussion forums – This platform offers a channel for conversational topics such as “How do I..” and so forth.
identifying a suitable project to contribute to
This is easily the most difficult and possibly most important part of contributing to open source. The good thing is that there is always an abundance of projects that need and welcome open source contributions from people of different skills and experience.
The best way to identify a project on which to work is to look closely at the projects you already use, that you are looking to use in the future, or that are used in abundance across the globe. They make excellent choices because you are bound to come back to them in your day to day activities even in the future.
As you interact with the projects and different software, you may identify flaws or come up with ideas that could make the project work or run better. These would make excellent points at which to start. If a certain contribution seems too complex for your skill level, start with the simplest and work your way up.
Some of the most common places to start are README documents. You can begin by scanning it and seeing whether or not there are areas of the same that need fixing or improvement. It could be something as simple as a typo – go on and start there.
It has been statistically proven that up to 28% of open source contributions stem from fixing typos, documentation, writing translations, and reformatting.
Below are a few links and resources that can help you identify and contribute to many projects;
Picking a project – A step-by-step guide
Once you have identified a project to which you can make your contributions, it is imperative that you do a scan that lets you know whether or not the project is suitable for accepting any contributions made. You do not want to have worked on a project only to not get a response in the end.
Here are a few aspects to look into to tell whether or not a project is suitable for new contributions.
The Project meets the definition of an open source
- Does the identified project have an open source license? There should be a file labeled LICENSE in the root of the depository
The Project actively accepts contributions
- When was the most recent commit?
- How many contributions does the project have?
- How often do people commit?
Next, look into the project’s issues
- Are issues responded to quickly by maintainers when they are raised by contributors?
- Can you identify active discussion on said issues?
- Are the said issues recent?
- Are the raised issues getting closed?
Look into the pulled requests
- How many open pull requests are available?
- Do maintainers respond promptly to pull requests?
- Are there active discussions on open pull requests?
- Are pull requests recent?
- How recently were pull requests merged?
The project is welcoming
A welcoming project will be open and friendly to new contributors
- Do maintainers give helpful responses to issues raised?
- Are people friendly in chats, discussion forums, and issue discussions?
- Do pull requests get reviewed?
- Do maintainers thank contributors?
How to submit your contribution
Once you have identified and worked on a project, here is how you should go about submitting a contribution.
Start by communicating effectively
As a contributor, one of the most important things to do is to successfully communicate and work with others. Before engaging a pull request, or asking a question;
Explain what you are doing
This will help the people with whom you are working to understand you better. If you want to suggest a new idea, for instance, let them know what it is and why you suppose it could be helpful to the project.
Do extensive research
In case you need to ask a question or seek help, make sure you have exhausted all the information on the project’s documentation, README, pull requests, issues, and even the internet for an answer. Making effort will go a long way.
Keep your requests direct and short
If you need to make a request, make it very short and concise. Remember that support is handling many people at a time, and you need to make their work easy.
Make sure all questions, suggestions, and requests are made public unless you want to share sensitive or private information. Keeping communication public will help others with similar issues.
Be patient when waiting for responses
Remember that issues and questions may take a bit of time, and some maintainers may need time to familiarize themselves with the contribution you are making. Try extending them some grace and wait patiently for responses.
Respect all community decisions
Each project has its own priorities and visions, and they may not always align with yours. If your contribution is not accepted or acknowledged, accept respectfully.
Keep it sophisticated
When you are making contributions, remember that you are working with people from various countries, cultures, languages, and so forth. Keep your interactions respectful at all times.
Before moving to make contributions, do research to make sure that your idea has not been replicated elsewhere. Go through the project’s README, open and closed issues, and so forth. If the idea has not been implemented, you are good to go.
Before opening a pull request or issue, make sure that you go through the contributing documents to see whether you need to use a specific template or use a test. To make solid contributions, open an issue to ask maintainers before starting on it.
Opening an issue
Here is when to open an issue;
- To report an error, you are unable to solve
- To discuss high-level ideas or contributions
- To propose a new idea
Tips on how to communicate issues
In case the issue was opened a while ago, it is likely that someone is working on it. Seek clarification before proceeding.
If an issue is already open comment and let everyone know you are handling it to avoid duplication.
If you opened an issue but solved it on your own, let everyone know and close the issue.
Opening a pull request
You can open a pull request in certain situations;
- To submit insignificant fixes
- When starting work on a contribution that has already been discussed or worked on in an issue
A pull request does not have to represent work that is already complete. You can mark it as work in progress (WIP) or add more commits later on. If you are working on GitHub, here is how to submit your pull request;
- Fork the depository and clone it locally. Connect to the local upstream depository by adding it as a remote. Keep pulling changes from upstream to stay up to date so as to avoid merge conflicts.
- Create a branch for your credits.
- Reference relevant issues or supporting documents in your PR.
- Include before and after screenshots in case your changes have different HTML/CSS. Drag and drop the screenshots into the body of the PR.
- Maintain the project’s style as best as you can. This makes it easier for maintainers to merge similar requests, and for others to understand and maintain PRs in the future.
What to expect when you submit a contribution
Here are a few likely scenarios that may present when you submit a contribution;
Someone requests you make changes to your contribution
If this happens, be responsive and make the changes. If you are not in a position to, let the maintainer know that you will not manage it, and they may let someone else do it.
You do not get a response
If you do not get a response in a week, you can respond on the same thread and ask for a review. In case this is not responded to, it is likely that you will not get a response at all. Try and find another project or another way to contribute.
Your contribution does not get accepted
There is no guarantee that your contribution will be accepted. In case you are unsure as to whether it has been accepted, ask the maintainer for clarification or feedback. Make sure to keep it respectful.
Your contribution gets accepted
Congratulations, you have made an open source contribution successfully.
Beginner or pro, it is always a gratifying feeling to make an open source contribution successfully. Be sure to look for open source projects to contribute to so as to build your portfolio. Finally, make sure to thank the maintainers who take the time to help you!