Professional Documents
Culture Documents
I've answered 35+ discussions on GitHub (actively participated in 300+), successfully merged over
200 PRs, earned 500+ Stars, and contributed to more than 40 repositories. I know enough to guide
people.
Don't worry.
It's okay if you don't know the terms; we will cover everything.
There are plenty of other blogs available, but they may not cover everything, which is the main aim
of this post.
Each person is at a different stage, so I've created a Table of Contents that outlines what each
section will cover.
If you know those sections or are perfectly confident, skip them to the next one.
Note:
Read and skip the sections in order. Previous ones are essential for upcoming sections, and it is
structured accordingly.
---
## Table of Contents
1. Concept of Open Source.
6. Conventional Commits.
---
Imagine you have a cool project, like a super fun game. Right now, only you can play it because you
have the secret rules (code). Now, what if you tell your friends the rules, and they start adding cool
new things to your game? That's like Open Source!
Open Source means sharing the rules (code) of your project with everyone. Just like when you share
your game rules, others can see, learn, and even add new features. For example, imagine if Google
shared how they make Google Maps. People can help make it better by fixing problems and adding
cool stuff.
It's like a big team helping each other for free! And if you help, too, it's like getting a special badge
that says, "I helped make this cool thing!".
Imagine if you could tell everyone, "I helped make Google Maps!" That's why Open Source is damn
awesome.
> You don't have to be a tech expert. Open Source is for everyone, even those who don't know how
to code. Yes, even for YOU :)
![Open source isn't about perfect code; it's about passion and the noble goal of making lives better.
](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02pk9u0y6yum2uo9blbc.png)
There is no such roadmap, even if you ask experienced people in open source. There can be a
general flow, but I assure you everyone has their own way of getting involved in open source.
When I started, I just wanted to learn about GitHub, and I wasn't even aware of open source. So, if
you're new, don't worry.
---
In a world where we are more connected than ever, being a part of an open-source community can
be the key to unlocking new opportunities and achieving personal growth.
Most important.
There are plenty of reasons why you should contribute to an open source:
- To learn, teach, and gain experience in almost any skill you can imagine.
- It provides personal satisfaction, and you never know who is watching – maybe your next employer
or partner.
Tip: Pick good organizations rather than individual repositories for long-term benefit.
---
## 3. What it means to contribute.
A common and deadly misconception about contributing to open source is that you must contribute
code.
- You can make a style guide that developers can follow for a consistent visual design.
Hell, nah!
---
### Contributors:
These people contribute to the project in one way or another. They follow `contributing guidelines`
which guide them on how they can contribute and help the project grow.
### Maintainers:
Every good open source project has a lot going on, and these people are responsible for driving the
vision and goals of a project. They review the code and suggest and consider features.
Some maintainers assign people to issues, while some help in reviewing the code, and do several
other works.
### Author:
The person/s or organization who created the project has the power to recruit maintainers, assign
new roles, and is the main authority.
The person/s who has administrative ownership over the organization or project (not always the
same as the original author)
### Community members/Users:
These are the members of the community who can provide feedback about the product, suggest
bugs or improvements, and many more.
These are neither contributors nor maintainers, just the users of the product.
---
The open source community is on GitHub, and so you need to know a bit about Git & GitHub.
### GitHub:
Imagine GitHub as a big, magical toy box where people keep their favorite toys (code). Everyone can
see the toys and even play with them!
So, let's say you have a cool toy (code) like a robot. You want to make it even better so you put it in
the GitHub toy box. Now, your friends can see your robot, give suggestions, and even add new cool
things!
GitHub helps friends (developers) work together on toys (code) and make them more awesome. It's
like a playground where everyone shares their toys, helps each other, and has a lot of fun!
### Git:
Imagine Git as a magical backpack for your computer. When you make a drawing on your computer,
Git helps you save different versions of your drawing. So, if you want to go back to the way your
drawing looked yesterday, `Git` helps you with that.
Lots of other concepts are involved but this is what people mean when they say Git is a "Version
Control System".
I can assure you this is one of the best short courses that doesn't make you feel like an idiot and
explains everything in depth.
![udacity git
course](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2z4bk79qcco6ktjm4nn.png)
### Markdown:
It is used while **communicating everything** on GitHub. You must know the basics of it.
It's simple if you have used HTML before.
You can use [Dillinger](https://dillinger.io/) as an online editor that you can use to see the preview of
what the final output looks like.
---
## 6. Conventional Commits.
Commit messages are crucial and can distinguish beginners from experienced developers. These
conventions make commits self-explanatory regarding their type.
![conventional commits](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/
v5fs350p0myp5lvlzg2k.png)
One handy rule that you must be aware of; we only use the present tense while writing commit
messages. `Added ..` is an incorrect commit message.
A lot is involved in technical terms, but you can just use it for the sake of conventions.
There is no correct answer to this, but every good open source project must have clear guidelines to
help you on `HOW` you can contribute to their project (`contributing.md`) and a few [other
requirements](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-
contributions/about-community-profiles-for-public-repositories).
![community standards](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/
1k9yvhyk2wls1mjnzak0.png)
This is undoubtedly the most important aspect if you want others to contribute to your project.
Contributing guidelines can vary from project to project, and it must answer these questions unless
it's defined in Readme:
- Clear step-by-step instructions on what they can do with the project and where they can contribute
- It is important to note that not every project has `contributing.md` depending on how they want
the contributions.
The best contributing guidelines I've come across are from [Simple
Icons](https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md). I started
my open source journey with Simple Icons :)
Some other examples that you can look at
[LinksHub](https://github.com/rupali-codes/LinksHub/blob/main/CONTRIBUTING.md) which I've
personally contributed to and improved over time along with other maintainers.
### README
A `README.md` file, written in markdown, is the most important document that provides
information about a project, including its purpose, installation instructions, tech stack, and usage
examples.
Readme can vary from project to project, but a good Readme always attracts more contributors.
The code of conduct sets ground rules for participants’ behavior and helps to facilitate a friendly,
welcoming environment.
The name of the file should be `CODE_OF_CONDUCT.md`, and you can see an example [here]
(https://github.com/Anmol-Baranwal/Awesome-Illustrations-4Projects?tab=coc-ov-file#readme).
### Description
A project description increases visibility and influences algorithms to showcase your project in
GitHub's `Explore more repositories`. This is what people will see when they see your project.
![description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/
yfbstrhht7dkxlf5rjem.png)
### License
By definition, every open source project must have an open source license. If a project doesn't have
a license, it is not open source.
Open Source is an unusual circumstance, however, because the author expects that others will use,
modify, and share the work. But because the legal default is still exclusive copyright, they need to
explicitly give these permissions with a license.
This will be helpful because whenever someone creates an issue in your repository, they will see a
link to the security policy associated with your project.
Issues are used to track bugs, feature requests, and other tasks related to a project.
They can be opened by anyone, and everyone uses it to track and prioritize work that needs to be
done.
Issues can be assigned to specific team members, labeled with tags, and can have discussions related
to them.
But the new ones (currently in beta) are like issue forms that improve consistency, and people can
contribute easily. How?
Issue forms can be more user-friendly than Markdown templates, especially for contributors who
may not be familiar with Markdown syntax.
With issue forms, you can ensure that all issues are created in a consistent format, with the same
fields and information requested every time. This makes it easier for maintainers to review and
respond to issues quickly.
![issue
forms](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4vkw6eh4o80wpn2oqbrp.png)
You can create these issue templates that contributors will see when they try to create a new issue.
![issue
forms](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gzojl4uexep82cf13zih.png)
You can create multiple pull request templates to offer options for required information in different
types of pull requests. However, many people may not be aware of this feature, and it can be
confusing for first-time contributors. As far as I know, there isn't an option for similar templates in
issue forms, and only markdown is supported.
You can create offer options of what information is required in which type of pull request.
However, many people may not be aware of this feature, and it can be confusing for first-time
contributors.
As far as I know, there isn't an option for similar templates in issue forms, and only markdown is
supported.
In some repositories, you can find a Wiki that serves as an extra guide to the project. It depends on
the project, but this is what a [good wiki](https://github.com/adam-p/markdown-here/wiki) looks
like.
Did you know you can add a social image to your repository?
![social preview](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/
1m54lpqa197v08pegrcw.png)
---
Every good open source project follows a basic flow, and you will be treated as a spammy
contributor most of the time if you don't follow it.
a. The first step is to read the contributing guidelines that you can find in `Contributing.md` or
sometimes `Readme.md`.
b. b. Now, you should either create a new issue or find open ones that aren't assigned to anyone.
You can learn [how to create an issue on GitHub](https://docs.github.com/en/issues/tracking-your-
work-with-issues/creating-an-issue).
You can simply comment to see if the issue is open for work.
However, make sure you can solve that issue before requesting to get assigned.
c. Once you're assigned, you can make a pull request with the changes in a different branch, and
[correctly link the issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-
a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) so that the linked
issue is closed when the Pull Request is merged. Read on [how to create a pull
request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-
changes-to-your-work-with-pull-requests/creating-a-pull-request).
d. You should address the review changes (Read more in the 11th section) timely, and you can ask
the person who suggested the changes to help you if you're facing big problems.
By the way, you need to push the changes in the same branch from which the PR is created, it will
automatically be shown in the Pull Request.
It's okay if you make those mistakes; some maintainers may not have time to explain everything to
everyone. Just make sure to never do it again.
Projects that, for example, focus on Data Structures and Algorithms (DSA) or JavaScript repositories
that don't follow these etiquettes are actually making the situation worse. Creating spammy Pull
Requests is not acceptable.
---
And I always tell you that you should choose a project that excites you rather than just following the
tech stack.
I've covered everything here on [🎁 Shortcut to Find Open Source Projects 100x
faster](https://dev.to/anmolbaranwal/shortcut-to-find-open-source-projects-100x-faster-3lje).
It has received over 20k views, and I wrote it after careful consideration and in response to
numerous requests.
However, to get you a list of helpful repositories. You can find it [20 Open Source projects you
shouldn't miss in 2024](https://dev.to/anmolbaranwal/20-open-source-projects-you-shouldnt-miss-
in-2024-3ja4). These are all close to me.
---
But I'm an open-source maintainer, and I can tell you about how I prefer contributors to contribute
to my project.
a. Contributors should read the guidelines and understand the basic workflow for contributors. You
should avoid asking questions without researching on your own, as it can give the wrong impression.
b. Join the community, observe ongoing activities, and identify areas where you can comfortably
contribute. The next step is to engage with the maintainers about how they want the project to
grow. What their vision is, and see if you can help. Solidify ideas and suggestions through
communication.
c. Create an issue, write your plan clearly (no copy-paste from ChatGPT), and outline what you
intend to do. Once assigned, submit a pull request (PR), and address requested changes timely. Keep
the PR active; if it becomes stale, make sure to tell them the reason.
I'm not too strict, but handling a large project in a big organization can be challenging. Respecting
everyone's time is crucial. Keep contributing, and gradually you will become a significant part of the
project.
---
## 11. How to suggest/address code request changes in Pull Request.
I've seen some contributors leaving their pending work as soon as they requested changes in their
Pull Request. Trust me, if you make this a habit, maintainers will be less likely to assign you issues.
Anyway, there are many ways you can be requested for the changes.
You can clearly see the changes requested along with the detailed review.
![code
review](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugeqptx41vudwqwsvl52.png)
You can also directly commit if they have suggested the changes which is a neat little feature in
GitHub. Learn about giving effective [code feedback
reviews](https://www.freecodecamp.org/news/code-review-tips/) for maintainers & contributors in
detail on freecodecamp.
---
Open Source is an unusual circumstance, however, because the author expects that others will use,
modify, and share the work. But because the legal default is still exclusive copyright, you need to
explicitly give these permissions with a license.
These rules also apply when someone contributes to your project. Without a license or other
agreement in place, any contributions are exclusively owned by their authors. That means nobody –
not even you – can use, copy, distribute, or modify their contributions.
> Making your GitHub project public is not the same as licensing your project.
For others to use, distribute, modify, or contribute back to your project, you must include an open
source license.
For example, someone cannot legally use any part of your GitHub project in their code, even if it’s
public unless you explicitly give them the right to do so.
![cla assistant](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/
vj7hlv6r2z2g5thldppi.png)
---
## 13. Extra Resources.
I've found these in my open source journey, and they offer a decent viewpoint.
![Becoming Top 1% in open source isn't the goal, impacting 1M lives is](https://dev-to-
uploads.s3.amazonaws.com/uploads/articles/9xs5amyzvwd06y8b63xy.png)
Trust me.
Now, you've got everything you need to start your open source journey.
There are more things to cover, like co-authored commits or branch rules, but they aren't necessary
for beginners. A story for another time!
Whenever someone asks how they can start their journey with open source, share this post, and
voila!
I'm not a big fan of social media, but I occasionally share about open source on
[LinkedIn](https://www.linkedin.com/in/Anmol-Baranwal/). That's where I used those couple of
images :)
Paid content is often the best (which I'm not a fan of), but I believe some things should remain free
so everyone can learn without these money constraints.
If you enjoyed this guide, please support me by following me on my GitHub & Twitter.
- [Twitter](https://twitter.com/Anmol_Codes)
- [LinkedIn](https://www.linkedin.com/in/Anmol-Baranwal/)
{% embed https://dev.to/anmolbaranwal %}