Message on Whatsapp 8879355057 for DSA(OA + Interview) + Fullstack Dev Training + 1-1 Personalized Mentoring to get 10+LPA Job
1 like 0 dislike
in Web-Development by
retagged by | 1,848 views

2 Answers

0 like 0 dislike

Before making your first contribution

1. Assess yourself:

The first step is to assess any technical or non-technical skill that you have or want to improve. Ask yourself where can I add the most value? This could be directly helping to write code, testing for bugs or even helping to improve documentation so others can use the software more efficiently.

2. Get to know GitHub

Almost all open source projects used a version control system, a tool that helps with merging new code into the project (the main “repository”). Usually, the collaboration is centred around a website that hosts the central repository. These websites include Github, Bitbucket and Gitlab, thought Github is by far the most popular one and the one we use here at MindsDB.

Generally speaking, version control systems allow keeping track of all changes in a project without saving several files. Make an account on Github, login and explore all the different tabs on the top of the website. Here you will find information about Github, development guides, open source projects, events, conferences etc. You can learn all about the basics of a GitHub by following this guide here.

3. Search for relevant projects and join the community

Search for relevant projects on Github based on your skil1s. You can use Github Explore for this purpose or sign-up for Code Triage to get an email on a different issue every day. While choosing a project to start on, look for a project that is actively maintained (loads of commits) and has a lot of issues. Once you have found your relevant projects, Star & Fork the project, subscribe to its mailing list and slack channel. This is the best way to get help if you are stuck in setting up the project or making your first contribution.

Making your first contribution

1. Play with the software: Find Bugs

First, try the software, install it and have a play, try to break it, see if it does what it says on the box. This is a great place where you can start to add value very easily, by reporting any issues you find. Each project is likely to have a slightly different template for reporting issues, but essentially they all contain similar information. (You can find MindsDB’s Issue template here)

2. Explore existing Issues

Once you have figured out the project you want to contribute to, explore its Github repository, read the documents and go to the issues tab. Here you will find all the open issues that you can work on. These issues can be from beginner level to advance level. If the repository is properly maintained, the issues would be tagged with “beginner”, “first-timers”, “help-wanted” etc. so that you can work on the easiest tasks to gain confidence and experience with the project.

3. Help improve documentation

However, you don’t have to code right away. You can contribute to documentation, creating the developer’s guide, helping other people solve their issues, etc. Read the documentation and if you feel something is missing this can be a great first place to contribute. You can either raise an issue or, if you feel confident enough, you can add the missing parts yourself. You can take a look at MindsDB’s documents here.

4. Suggest new features

If you like the project and find it useful, you can also start to request new features to help improve it. (You can find our template here) Or even better you can try to add them yourself.

The Cathedral and the Bazaar

A classic book about OSS is The Cathedral and the Bazaar. It explores “bazaar” style development, a bottom-up approach that gives power to the developers and the users. Comparing it with the “cathedral” style, a top-down approach where the power lies with managers and product owners.

It’s these ideas that gave rise to work approaches such as that described in the Agile Manifesto. But no matter how much corporations have tried to emulate a “bazaar” approach to development, they can’t do it quite so well as open source projects.

In the world of corporate projects, architects, managers and product owners lead the way. In the world of open source, it’s users and developers that shape the specifications.

Open source software is great because it taps into the “collective intelligence” of its developers and users. Most developers in an open source project stem from its core user-base, most “leaders” in an open source project are simply the developers that put in the most ideas and code.

This “bazaar” approach is not necessarily better than the “cathedral” approach, but it’s a system worth trying. It can give a new developer a lot of power over a piece of software, regardless of external criteria such as age or seniority within the organization. The only token of exchange is code, the more valuable the contribution, the more you influence the design.

If nothing else, you should work on some open source projects to experience this bottom-up style of software design.

0 like 0 dislike

Ways to contribute to open source

There are a lot of ways you can participate in open source. As a beginner, you could identify and fix bugs in a project. For example, the Angular project accepts issues pointing out bugs and even pull requests that fix them. In these projects, you can propose, help design, and work on new features. Angular for instance accepts proposals for large features and pull requests for smaller features. Larger features will require greater community involvement, and some communities require you to earn a reputation fixing bugs before moving to feature development. 

Your contributions do not have to be exclusive to code. You can help a project by making comments on existing code and APIs to add context and writing documentation for the project. As an example, Angular has two whole projects on Github dedicated to documentation, which you can check out here and here.   

Understanding how a project works

Not all open source projects operate in the same way. Some allow contributions from anyone. Some require you to work your way up to get contribution privileges. Some have multiple people involved in managing a project. Others have a single person in charge, a so-called benevolent dictator for life. 

Contribution guidelines help you understand how to approach your participation in a project. It will explain how to reach out about a contribution, provide templates for communicating bugs and suggesting features, list work that is needed by maintainers, project goals, etc. An amazing example is the Angular contribution guide which lists all kinds of useful information for new contributors like their commit message guidelines, coding rules, submission guidelines, etc. in great detail. 

In addition to contribution guidelines, some projects will have a code of conduct. It usually outlines community rules and behavior expectations. It’s meant to help you know how to be a amiable and professional contributor and community member. Angular, for instance, has an awesome code of conduct that lists what they consider unprofessional conduct, their responsibilities to the community, and how to get in contact in case someone violates it.   

Even after you’ve gone through the documentation, you may still need to ask questions to active members of the community. Despite doing your research, you may still be stumped on a particular aspect of the project. To interact with other contributors, join community communication tools like Slack, IRC etc., sign up for newsletters, and subscribe to their mailing list. Angular uses Gitter as its community communication tool and directs contributors with questions/problems to Stack Overflow, where they can get help using the angular tag. Connect with community members and develop relationships with them as it will expose you to facets of the project that you may be unaware of. 


Finding projects to work on

One way to find projects to work on is to look to open source software you use often and like. Is there a tool, package, framework, or a language that you work with regularly and enjoy using? Find out whether it’s an open source project by checking its license and if it accepts contributions and is active. Working on things you already use gives you an edge when contributing because you’re already pretty familiar with how it works and have experience using it. As a bonus, you can address problems that have been bothering you or suggest features that you want in the software. If you are going to contribute code to the project, be sure you can work in the language it’s written in. 

If the above approach may not work for you, try using the Github explore page to find projects that are accepting contributions or actively want help. Github suggests projects you may like based on people and repositories you follow, star, and watch. Another way to find projects is to use Github’s search tool by entering beginner-friendly contribution tags like good-first-issuegood-first-bugbeginner-friendlyeasylow-hanging-fruitfirst-timers-only, etc. Filter search results to return issues in open states and in the languages you’d like to work in. There are tons of other tools, platforms, and programs where you could find open source projects that I’ll list at the end of this article to help you with your search. 

To have a positive contribution experience, try to avoid communities that are hostile to beginners and generally problematic. If for example, when trying to ask legitimate questions after you’ve done your research, you receive dismissive and combative comments or insults, it’s best to stay away. Another sign to be watchful for is a pattern of unprofessional behavior within a community. Some open source software projects have been infamous for this sort of thing. So do your research before contributing.  

Picking issues to work on and making contributions

Projects may list the work that needs to be done in task, bug, and issue trackers. For example, Angular uses Github’s project management feature to outline and assign tasks and track their progress. If a project has one, get access to it. 

As a rule of thumb, start with the easiest and smallest contributions first that take the least amount of work to build up your confidence and credibility before trying harder contributions. Writing documentation and fixing typos is a good place to begin. Look for issues that are tagged for beginners with the tags mentioned earlier. 

After you pick a task you think you can finish, do your research. Read documentation, code, and discussions related to the task to get a better understanding of what to do. If you’re stuck on something even after you’ve researched it, reach out to the community and ask for help, clarification, or mentorship. However, make sure that you discuss issues related to the task publicly so that the rest of the community can benefit from what you learn. For example, discuss an issue publicly on Github versus in a private direct message on Slack. Once you feel like you have enough context on a task and know how to go about it, write some code and submit a PR. Github has a great checklist about what to check for before you contribute to a project so your effort is not wasted.

Submitting your work

After you’ve completed work on your contribution, submit it as per the contribution guidelines. At times, your submission may not get a reply even after a reasonable amount of time has gone by. In such cases, respectfully request a review or get in touch with other contributors for assistance. Post-review changes may be requested. Try to make them as soon as possible so that your contribution is integrated promptly and does not become out-of-date or forgotten. If your contribution is rejected, ask for feedback to understand why. When reviewers ask questions, make comments, or give feedback, be responsive and check on your work for any updates regularly. Treat this like any other work and be professional, courteous, and respectful. 

What are you waiting for?

Open source contribution can be an amazing learning experience. It allows you to give back to and be a part of communities that build valuable open source software. It enables you to make software that you use better. Although it can be tough to start, once you get the hang of it, it is immensely rewarding. You do not have to know everything about a project to make a contribution. Pick a project and a community that supports new contributors, find mentors, and make your contributions. You may encounter some infamous communities. Stay away from them as they may put you off open source entirely. 

Here’s a list of resources that can help jumpstart your open source career:

  1. Awesome for open source beginners 
  2. Bugzilla 
  3. Code triage 
  5. First contributions 
  6. First-timers only 
  7. Hacktoberfest 
  9. Issuehub 
  10. Open source handbook 
  11. Open source programs 
  13. Pull request roulette 
  14. Your first PR