Skip to content

Latest commit

 

History

History
342 lines (197 loc) · 21 KB

CONTRIBUTING.md

File metadata and controls

342 lines (197 loc) · 21 KB

How To Contribute to Open Source

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.

Example: quordle game – quordle.today 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.

Contributors

These are all persons who have made a contribution to the project in one way or another.

Maintainers

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;

License

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.

README

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.

Contributing

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.

Others

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;

GitHub Explore

First Contributors

Contributor Ninja

Open Source Friday

24 Pull Requests

CodeTriage

Up For Grabs

First Timers Only

First Contributors

SourceSort

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.

Communicate publicly

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. Gathering context

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. Final thoughts

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!