- Concept of Open Source ๐ค
- Why Contribute to Open Source? ๐
- Understanding Contribution ๐งฉ
- Roles in Open Source Projects ๐ ๏ธ
- Pre-requisites (Git + GitHub + Markdown) ๐
- Conventional Commits ๐
- Basic Flow of Open Source Contribution ๐
- Standard Guidelines for Open Source Projects ๐
- Finding Good Open Source Projects ๐
- Ideal Ways to Contribute to Open Source ๐ก
- Addressing Code Request Changes in Pull Requests ๐ ๏ธ
- Legal Side of Open Source โ๏ธ
- Extra Resources ๐
Imagine you have a cool project, like a super fun game. Right now, only you can play it because you have the secret rules (code). Now, what if you tell your friends the rules, and they start adding cool new things to your game? That's like Open Source! ๐ฎ
Open Source means sharing the rules (code) of your project with everyone. Just like when you share your game rules, others can see, learn, and even add new features. For example, imagine if Google shared how they make Google Maps. People can help make it better by fixing problems and adding cool stuff. ๐บ๏ธ
It's like a big team helping each other for free! And if you help, too, it's like getting a special badge that says, "I helped make this cool thing!".
Imagine if you could tell everyone, "I helped make Google Maps!" That's why Open Source is damn awesome.
You don't have to be a tech expert. Open Source is for everyone, even those who don't know how to code. Yes, even for YOU :)
I hope you get a little idea of what Open Source is.
ย
There is no one-size-fits-all roadmap in open source. Each individual has their unique journey and approach to getting involved. When I started, I stumbled into open source while exploring GitHub, unaware of its vast potential. So, if you're new, embrace the journey and enjoy the exploration!
Open Source is more than merging a PR.
In today's interconnected world, participating in an open-source community offers numerous benefits and opportunities for personal growth.
You Code. Collaborate. Network.
You don't need a job, experience, or technical expertise to get started. The open-source community is incredibly inclusive and supportive.
What will you learn?
- Practical knowledge and modern development practices.
- Credibility and the chance to connect with like-minded individuals.
Most importantly, You will always be welcome. And YOU interact with experienced people all the time. ๐ฅ
There are plenty of reasons to contribute to open source:
- Learn, teach, and gain experience in various skills.
- Enhance your profile's credibility by showcasing your work.
- Boost your reputation and advance your career.
- Find mentors or expand your professional network.
- Experience personal fulfillment and potentially catch the eye of future employers or collaborators.
Tip: Focus on reputable organizations for long-term benefits over individual repositories.
For newcomers, the prospect of contributing to open source can be daunting.
You may wonder:
- How do I find the right project?
- What if I lack coding skills?
- What if something goes wrong?
ย
I've said it enough times, saying it again. A common and deadly misconception about contributing to open source is that you must contribute code. Trust me, you don't have to.
-
If you like planning events.
- organize workshops or meetups for the project.
- Help community members find the correct medium for speakers
-
If you like designing.
- Improve the design to increase usability.
- You can make a style guide that developers can follow for a consistent visual design.
- You know about UX laws that you use to propose changes.
- Create a new logo and improve branding.
-
If you like writing.
- Improve documentation and contributing guidelines
- Write tutorials and suggest newsletters.
Don't underestimate the power of documentation.
-
Do you like coding?
- Solve technical problems.
- Suggest new features.
- Improve testing and other code standards.
Now, you need to find a good software project, right?
Hell, nah!
-
You can work on awesome lists
-
You can contribute and frame interview questions
And a whole lot more! Explore it yourself.
This is important, and everyone needs to be familiar with the roles.
These people contribute to the project in one way or another. They follow contributing guidelines
which guide them on how they can contribute and help the project grow.
ย
Every good open source project has a lot going on, and these people are responsible for driving the vision and goals of a project. They review the code and suggest and consider features.
They are more like an internal part of the team.
The tasks can differ based on the team. Some maintainers assign people to issues, while some help in reviewing the code, and do several other works.
I'm also an open source maintainer of LinksHub.
ย
The person/s or organization who created the project has the power to recruit maintainers, assign new roles, and is the main authority.
ย
The person/s who has administrative ownership over the organization or project (not always the same as the original author)
ย
These are the members of the community who can provide feedback about the product, suggest bugs or improvements, and many more.
These are neither contributors nor maintainers, just the users of the product.
The open source community is on GitHub, and so you need to know a bit about Git & GitHub.
Let's cover each.
ย
Git is a version control system. It helps you keep track of your code's changes and manage code across teams.
You should know how to:
- Create a repository
- Add files to a repository
- Commit changes
- Create branches
- Merge branches
GitHub is a platform built on top of Git. It's where people share and collaborate on code. Itโs like social media for coders.
You should know how to:
- Fork a repository
- Clone a repository
- Create pull requests (PRs)
- Review pull requests
- Merge pull requests
Markdown is a lightweight markup language with plain-text formatting syntax. Itโs what you use to style your writing on GitHub.
You should know how to:
- Format text
- Create headers
- Make lists
- Add links
- Insert images
Conventional commits provide a standardized format for commit messages, enhancing clarity and communication within projects. They follow a simple structure of <type>(optional scope): <description>
.
For example:
feat: add new feature
fix: resolve issue with login
Using conventional commits helps maintain a clean and structured commit history, making it easier to understand changes and track issues.
The contribution flow typically involves the following steps:
-
Read Contribution Guidelines: Start by reading the project's contributing guidelines to understand how you can contribute effectively.
-
Find or Create Issues: Look for existing issues in the project's issue tracker or create new ones if you find something that needs attention.
-
Fork the Repository: Fork the project's repository to create your copy where you can make changes without affecting the original project.
-
Make Changes in a Branch: Create a new branch for your changes and make the necessary modifications to address the issue you're working on.
-
Submit a Pull Request: Once you're done with your changes, submit a pull request to propose your modifications to the project's maintainers.
-
Respond to Feedback: Be prepared to receive feedback on your pull request and make any necessary changes based on the feedback provided by the project's maintainers.
-
Merge Changes: Once your pull request is approved, the project's maintainers will merge your changes into the main branch, and your contributions will become part of the project.
Good open source projects should have the following components:
-
README: A clear and informative README file that explains what the project does, how to use it, and how to contribute to it.
-
Contributing Guidelines: Guidelines that outline how contributors can contribute to the project, including instructions for setting up the development environment, coding standards, and submitting pull requests.
-
Code of Conduct: A code of conduct that sets the tone for respectful and inclusive communication and behavior within the project's community.
-
Description: A brief description of the project, its purpose, and its goals.
-
License: A license that specifies the terms under which the project is distributed and grants permissions for usage, modification, and sharing.
-
Security Policy: A security policy that outlines how security vulnerabilities and issues should be reported and addressed.
-
Issue Templates: Templates for creating new issues that help standardize the information provided and make it easier for maintainers to address them.
-
Pull Request Templates: Templates for creating new pull requests that guide contributors on the information to include and the process to follow when submitting changes.
Finding good open source projects to contribute to can be challenging, but there are several strategies you can use:
-
Explore GitHub Explore: GitHub Explore is a great place to discover trending repositories, curated collections, and recommended projects based on your interests.
-
Search Repositories by Topic: Use GitHub's search functionality to find repositories related to specific topics or technologies you're interested in.
-
Join Community Platforms: Join community platforms like Reddit, Discord, or Slack where developers discuss open source projects and share opportunities for contribution.
-
Check Out Curated Lists: Explore curated lists of open source projects compiled by individuals and organizations to find projects across different categories and technologies.
When it comes to contributing to open source, there are several ways you can get involved:
-
Code Contributions: Contribute code to fix bugs, implement new features, or improve existing functionality in open source projects.
-
Documentation: Improve project documentation by fixing errors, clarifying instructions, and adding examples to help users understand how to use the project.
-
Testing and Bug Reporting: Test the project and report any bugs or issues you encounter, helping maintainers identify and address problems.
-
Community Support: Provide support to other users and contributors by answering questions, troubleshooting issues, and sharing your expertise with the community.
-
Translation and Localization: Translate project documentation, user interfaces, and other content into different languages to make the project more accessible to a global audience.
When you submit a pull request, be prepared to receive feedback and requests for changes from the project's maintainers. Here are some tips for addressing code review comments:
-
Be Responsive: Respond promptly to code review comments and requests for changes to demonstrate your commitment to collaborating with the project's maintainers.
-
Be Open to Feedback: Be open-minded and receptive to feedback, even if it means making significant changes to your code or approach.
-
Be Professional: Maintain a professional and respectful tone in your communications with the project's maintainers, even if you disagree with their feedback or suggestions.
-
Be Persistent: Don't get discouraged if your pull request isn't accepted immediately. Keep working on improvements and addressing feedback until your contributions meet the project's standards and requirements.
When you contribute to open source projects, it's essential to consider the legal implications and ensure that your contributions comply with the project's licensing and copyright requirements. Here are some key legal considerations:
-
Open Source Licenses: Make sure you understand the project's open source license and comply with its terms when contributing code or other content to the project.
-
Contributor Agreements: Some projects require contributors to sign contributor agreements, which grant the project certain rights to use and distribute their contributions.
-
Copyright and Licensing: Be mindful of copyright issues and licensing restrictions when incorporating third-party code or content into your contributions.
-
Patents: Some projects have patent clauses in their licenses that grant contributors certain patent rights related to their contributions.
-
Legal Advice: If you have any doubts or concerns about the legal aspects of contributing to an open source project, consider seeking legal advice from a qualified attorney.
Here are some additional resources to help you on your open source journey:
-
Official Guides and Tutorials: Many open source projects provide official guides, tutorials, and documentation to help contributors get started and learn more about the project.
-
Events and Workshops: Look for events, workshops, and conferences focused on open source software development where you can learn new skills, network with other developers, and contribute to projects.
-
GitHub Tools and Features: Explore GitHub's tools and features for collaboration, code review, project management, and more to streamline your contributions to open source projects.
-
Community Forums and Discussion Boards: Join community forums, discussion boards, and social media groups where you can connect with other developers, ask questions, and share your experiences with open source software development.
-
Open Source Organizations: Consider joining open source organizations and foundations that support and promote the development of open source software and provide resources and support for contributors.
Congratulations on reaching the end of this guide! ๐
I hope you found it helpful and informative, and I wish you all the best on your journey into the world of open source software development.
Remember, the most important thing is to have fun, learn new things, and make a positive impact on the world through your contributions to open source projects.
Happy coding! ๐ฉโ๐ป๐จโ๐ป