Open-Source 101: The basic must-know terms for an open-source beginner
The terms you should know before beginning your open-source journey
Contributing to open-source projects as a beginner can be a little overwhelming. We come across many terms which might sound alien to us. I remember myself 3 months ago, trying to contribute to a beginner-friendly issue when the maintainer told me to "make a PR" and I didn't know that PR actually is the short form for Pull Request.
To help you avoid the hurdles I faced and prevent time-consuming mistakes that I made while beginning my open-source contributions journey, I have curated a list of essential terms one must know, in order to begin his/her open-source contributions journey.
Before that one very important tip - Open-source is not about spoon-feeding, so you will have to learn things by yourself, by making mistakes and learning from them. Therefore is completely fine that you don't understand what to do. how to raise an issue? how to merge a PR? Open-source is a community of the most supportive people in the world and everyone would love to help you once you get stuck at some place. So try out, fail and iterate, don't expect people won't answer you or think you are dumb. Don't hesitate asking, but neither should you expect spoon-feeding.
Starting from the very basics
(feel free to skip parts you have decent knowledge about) :
Git
Git is a distributed version control system that helps developers manage and track changes in their code projects. It allows you to create a history of changes, switch between versions, and collaborate with others. Git stores code in repositories and track each change made, enabling easy branching, merging, and resolving conflicts. You can work offline and sync changes later. Git's decentralized nature ensures multiple developers can work simultaneously without conflicts. It provides a reliable and efficient way to organize, share, and safeguard code, making it an essential tool for collaborative software development. Learn More
GitHub
GitHub is a web-based platform that hosts and manages Git repositories. GitHub will be the place where you will contribute to various open-source projects. It provides a centralized space for developers to collaborate on code projects. GitHub allows you to store your code, track changes, and work with others in a streamlined manner. It offers features like issue tracking, pull requests, and code review, facilitating collaboration and efficient development workflows. With GitHub, you can easily share your code, contribute to open-source projects, and showcase your work. It serves as a social platform for developers, fostering community engagement and making it a hub for version control and collaborative coding. Learn More
To Learn Git and GitHub, do checkout These two videos -
Now that we know what Git and GitHub are, let's learn more about GitHub and understand the basic terms for contributing to open-source projects in GitHub.
GitHub Explore Page/ GitHub Dashboard
So this is how a GitHub explore page looks like -
Here you will get updates about what's happening in the open-source community and what people you follow are doing. You can find your recent activities at the bottom left of the page.
These are the tabs you will find on the GitHub Explore page/ GitHub Dashboard-
Trending: This section showcases popular projects and repositories that are currently receiving attention from developers. It's a great way to stay updated on the latest trends and exciting developments in the coding world.
Topics: Topics are curated collections of repositories based on specific themes or technologies. They allow you to explore projects related to your areas of interest, making it easier to find repositories that align with your preferred topics.
Collections: Collections are hand-picked groups of repositories organized around a particular theme or purpose. They are created by the GitHub team or the community, providing a way to discover and explore projects that belong to a specific category.
Showcase: The Showcase section features notable projects from various industries or organizations. It highlights outstanding work and serves as a source of inspiration for your own projects.
Explore repositories: This section enables you to browse repositories based on different criteria like programming languages, stars, forks, and licenses. It allows you to filter and find repositories that match your specific preferences.
Moving on to some more terms
Repository or Repo
A repository in GitHub is like a folder or a storage space for your project's code and related files. It's where all your project's files are stored, organized, and tracked. Think of it as a central hub that holds everything related to your project, including the code you write, images, documentation, and more.
A repository in GitHub allows you to keep track of changes made to your code over time. It stores different versions of your files, making it easy to collaborate with others, make changes, and keep everything organized. You can also share your repository with others, allowing them to contribute, provide feedback, and work together on the project.
Issue
An issue in GitHub is like a virtual sticky note used to track and manage tasks, problems, or ideas related to a project. It's a way to communicate and keep everyone on the same page. Just like writing a note, you can create an issue to report a bug, suggest an enhancement, or ask a question. Others can comment on the issue, offer solutions, or provide feedback. You can also do the same on asn issue created by someone else. It helps in organizing and prioritizing work, ensuring that tasks are addressed and progress is made. It's a central place to discuss and resolve project-related matters collaboratively.
Pull Request or PR
A pull request is like a suggestion to make changes in a project on GitHub. It's a way for someone to propose their modifications to the project owner. Imagine having a document that needs editing. You make a copy, make your changes, and ask the owner to review it. That's a pull request. The owner can then see your changes, comment on them, and decide whether to accept and merge them into the main project. It's a collaborative way for people to contribute their ideas, improvements, or bug fixes to a project while allowing for review and discussion before merging the changes.
Note: You can contribute to a repo by raising an issue, working on someone else's issue, creating a PR, and many more ways about which we can talk about later on, once we are used-to to contributing.
Readme file
Whenever you find a new repo to contribute to, the first file you should open in the repo is the readme.md file. The readme.md file gives you an overview of what the repo is all about, how to get started in the project and how to contribute.
Commits
A commit in version control is like taking a snapshot of your project at a specific moment. It captures the changes you've made to your code or files. Imagine you're writing a story, and after each paragraph, you save your progress. A commit is similar—it saves your changes as a permanent record. Each commit has a unique identifier and a message describing the changes made. Commits allow you to track the history of your project, revert to previous versions if needed, and collaborate with others by sharing your changes. They provide a reliable way to manage and organize your project's development.
Branches
A branch in version control is like creating a separate copy of your project to work on specific changes. It's like having different storylines in a book. You can create a branch to develop a new feature or fix a bug without affecting the main version. You can make changes, experiment, and test ideas on the branch independently. Once you're satisfied, you can merge the branch back into the main project. Branches keep the main codebase clean and allow multiple people to work on different tasks simultaneously. They enable parallel development and provide a safe environment for making changes.
Good First Issues
Good first issues are beginner-friendly issues in any repo. Try to find good first issues in the project you wish to contribute to, that is the best way to start contributing to a project. Go to the issues tab, select "good first issue" as a label, and you will see a list of all good first issues in the repo.
Fork
Forking in version control is like making a personal copy of a project. It's like getting a recipe and making your own modifications without altering the original. When you fork a repository, you create an independent copy that you can freely experiment with. It allows you to propose changes, add features, or fix issues without directly impacting the original project. Similar to having your own sandbox to play in, forking enables you to work on improvements separately. You can later suggest your changes to the original project through a pull request, offering your modifications for consideration.
Clone
To clone a repository in version control is like making an exact copy of a project on your computer. It's similar to downloading a file or duplicating a folder. Cloning allows you to have your own local version of the project, which you can modify and work on. Just as you might take a book from the library to read at home, cloning lets you take a project from a remote server and have it available on your computer. It enables you to contribute to the project, make changes, and synchronize with the original repository when needed.
Some Tips to get started
Here are some tips to get started in open-source -
Start with "Good first issues"
- Now that you know what good first issues are, start solving the good first issues of any project. If you are confused about how to find a good repo. You can go to goodfirstissue.dev and find good first issues there. Or you can contribute to my repo. I have multiple good first issues there.
Start small and explore
- Begin with simple tasks like fixing a bug or improving documentation. It helps you understand the project's codebase and contribution process.
You don't have to know multiple technologies in order to contribute to a project
- you don't have to know all the technologies used in a project in order to contribute, you just need basic knowledge of a technology and the rest you can learn on the go once you start making contributions.
Collaborate and communicate
- Discuss your ideas, progress, and challenges with the community. Participate in code reviews and offer feedback on others' work.
Be patient and open to feedback
- Understand that open-source is a collaborative process. Be open to constructive criticism, learn from feedback, and iterate on your work. Be patient, sometimes it might take weeks till the maintainer responds to your questions, realize that most maintainers have there full-time jobs and they contribute part-time.
Engage with the community
- Join discussion forums, chat channels, or mailing lists to connect with other contributors. Ask questions, seek guidance, and learn from experienced members.
Most importantly, enjoy the process and share your progress publically
- Even your small contribution means the world to somebody and impacts many people, so celebrate your contributions and share them with others on Twitter, LinkedIn and other social media platforms. You can use hashtags like #learninpublic and #open-source.
Resources to get started
here are some resources that can help you get started in your open-source journey -
Conclusion
In summary, as a beginner, the most important thing is to just get started. Dive into a project, ask questions, and seek guidance. Your contributions - no matter how small - will add up and make a positive impact over time. Open source needs all the help it can get, so every contribution counts. People are loving and super supportive in open-source so never worry about asking a stupid question, people will happily answer all your questions.
Make sure to check out the resources I have provided, those will really help you to get started practically in the journey of open-source. Don't think that you should know multiple technologies to get started, you just need basic knowledge of a technology and then you can learn on go once you start contributing. I hope that you have gone through the terms I explained in the article.
Thank you for reading till the end, you are now ready to start your first contribution. All the best, you will surely rock it!!
#open-source #learninginpublic #WeMakeDevs