All posts
Last edited: Oct 05, 2024

Tips for Where and How to Contribute to Open Source Projects

AFFiNE

Participating in open-source projects offers valuable experiences for developers looking to hone their skills, gain meaningful project experience, and forge connections within the development community. I am a junior college student and currently a core developer at blocksuite, responsible for the refactoring and implementation of the rich text core.

Although I have only been involved in open source for one year, I believe that I still have something valuable to share. Detailed contributing guidelines are crucial as they assist newcomers in understanding how to participate in open-source projects, providing technical details and setting expectations for contributions.

In this blog post, I will share tips and insights on selecting the right open-source project, contributing effectively, and continuously refining your technical skills.

What is Open Source and Why Contribute?

Open source refers to software projects that are freely available for anyone to use, study, modify, and distribute. This collaborative approach to software development fosters innovation, enhances security, and promotes transparency. By contributing to open source projects, you can gain invaluable experience, build a professional network, and sharpen your skills in a specific programming language or technology.

Moreover, open source projects provide a unique platform to tackle real-world problems, receive constructive feedback from other developers, and contribute to better documentation. This not only helps in personal growth but also in making a meaningful impact on the broader community. Whether you’re looking to enhance your coding skills, learn new technologies, or simply give back to the community, contributing to open source projects is a rewarding endeavor.

Benefits of Contributing to Open Source Projects

Contributing to open source projects offers a multitude of benefits that can significantly enhance your development journey:

  • Improved Skills: Working on open source projects allows you to hone your skills in a specific programming language, technology, or domain. It’s a hands-on learning experience that can accelerate your growth.

  • Networking Opportunities: Open source projects are a great way to connect with other developers. Building your professional network can open doors to new opportunities and collaborations.

  • Real-World Experience: Open source projects often address real-world problems, providing you with practical experience. You’ll also receive feedback from other developers, which can help you improve your work and create better documentation.

  • Career Opportunities: Demonstrating your skills, commitment, and passion through open source contributions can lead to career opportunities. Employers often value the initiative and expertise shown by active contributors.

  • Personal Satisfaction: There’s a unique sense of fulfillment in seeing your contributions make a difference. Knowing that your work benefits a larger community can be incredibly rewarding.

By engaging with open source projects, you not only advance your own skills but also contribute to the collective knowledge and progress of the development community.

How to Choose The Right Open-Source Projects

Instead of exclusively concentrating on well-established open-source projects such as React, Vue, and Node.js, it’s important to explore emerging projects that resonate with your interests. Contributing to these projects can have a substantial influence and facilitate valuable connections within the community. Numerous open source projects are available to help beginners understand how to start contributing effectively.

When selecting open-source projects, keep the following tips in mind:

  1. Seek out projects that receive consistent updates, indicating an active and committed team behind them. This demonstrates their dedication to maintaining and improving the project over time.

  2. Choose projects that address significant and widespread issues. By focusing on projects that tackle real-world problems, your contributions can have a broader impact and benefit a larger user base.

  3. Prioritize projects that genuinely captivate your interest. By selecting projects aligned with your passions, you’ll ensure that the time and effort you invest in contributing to them are genuinely fulfilling and enjoyable.

  4. Ensure you select an appropriate project name, making sure it is unique and does not conflict with existing brands or trademarks to avoid legal issues or confusion among potential users.

By following these guidelines, you can identify emerging open-source projects that align with your goals, make meaningful contributions, and foster valuable connections within the open-source community.

Where to Find Open Source Projects to Contribute to

Discovering cool open source projects to contribute to can seem overwhelming, but there are several effective ways to find projects that align with your interests and skills:

  • GitHub: As a hub for open source software, GitHub offers a powerful search feature to find projects based on keywords, programming languages, and topics. Explore repositories, check out trending projects, and find something that excites you.

  • Open Source Initiative: This non-profit organization promotes open source software and provides a comprehensive directory of open source projects. It’s a great starting point to discover new and impactful projects.

  • Featured Projects: Many tech companies, like Google, showcase their open source projects on their websites. These featured projects often come with extensive documentation and active communities, making them ideal for new contributors.

  • Online Communities: Platforms like Reddit’s r/opensource are vibrant communities where developers share and discuss open source projects. Engaging in these communities can help you discover new projects and get advice from experienced contributors.

  • Networking: Attending conferences, participating in meetups, and connecting with other developers can lead to discovering new open source projects. Networking not only helps you find projects but also builds relationships that can support your open source journey.

By leveraging these resources, you can find open source projects that match your interests, skills, and goals. Start contributing and become an active member of the open source community.

Choosing the Right Open-Source Projects

2CndymHs5y-L--UjDmZ9tbGlvjOQpoUqb-r5nSrVltY=

Instead of exclusively concentrating on well-established open-source projects such as React, Vue, and Node.js, it's important to explore emerging projects that resonate with your interests. Contributing to these projects can have a substantial influence and facilitate valuable connections within the community.When selecting open-source projects, keep the following tips in mind:

  1. Seek out projects that receive consistent updates, indicating an active and committed team behind them. This demonstrates their dedication to maintaining and improving the project over time.

  2. Choose projects that address significant and widespread issues. By focusing on projects that tackle real-world problems, your contributions can have a broader impact and benefit a larger user base.

  3. Prioritize projects that genuinely captivate your inter

  4. est. By selecting projects aligned with your passions, you'll ensure that the time and effort you invest in contributing to them are genuinely fulfilling and enjoyable.

By following these guidelines, you can identify emerging open-source projects that align with your goals, make meaningful contributions, and foster valuable connections within the open-source community.

Contributing to Open Source Projects

9tNZFCFrZSMGE7OI9aKH6AiQnvohUiV653nsJdCqQb0=

Once you have selected a suitable open-source project, the next step is to actively engage with the community and make contributions. Here's a suggested approach:

  1. Start by submitting an issue: This could be a bug report, a feature request, or even sharing insights and asking questions related to the code. Ensure you follow the project's submission guidelines and maintain a constructive and respectful tone. This demonstrates your interest and willingness to contribute positively to the project.

  2. Begin with smaller contributions: As you become more familiar and comfortable with the project, start by submitting pull requests (PRs) that address smaller tasks, such as adding test cases or fixing documentation errors. By doing so, you build trust with repository maintainers and establish a track record of reliable contributions. This will also help you familiarize yourself with the project's codebase and development processes.

  3. Enhance communication and code clarity: When submitting code, make sure to provide clear and concise explanations of your code logic. This helps reduce the burden on repository maintainers during code review and facilitates the faster merging of your contributions. Consider including relevant comments, documentation updates, and any necessary context to aid understanding.

  4. Collaborate and seek feedback: Engage in discussions with the project's community and seek feedback on your contributions. Actively participate in relevant forums, chat channels, or mailing lists to collaborate with other contributors and maintainers. This collaborative approach not only helps improve the quality of your work but also strengthens relationships within the community.

By following these steps and actively engaging with the project's community, you can establish a positive reputation, build trust with maintainers, and make meaningful contributions to open-source projects. Remember, open-source communities thrive on collaboration, mutual support, and the collective efforts of passionate contributors.

Improving Personal Technical Skills

bI1GVymJNyS5w_lZ-gjuCmJynal3RRsOTppwzX_gJCw=

To enhance your technical skills, it is important to establish effective channels of information, exercise patience, and develop the ability to ask questions. Here are some suggestions:

  1. Subscribe to high-quality industry newsletters and follow renowned influencers on platforms like Twitter. These sources can provide valuable insights, updates, and trends in the field, helping you stay informed about the latest developments.

  2. Expand your knowledge base by focusing on multiple key topics rather than limiting yourself to a single subject. This broader perspective can provide a well-rounded skill set and help you connect different concepts and technologies.

  3. Patience is key in skill development. Take the time to read code from exceptional open-source projects, study their structure and implementation, and try to understand the reasoning behind design choices. Additionally, working on your own projects and consistently practicing will lay a solid foundation for continuous growth.

  4. Engage in open-source community discussions on platforms such as Discord or through repository discussion areas. Don't hesitate to ask questions and seek guidance from more experienced community members. By asking clear and thoughtful questions and maintaining a genuine attitude, you can receive valuable answers, insights, and feedback.Remember, learning and skill development is a continuous journey. By actively seeking knowledge, staying patient, and engaging with the open-source community, you can strengthen your technical skills and thrive in your chosen field.

Conclusion

While these tips may not encompass every aspect of open-source contribution, taking them to the heart can help you find your place in the open-source community and enhance your skills as a developer. Remember that selecting the right project, contributing effectively, and focusing on refining your technical skills will ultimately lead to success in your open-source journey. If you have any questions or need support, don't hesitate to reach out to fellow developers or community members.

More activities are prepared and coming soon

As we embark on this exciting venture, we are committed to building everything publicly and fostering an inclusive environment that empowers individuals, including beginners and students, who are passionate about participating and contributing to open-source projects. We invite you to stay connected with us as we continue to provide opportunities for learning, growth, and collaboration. Together, let's make a positive impact and create a thriving open-source community.

Frequently Asked Questions

Q1: In large-scale Open Source projects, how should we approach the maintainer? Should we directly discuss an issue?

  • A: If you encounter problems in large-scale open source projects, it is important to contact the maintainer. However, directly approaching the maintainer may not always be the best approach. First, you should look for similar issues or questions in the project's issues or other mailing lists. If there are similar issues, you can try to solve them first. If there are no similar issues, you can create a new issue and describe your problem, but be sure to describe it as clearly and concisely as possible. If you think the issue needs the help of the maintainer to solve, you can @ the maintainer in the issue and describe your problem, or send an email to the maintainer. Many open source projects have specific response times and communication methods, so please familiarize yourself with the rules and conventions of the project before seeking help from the maintainer.

Q2: Can you recommend some books for learning frontend (React)? I find it difficult to read affine.

  • A: For learning React front-end development, the following books are recommended:

    • "React Documentation" The React official documentation is the best getting started guide. It has a large number of example code and tutorials, especially suitable for beginners.

    • "React Native: Building Mobile Apps with JavaScript" This book can help you learn how to use React Native to build mobile applications and use JavaScript as the main programming language.

    • "Pro React" Pro React is a more advanced React development guide that can help you delve deeper into various aspects of React.

    • "Learning React: A Hands-On Guide to Building Web Applications Using React and Redux" This book not only introduces the basic principles of React, but also delves into other related technologies such as Redux.

Q3: How to contribute to dev/project documentation?

  • A: To contribute to open source project documentation, you can first read the documentation and determine which parts need to be updated or improved. You can fork the project on GitHub, create a branch in your own repository, make changes, and then request a merge to the original repository. You can also suggest modifications directly through the GitHub web interface. Furthermore, if you have technical writing skills, you can discuss with the maintainers on how to improve and expand the documentation, and suggest your ideas and suggestions. Most importantly, make sure your documentation changes maintain the quality and goals of the project, and make the documentation easier to understand and use.

Q4. Can you share some developers, we should follow?

  • A: I have followed a lot of developers, so it may be difficult to pick out the significant ones. Therefore, I listed several examples under the theme of CRDT and editor. I highly recommend finding new valuable users through someone that a user is already following.

Q5. Can you show some practical GitHub repo and share some real experience finding these open-source projects?

  • A: Junior developers who want to contribute to open source projects might use the following tips to locate open source projects that are a good fit for them:

    • A high level of interest or regularity of use

    • Match your skills

    • Low project complexity

What does this mean? Let me give you an actual example.

The first step is to look for open source projects that interest you. You can generally follow certain technical leaders and identify projects that interest you based on the technologies they use. For example, I learned about the star open source project Affine from @doodlewind.

At the same time, Affine uses the React technological stack, which corresponds to my own. Of course, I'm also interested in rich text editors and document collaboration, so I began my Affine open source journey.

The beginning of an open source project is the most challenging part for beginning developers. Due to the fact that this is a brand-new project and you are unfamiliar with it, you must take the time to comprehend its architecture, workings, and other factors. So where should we begin? Start by asking basic questions. For instance, simple issues with 'good first issue' tags are very simple issues in Affine or BlockSuite projects. You can decide on a topic that appeals to you. Once you have a good idea of the issue, you can search the source code for the issue. Join the Affine developer community and post your queries there if you run across a problem you don't understand, and they will give you detailed explanations.

Of course, it is not so straightforward for beginners to participate in open source contributions. That first PR can be difficult, but persevere since work is vital! Our time and energy will be well spent if your PR is approved and merged!

This is simply my own experience; you can refer to it and make changes based on your specific situation.

Get more things done, your creativity isn't monotone

Explore on Desktop
Stars on GitHub