All posts

Tips for Where and How to Contribute to Open Source Projects


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. 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.

Choosing 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.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


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


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.


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.

AFFiNE is still in beta, but we are continuing to build to a more feature-rich and stable build. Come and join us on our journey over on our media platforms.

Some Q & A if you still be willing to take your time going through it:

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