One difficulty I had as a CS student (and right after graduating) was thinking of projects to work on to enhance my skills. I did many Google searches such as “best beginner-friendly projects” or “Top 10 programming projects as a CS major.” This would always result in the same, basic responses like a JavaScript game, a calculator or conversion tool, a web scraper, an e-commerce site, etc. I would start one and then quit not even halfway through. It’s hard to stay motivated when you don’t have any real stakes or passion for what you’re building. At that time in my schooling, it never occurred to me to work on an open-source project. I didn’t think my skills were at the level necessary to make any impact.
It wasn’t even until I joined the Accelerator program and was struggling with an Objectives and Key Results (OKR) project that I thought, “Why not just contribute to an already-existing project?” Here, you’ll find why you should be contributing to open-source projects, the importance of community and collaboration, and how to contribute even if you’re just starting.
Getting Started
There are many reasons why contributing to open-source projects is important. You’ll enhance your skills and get exposure to new technologies. Contributing will make it easier to build your portfolio, especially if it’s a project you are truly interested in. You’ll get the chance to solve real-world problems and address practical needs. You’ll gain personal satisfaction and fulfillment knowing your code is actually being used by others. Open-source environments encourage developers to think outside the box. And finally, the amount of community support is a mega opportunity to grow your network.
When it comes to contributing to an open-source project, community and collaboration are a staple. Knowledge sharing leads to collective improvement and continuous learning. Be sure to leverage this valuable resource. Take advantage of the diverse perspectives that come along with open-source communities and build positive relationships with maintainers and other contributors. The next sections will talk about the steps of how to get started and the contribution workflow.
Choosing the Right Project
If you are new to development and don’t know where to begin, look for a beginner-friendly project with an active community. This will result in an easier time making a meaningful impact on the project. Plus, it’s good to gain momentum with a few wins before diving into more complex projects. A few different types of projects can be a good starting point.
A project that needs documentation is a great starting point and a way to get familiar with the project. Writing documentation could include writing guides, updating existing documentation, fixing typos or out-of-date information, and improving clarity, among other things.
Another valuable beginner-friendly contribution is bug fixes. This is a way to get familiar with the structure of the project. Bug fixes tend to be pretty straightforward and don’t require an immense understanding of the codebase. A way to add value by improving code quality and maintainability is by adding tests. It’s also a beneficial skill to exercise as a developer. You can start by looking for projects with limited test coverage. This is a way you can contribute if you’re not comfortable contributing to the main functionality.
Other projects that could be beginner-friendly are projects you currently already use or community projects specifically focused on helping newcomers. With a project you already use, you have a personal interest in improving the project. You will also be quite familiar with its functionality. Plus, you’ve probably already had a million ideas about how you can improve it. Finally, community projects can provide a lot of help for newcomers starting with open-source contributions. There is an intent to create a beginner-friendly environment, so you will receive mentorship with the contribution process.
Ultimately, choosing the right project boils down to your interests, what skill sets you may have or want to improve, languages or frameworks you are comfortable with, or any you want to explore. Even so, there is a project out there for any skill level.
Understanding the Project
Before jumping into writing any code, make sure you do a bit of research to prepare for the task. Understand the project’s purpose, structure, and codebase. Dive into any relative resources such as frameworks or libraries used within the project. Explore the documentation and any relevant resources.
Any official docs or the README is a great place to start. The README should contain essential information about the structure, dependencies, and setup, such as installation or prerequisites. Another great way to gain an understanding of the project is to explore the codebase. This will help you recognize the implementation details. Start with looking for the main entry points such as a main file or core library modules. Follow the execution flow to see how the components interact together. Look for patterns in the code design.
Remember how I said the community is so important? Well, take this time to look for forums, discord servers, or any other community channels related to the project! You can use these to ask questions, seek clarification, or even get help with setting up the project. Lastly, experiment and test! Set up your dev environment and play around with the code. Try out different features, change the code, and break things to understand the behavior of the code and how different components interact. As a result, this will cement a deeper understanding of the project and potential issues.
The Contribution Workflow
After choosing and gaining an understanding of the project, you will need to have an idea of the general workflow when contributing. Quick disclaimer: this is just an overview. Specific details of the workflow, guidelines, or conventions may vary depending on the project.
The Steps
First, you’ll want to fork the repository. This creates an instance of the project under your GitHub account. Then you will clone the repository which creates a local copy where you’ll be making changes to the code. But before making any changes, you’ll need to create a new branch to work off of. This is a resource I found (and still find!) very useful when navigating Git commands.
Once you’ve made the necessary changes you’ll commit and push those changes. If you feel like you’ve resolved the issue and you are ready for review, you can create and submit a pull request. Be sure to add an appropriate amount of context to the pull request. Here, you can explain the problem and the approach you took. Point out any changes you made or any other relevant information. Reference any specific issues or features related to your changes. Once you submit your PR, the maintainers will be notified.
Finally, be sure to keep an eye on the discussion. The maintainers or other contributors may have feedback or questions about your PR. You’ll want to be sure to address these concerns promptly. Be prepared to make iterative changes based on the feedback. After you push your new changes, the PR will be automatically updated. When your PR is finally approved, your changes will be merged into the main project repository and you can celebrate your first contribution!
Tips for a Smooth Process
To make this workflow a smooth and easy process, remember to take full advantage of the community. Observe how other contributors or maintainers structure their code, write tests, and handle discussions. Be sure to test your changes before submitting your PR. You don’t want to introduce new bugs or issues into the codebase. This may be in the form of manual testing, checking for regression, or writing your own tests. It’s also a good idea to keep your PRs focused. Create separate branches and pull requests for each new feature you plan to work on. This allows for much more structured and focused feedback. And last, but not least, document your code! Especially if you don’t have a lot of experience. Maintaining clear and concise documentation allows others to review and understand your work more easily. This can also point out any gaps in your knowledge or misunderstandings you may have about the codebase or the problem.
After you celebrate your first contribution, continue to contribute to build your skills and engage with the community. Because contributing to open-source is not only about writing code, it’s also about collaboration and knowledge sharing. If you’re feeling overwhelmed or don’t think you have the skills to make an impact on a project have patience and persevere!
Contributing to Open-Source Projects
Contributing to open source can be a complex and time-consuming process. The best way to grow as a developer is to persevere through these challenges. This process will get easier the more you contribute. Just remember to start small, follow the guidelines, talk with the community, be open to feedback, and challenge yourself!