# From Zero to Hero

If you're feeling uncertain about contributing to an open source project for the first time, I understand. Navigating the open source space can feel intimidating. Recently, I overcame my fear of contributing, and I documented the experience [here](https://blackgirlbytes.dev/conquering-the-fear-of-contributing-to-open-source). I gained the assurance I needed to make my first contribution by: 

* asking for help
* interacting with the community 
* thoroughly reading the documentation
* and trusting my skillset 

I found that contributing to open source expanded my network, improved my reputation, boosted my confidence, and increased my technical skills. 


## Start Small

_You don't need to be a technical expert to contribute to open source - the tips below can help you!_

**Tip #1: Read the Contributing.md**

The Contributing.md is a markdown document often found at the root of an open source project. The existence of a Contributing.md can indicate that a project is welcoming, inclusive, and organized. For new contributors, this is an optimal way to orient yourself with the project initially. Every open source project may follow slightly different rules, but there's no need to guess what this project's maintainer prefers. If you read the Contributing.md, you'll learn how to: 

* Set up your developer environment
* Format your code
* Style your components
* Pick up issues
* Create pull requests
* Communicate with other project contributors

Here's an example of what Contributing.md look like:

![Example of contributing md](https://vinta-cms.s3.amazonaws.com/media/filer_public/4c/9c/4c9c3970-f6cb-4a7f-8bf2-e57a87679580/4_contributing.png)


_Read the Contributing. md, and if you still have questions, reach out to the community!_ 

**Tip #2: Join the Triage Team**

Perhaps you're still new to coding or unfamiliar with the programming languages and tooling that the project uses. Fortunately, coding isn't the only way to make an impact. One option is to join the triage team. Taking on a triage role is valuable for both you and the maintainer. Your responsibilities may include: 

* Identifying needed features 
* Recording bugs
* Writing issues
* Organizing, labeling, and prioritizing issues
* Reviewing code
* Testing contributor's pull requests
* Suggesting functionality or coding improvements for pull requests

Maintainers always need assistance with the above tasks. By performing these tasks, you'll stand out and gain transferable skills for QA or Product roles. Eventually, you may even feel comfortable contributing code to the project. 

_Not all projects have a triage team. Reach out to the maintainer to ask if they do!_

**Tip #3: Link Your Pull Request to an Issue**

By linking a pull request to an issue, you can automatically reflect the progress of an issue based on the pull request, which reduces the workload for you _and_ the maintainer. This allows other collaborators to track the progress of an issue as well. You can do this by adding the keywords closes, resolves, or fixes followed by the issue number inside the pull request's description. 

Example: `closes #752`  

You can also do this manually (shown in the gif below). 
![Example linking pull request to an issue](https://blog.zenhub.com/content/images/2021/04/GH-keywords.gif)


_Read this [guide](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) for more details on linking your pull request to an issue._


## Level Up

_Once you are comfortable contributing to open source, you can step up your game with these tips!_

**Tip #4: Leverage Multi-line Comments for Suggestions**

GitHub enables you to highlight multiple lines in a pull request diff and add a comment. You can use this feature while reviewing a collaborator's pull request. If you highlight multiple lines and suggest code changes, the collaborator can directly commit those suggestions to their branch.

![Example highlighting multiple lines for comments](https://i.stack.imgur.com/gP2bG.gif)


**Tip #5: Save Your Replies**

As your involvement within the project increases, you may feel like there's not enough time in your day to compose a response to every collaborator. 

Within GitHub, you can create and save reusable responses to specific issues and pull requests. If you ever become the project maintainer or writer, you can also benefit from the saved replies feature. 

![Example of saving replies](https://github.blog/wp-content/uploads/2016/03/5cfe6b80-f293-11e5-8065-e13fe452d394.gif?fit=1392%2C708)

**Tip #6: Automate Your Workflows with GitHub Actions**

GitHub Actions is a tool that conveniently enables you to automate custom workflows inside of your GitHub repository. You can trigger a workflow to run a set of jobs when a specified event, such as a pull request or a push to a particular branch. The next time you find yourself or your collaborators manually repeating tasks, implement GitHub Actions to enhance your CI/CD pipeline. 

_For inspiration: Read about how I used [GitHub Actions to sync an AWS S3 Bucket](https://blackgirlbytes.dev/how-to-sync-an-s3-bucket-with-github-actions) with my GitHub repo._

_For more context: Check out Brian Douglas' [YouTube tutorials](https://youtube.com/playlist?list=PLpURC3VhaQD3fvhLRBc4wb1hzbkoUPasR) to learn more about GitHub Actions!_

**Want to get started now? Here’s a [list](https://vinitshahdeo.dev/beginner-friendly-issues-for-hacktoberfest-2021) of beginner-friendly issues for Hacktoberfest 2021!**

