Why You Should Contribute to Open Source Projects and How to Get Started
Content
Making a positive impact in the Open Source Community π
π¬ Introduction
Have you ever wondered why so many people are passionate about contributing to open-source projects? In this blog post, we will explore the reasons why you should consider becoming an open-source contributor and provide you with a beginner's guide to getting started. Open source offers a wealth of opportunities for learning, skill-building, and making a real impact. We will discuss how contributing to open source can benefit you, the different ways you can contribute, and practical tips for taking your first steps in the open source community. So, let's dive in and discover the great experience of open-source contribution!
π Why Contribute to Open Source Projects
Contributing to open source projects offers several benefits:
- Helping Others: Your contributions, whether it's documentation, minor code changes, or opening an issue, improve the tools or software used by others. When you work on a project, you improve the quality of work for everyone and help other developers by providing solutions, improving code, and promoting readable and maintainable code.
- Excellent Project Quality: Due to contributions from developers worldwide, the quality of open source projects is often superb. Your code is publicly visible to other developers, encouraging you to focus on writing clean and maintainable code that is easy to understand and modify.
- Networking and Reputation Building: Contributing to open source projects can help you build your reputation, your resume, and even your personal brand. It allows you to meet new people, showcase your skills to potential employers, and build confidence.
- Skill Development: Working on open source projects helps in developing leadership and management skills, improving coding acumen, and learning new rules and styles of programming.
- Personal Growth: It can be a rewarding way to learn, teach, and build experience in various skills, and it gives a sense of agency over one's work and contributions.
Remember, any project you decide to contribute to should have a community channel (usually on Slack or Discord). Make sure to join them in case you need to ask questions or want to meet other contributors.
π οΈ How to Contribute
When we say contributing to open-source, it does not necessarily mean that you need to know how to code. There are different ways in which you can contribute even if you are a non-coderβ-βbut having some coding skills will help you (and the projects) out a lot. Some common contributions can be through:
- Documentation: Adding a description to a project's documentation to elaborate on a certain point, mostly referred to as a README file (check this guide on how to write a Good README file).
- βοΈ Read the documentation to see if it is clear and complete. If not, offer suggestions on how to improve it.
- βοΈ Fix small things, like typos or dead links. Add missing information, especially if it is something you had to find out for yourself.
- βοΈ Add (links to) relevant blog posts (even your own).
- βοΈ Review any open PR's (pull requests) on the documentation.
- Guidance: Giving guidance on a specific project and how to use it. This helps new users understand how to use the project and can improve the overall user experience.
- Sample Output: Adding sample output to show how the code works. This helps users understand how the code works and can make it easier for them to use the project.
- Tutorials: Writing in-depth tutorials for the project. This helps new users understand how to use the project and can improve the overall user experience.
- Translation: Adding translation aka localization for a projectβ-βA good place to start with this might be with the freeCodeCamp's translation program.
If you don't know how the project works, translating the documentation is an excellent way to learn. That's how I first started contributing and learning about Kubernetes. Of course, you need to speak [fluently] another language, so the translation matches the original text. Many people don't speak or don't feel comfortable working in English, so your contribution can go a long way! Some projects that need help with translation: Kubernetes, CNCF Glossary, React, Python, PHP, Mozilla Firefox, Ruby on Rails, and Rocket.chat, etc.
- Answering Questions: Answering questions about a project (like on Stack Overflow or Reddit). As a user, you can probably help other users with problems you have faced before. Remember, someone probably helped you in the past in one way or another. Share what you have learned! And if you notice a lot of similar questions, consider adding them to the documentation.
- Mentoring: You can offer to mentor another contributor. You can help guide and support new contributors, sharing your knowledge and experience with them.
- Organizing: You can fix and arrange the project's work folder correctly. This helps keep the project organized and makes it easier for other contributors to find what they need.
- Testing: Add unit tests and test new features. If you know how, you could try to add a unit test that reproduces the issue, which both shows there is an issue and will help get it fixed. And if you can, fix it yourself! Maintainers and contributors don't always have time to extensively test new features or versions. This is where you can help! Create a new project to test the new feature, or upgrade your existing project to the new version (even if it is still in development). Provide feedback to the people who are working on it.
- Cleaning Up Code: Projects might also benefit from refactoring or cleaning up code. There are plenty of ways the code can be improved, especially if they have been developed over several years by different developers.
- Upgrading Dependencies: If you notice a project is using outdated dependencies, see if you can upgrade them. Especially if the older versions contain security vulnerabilities. Note that some projects might introduce breaking changes, so always ensure that the project works with the upgraded dependency.
π Where to Start and Find OSS Projects
Several platforms and resources exist to guide and connect aspiring contributors with suitable projects:
- GitHub: GitHub is one of the largest and most popular platforms for hosting open source projects. You can explore projects based on programming languages, topics, and trending repositories.
- CodeTriage: CodeTriage is a platform that helps you find open source projects with open issues. You can filter projects by languages and subscribe to receive issues in your inbox. This is a great way to get a steady stream of curated issues to work on.
- Up-for-grabs: Up-for-grabs is a website that aggregates projects with issues tagged as "up-for-grabs," "good first issue," or similar labels. You can filter projects based on programming languages and find issues suitable for beginners.
- First Timers Only: First Timers Only is a collection of links to GitHub issues that are labeled as suitable for first-time contributors. It's a curated list of projects that welcome newcomers and provide a good entry point for those looking to make their first contribution.
π¨ Bonus: Open-source Sustainability Crisis
Open-source sustainability refers to the ability of open source software to maintain its development, support, and maintenance over time. The crisis in open source sustainability arises from the challenges of fair compensation, resource exhaustion, and burnout among contributors. This is a significant concern as it can lead to the instability of critical software projects, affecting the broader digital ecosystem. The importance of addressing this crisis lies in ensuring the continued availability and reliability of open source software, which underpins many modern technologies and businesses. By supporting and contributing to open source projects, individuals and organizations can help mitigate this crisis and ensure the long-term viability of essential software resources.
You can find more context in this blog post.
π― Wrap Up
Contributing to open-source projects is not only a way to give back to the community but also a valuable opportunity for personal and professional growth. By participating in open source, individuals can make a positive impact, hone their technical skills, and build a strong portfolio for future career opportunities. Open source offers a collaborative environment where individuals can learn, teach, and share knowledge, ultimately contributing to the development of high-quality, accessible software. Overall, contributing to open source is a rewarding experience that not only benefits the community but also the individual contributor in numerous ways.
Until next time, γ€γ₯γ π
π‘ Thank you for Reading !! ππ»ππ, see you in the next blog.π€ Until next time π
π Thank you for sticking up till the end. If you have any questions/feedback regarding this blog feel free to connect with me:
β»οΈ LinkedIn: https://www.linkedin.com/in/rajhi-saif/
β»οΈ X/Twitter: https://x.com/rajhisaifeddine
The end βπ»
π° Keep Learning !! Keep Sharing !! π°
π Stay updated
Subscribe to our newsletter for more insights on AWS cloud computing and containers.