Software engineering is an exciting field that offers various roles and responsibilities to individuals. Some prominent roles are developer, quality assurance engineer, project manager, product manager, DevOps, and many more.
Each of these roles also has sub-roles. For example, we have front-end, back-end, and full-stack developers in development. In testing, we have manual testing, automation, unit testing, and end-to-end testing. Not only that, new roles and work activities are created every day, roles that never existed before. One notable mention will be being a developer advocate.
In the image below, you can position yourself and relate to any possible roles mentioned, provided you have the skills to perform them.
Now let us change our perspective a bit. What if you replace yourself with a product in the above picture? So fascinating that it fits well! To build a you might require to work on almost all the scopes to go from incubation to go-to-market.
Usually, a product is build out of multiple projects, and one of the critical aspects of any project it is the Source Code. When we talk about source code, there’s a special kind of it that we call it Open Source
. This happens when it is free to view, change, extend, and distribute. The related project is called an open source project, and if there’s a product that meets this criteria is called Open Source Software(OSS).
An Open Source Software has all the attributes and scope of a regular product we have seen above. All those roles and responsibilities are valid when developing, testing, and shipping Open Source Software. But one thing to remember is that the source code is Open
!
Open Source Contributions
We have an idea about Open Source and Open Source Software now. A frequently asked question is, What does Open Source Contribution mean? Most people think Open Source contributions requires changing the project’s source code. That’s true, but it is not limited to that, you can contribute to open source projects in all the following ways:
- Adding Features to the project through source code changes.
- Fixing bugs or issues.
- Helping to improve documentation.
- Help in testing the software.
- Taking up Code Reviews and helping out the maintainers.
- Create content. It can be written, video, or even podcast content.
- Being part of the community and helping to grow it.
- Help to integrate the product with other products for a better solution.
- Provide feedback to make it better.
As you noticed, Open Source projects have several opportunities to contribute. However, you may wonder what are the advantages of contributing to open source projects. Let’s understand and demystify that.
Advantages of doing Open Source Contributions
The advantages of doing Open Source contributions are immense.
- We get a chance to up-skill. It’s not always feasible to get a chance to work on something you are aspiring for, because the project at your workplace may have different needs. Open Source projects can provide you with the opportunities to contribute in an area you want to grow and build your skills.
- The satisfaction of making things better. We probably use many open-source libraries, frameworks, and products on daily basis. It will be exciting to make any of them better with our contributions!
- Getting the opportunity to network with like-minded people and build communities.
- To get mentorship and the chance to mentor others while contributing to the project.
- We get to know the entire open source ecosystem and how to manage an open source project.
- Last but not least: It improves our portfolio and resume by mentioning contributions to open source projects.
Great, now let’s look at how the Open Source project works.
How does Open Source Project Works?
An open source project will have one or more maintainers who have started the project and got more access rights to manage and maintain it. Besides, contributors will aim to improve the product by making possible contributions.
The source code, documentation, and tests are usually in the project’s source code repository for better management, version control, and tracking. Git
is one such version control mechanism, and GitHub
allows storing the code in the repository.
The maintainers and contributors either clone or fork the main
repository to start contributions. Once the contribution is ready, they open a Pull Request
to merge their changes from their branches to the main branch.
In case you contribute to an Open Source Code Software, the Continuous integration(CI) and continuous deployment(CD) pipelines will build the source code to generate a binary and deploy it on the cloud or to some servers, so end users can access the final product. With this, the automated system keeps the end-user experience up-to-date whenever a source code changes.
The image below shows the entire process visually.
How to Get Started?
So the billion-dollar question is how to get started with the Open Source journey. Luckily there are a few websites that help you with this information.
- GitHub Explore: You can search repositories by topics and trends. Set notifications based on your interest. It is the first place you should look for an open-source repo to contribute.
- Contributor Ninja: This website categorizes open source projects by programming languages like JavaScript, HTML, Rust, and many more.
- First Contributions: A website with very well-guided documentation on how to start an Open Source Project and that will help you to find a suitable project based on your skills.
- Code Triage: Code Triage has a huge list of open-source projects for you to select. They have categorized the projects based on the language and the number of open issues, so you can selectively pick them and put your efforts on the most demanding projects.
- Up For Grabs: Another website with a comprehensive list of Open Source Projects.
- First Timers Only: This website will help you to get the motivation required to start with Open Source. You must consider giving it a read.
Aside from all these websites, there is something called Hacktoberfest
that you must be aware of as an open source enthusiast. We go deeper into it in a while, but if you are aware of any other resources, please comment below and let us know.
What is Hacktoberfest?
Hacktoberfest is a yearly festival to promote the Open Source philosophy. It’s usually done in October and it main goal is to encourage people worldwide to actively participate and contribute to Open Source Projects hosted across GitHub and GitLab.
To get started, you need to register between September 26 and October 31 and then find a project that suits your skill and it’s labeled with the “hacktoberfest” label. You can find the projects hosted on GitHub and GitLab. Once you have chosen the project you can contribute to it and creating Pull requests.
If all goes well, the project maintainers will accept your pull/merge requests. Once you have 4 pull/merge requests accepted between October 1 and 31, the Hacktoberfest will be completed for you. The first 40K participants (maintainers and contributors) who complete Hacktoberfest can choose to receive one of two following prizes: a tree planted in their name or the Hacktoberfest 2022 t-shirt.
Hacktoberfest is not only about the code. Non-code and low-code contributions are also accepted in the event. You can read more about these contributions here.
A Few Things to Note
A few points to take note of about the open source contributions.
- Even the smallest contribution is a contribution. Every contribution counts as long as those are not spam.
- Be humble and kind when you communicate on the pull request and issues. It is a virtual world, and everyone needs to work in harmony to sustain themselves.
- You don’t need to be a guru or a very expert person to start contributing to open source. Open Source is a journey where you have the opportunity to learn and grow.
- Be proactive responding to queries. You never know what other expect from you or your contributions.
- Hacktoberfest counts 4 merged contributions. However, you shouldn’t stop just there. Continue your journey with it.
That’s all. We hope you found this article insightful and that it helps you to get started with Open Source path and that you start contributing to Open Source Projects.