What is Open Source?
Some projects on the internet are open for other developers to contribute and learn from their mistakes. The codebase for these projects is publicly available to improve and re-distribute on the open-source hub — Github.
These visible codebases are called Open Source projects.
You can see the code, add new features, fix typos causing random bugs, fix visible errors, or even give suggestions to them. Since every developer or company uses some version control platform, like Github, you can always go back to the older version if your contribution doesn’t help or make things easier as you expected.
Platforms like Github record and store those contributions on your profile when you make contributions, and they act like a resume. It helps you land jobs, and companies prefer developers with hands-on experience.
Open-source reduces efforts and eliminates the time wasted on re-writing features. It enables us to use hundreds of packages and code by fellow developers to make our software. Take the example below.
The discord.js
npm package relies on other packages that further rely on code written by other developers, and the loop continues. It is possible because of the open-source environment, and you can contribute to this environment too.
So, what's stopping you from contributing to open-source projects? I'll talk about how to get started soon. Let us discuss the benefits of contributing to these projects because we humans love rewards.
Benefits of Open Source Contributions
Besides the yellow and green dots on the commit history streak of your Github profile that developers use to flex their knowledge and extra honour achievements given by Github to attract women, you can gain factual knowledge and experience by helping others build great software.
Open-source helps you:
→ Build a network filled with like-minded developers. You improve your collaboration skills and allow yourself to work in teams rather than individually. And when you need help, you can reach out to these developers.
You get opportunities to work with other great software engineers around the world.
→ Build experience in your field by solving bugs, implementing features, or even documenting someone’s code by understanding it, which is already a win-win situation. You’re improving your logic-building skills.
If you’re willing to write documentation for larger packages, here’s some inspiration from the folks at Apple —
→ Help others make their project great to use their work in yours later down the road.
→ Access programs like GSoC by Google, Outreachy, GSoC, RGSoC, etc.
→ Get full-time, service-based, or part-time opportunities because your work speaks for you.
→ Show your skills, practice them, and experience best code practices. You get to learn how the professionals work. You get to test your skills after lots of learning.
→ Build a resume. GitHub is indeed the new resume.
The projects and years or months of experience on Github show your credibility, which a standard sheet of paper cannot do. It indicates to the employer or potential client that you have hands-on experience and proof.
Now that we know the benefits, how can I get started?
How can I get started?
GitHub is where you can find most open-source projects. It is your new home now.
I don’t recommend skimming through each project to find issues matching your skill sets. There are more than 130 million public repositories on GitHub. You will give up faster than the snail in the movie Turbo.
Let me list a few steps that will help you find open-source projects.
Prerequisites
First, allow me to list two requirements to begin with open-source projects.
Make sure:
→ You have a clear foundation in a specific domain, like Web Development. For instance, you should know languages like JavaScrript proficiently if you wish to contribute to web applications.
→ You are aware of version-control platforms like Git. You should know the basic commands to fetch, connect remote repositories, fork a project, commit & push changes, etc.
→ You have the skills to communicate with the massive open-source community.
We have a circle of like-minded developers trying to upscale themselves while helping others. You must know how to talk to these people and convey your problems.
→ Basic understanding of tools like IDEs.
Once you tick those requirements, you can continue.
Finding open-source projects
→ Search for issues with the "good first issue" and "good-first-issue" labels. You can filter through them, find the ones that suit your skills according to language, and pick the individual repositories.
Now, you can become specific and find issues based on your skills. For me, it's JS.
You can also refer to websites like https://goodfirstissue.dev/, https://goodfirstissues.com/, etc. You can even fix typos that are causing some features to act miserably.
→ Similarly, search for issues, repositories, and topics with the "Contributions Welcome" tag. You'll find tons of repositories created by seasoned developers to help beginners.
For example, I found the following repository when I searched for “Contributions Welcome” on GitHub. It has a list of issues or tasks in the description of the repo for beginners to complete and contribute for the first time.
mhkeller / vega-lite-api-examples
A repository containing Vega-Lite-API implementations of all of the examples in the Vega-Lite gallery. Work in progress and contributors welcome!
Vega-Lite API Examples
Examples completed: 220 / 703
A repository containing Vega-Lite-API implementations of all of the examples in the Vega-Lite gallery.
Contributions welcome!
Usage
Test that all of the chart modules in src/
return their matching JSON spec defined in specs/
.
npm test
Getting started
See the bar_aggregate.vl.js
file as an example.
If you want to write an implementation, go to a file in the src/
folder and create a default function that exports a vega-lite spec. To test it, run npm test
.
Tests are automatically generated when you run npm test
. See the list below for which examples have already been created.
Notes
- As described in this issue and this PR, the
mark
field may not match the spec. This may occur whenmark
is nested inside aspec
or alayer
spec
"spec": {
"mark"
…→ Get started with projects that you already use, like Notion for me. Not to mention, I'm writing this article draft on Notion.
However, Notion isn’t open-source. Hence, I’ll perform a quick Google search. I’ll search for “Notion open-source alternatives” and pick the top results.
Once I find an open-source alternative on Github, I will try to use the software, see if it fits my needs, and head into the “Issues” section.
Based on the “good-first-issue” label, search for bugs, errors, or new features and choose an issue. I found the following repository, an alternative to Notion.
I will find issues with the “goTod-first-issue” label now.
From the results found using this label, I can pick an issue, understand it, and fix it using the steps in the next section. For now, let us continue exploring the methods to find projects.
→ Pick projects with large user bases like Android, Firebox, Meta, etc. They require lots of changes and improvements. Your change will improve the experience for millions.
You can subscribe to the newsletters of these organizations, join Discord or Slack servers, and interact with the folks genuinely, even on Twitter (X), to get your foot in the door.
→ You might have used tons of NPM packages in the past for your projects. Even these packages are open-source, and they are on GitHub.
Since you know about those packages, you can help them fix errors, improve features, etc.
→ Once you find a repository or project, search for the keyword "todo" to complete the remaining tasks kept aside for contributors.
You can search for that keyword in the GitHub search bar, filter by the code files containing the "todo" keyword, and find a task you can complete.
Most projects have rules on contributions. You must read the README.md
or contribution.md
file to get the gist of it. Nevertheless, You don’t have to make massive changes. Even precisely helping others makes an impact.
Even if you don’t have a solution to an issue that does not match your tech stack, I recommend you learn about it and contribute to building experience. But how do I fix these issues and give my code solution to the repository owner?
Contributing to open-source projects
Let’s assume you found a project with an issue you can solve. Here’s a step-by-step list to submit the solution.
→ You need to fork the project. Once you do that, the repository will appear on your profile. You can modify the forked repository in a separate branch to avoid sending the original repository on fire.
→ A forked repository is a carbon copy of the original repository. For security reasons, you cannot directly modify the original repo.
Hence, you need to fork it, make changes, and then request the owner of the original repository to append those modifications.
→ Use Git, Github Desktop, or SSH to clone the code from your Github to your local computer.
→ Make a new branch in the forked GitHub repository you cloned from the previous step through the VSC terminal. Use this new branch to push your changes and solutions.
I ask you to create a new branch because if you modify the main one, you will destroy a few things if your code has bugs or errors. Hence, be careful. I'm sure you don't want to be the Oppenheimer of Github.
→ You can now make your changes to fix those issues. Make sure you make these changes and push the changes to the new branch, not the main one.
Once you push the changes to your forked repository using Git or Github Desktop, you will see a banner on your forked repository page above the code files that prompts you to "Compare and pull request" OR "Sync Fork" OR "Open Pull Request."
→ Click on that button and create a pull request. Write the new modifications for the repository moderators to review in the request description.
A moderator will merge your code with their repository once they find your contribution helpful.
You need to cite the issue number, task name, or any other reference point for the owner to review your modifications and merge your forked project to the original repository.
You can submit the request and wait for feedback.
Be aware of licenses and neglected contributions
→ Some developers put various licenses and restrictions on their open-source code. Hence, don't be like Github Copilot. You don't want cops and lawyers on your front porch.
You don't want to stay awake at 2:45 AM sipping coffee and trying to solve bugs introduced by developers from other open-source projects that you recklessly trusted with their contributions. Take care of that.
→ Check whether the previous closed contributions received valuable feedback. If not, don't waste your time contributing if you do not realize where you might make mistakes.
It's not worth playing that game if moderators cannot deliver feedback. Stay with a community that helps you grow.
And that's it.
Summary
Open-source codebases are projects of various developers and corporations, publicly available on GitHub for developers to contribute, modify, document, or help in any form or shape that helps them build more experience.
It allows developers to network with others, share experiences, and bring other benefits that I discussed earlier.
Nevertheless, it’s a great option to get experience. After completing my technical writing journey or during this venture, I’ll contribute to open-source projects. And when I do, I hope to see you there.
--
By the way, I am writing a book called CrackJS, which is based on and covers the fundamentals of JavaScript. If you want to learn more about JS, follow me on this journey of writing this book with these articles trying to help developers worldwide.
If you want to contribute, comment with your opinion and if I should change anything. I am also available via E-mail at hello@afankhan.com. Otherwise, Twitter (X) is the easiest way to reach out - @justmrkhan.
The notion document containing the resources/sources used to write this piece with drafts and an extra section — https://crackjs.com/start-open-source.
Top comments (1)
Great Article. Learned a lot!
Thank you Afan for sharing this with us.