How to Find the Best Open-Source Projects
Here I will share my experience and projects that I'd like to start my open-source plugin development with examples for Java developers
Join the DZone community and get the full member experience.Join For Free
A couple of months ago, I wanted to get my first open-source experience. What was I supposed to do? I googled "best Java open source projects" and was terrified; every website recommended Spring, Gradle, Mockito, Guava, Jenkins and etc. There's a website called GoodFirstIssue, I was really happy when I found it, but it was also a disappointment. The logical question arises why?
I will not believe that someone gets his open-source experience with projects like this. Their enormous, and it will get months, in the best case, to understand how they work. So I started researching myself; I've looked at several hundred projects to choose the bests for me. Here I will share my experience and projects that I'd like to start my open-source.
I won't tell you about the concept of open-source. Let's assume everyone understands what it is. Nowadays, for a developer to get a job, he should already know how the work on the project is done. Contributing to an open-source project provides this opportunity. You are getting real-life experience.
Here comes the moment you go to GitHub, you type in the search box "Java open-source" and get a hundred pages of open-source projects. You click on the first one with thousand starts, and what you see is documentation no less than War and Peace, with hundreds of commented issues.
Let's discuss what you need to pay attention to when looking for your good first issue. The first thing to understand is big open-source projects run according to very complex rules and involve complicated processes. Maybe it's not the best idea to start with a project with over ten thousand stars on GitHub.
1. Look for parts for the contributors in the project description. It could be sections about how and what to do if you want to contribute to the project, or often it is just the link to another document called "Сontributing.md". If such a section exists, it means that the authors encourage you to contribute to the project and will be happy if you find any issues or missing functionality. Also usually describes a simple way to set up a development environment for that specific project. Often, organizations develop and support projects. Even though the project is open-source, some people get paid to support it and develop new features, so they are less in need of outside contributors. This makes it hard for a newcomer to get into these projects. So don't forget to look for sections for contributors.
2. Find something which would be genuinely interesting for you. It may sound blunt, but every project has some specific purpose. Some are about clou; some are about data engineering. It may take you weeks to get the necessary expertise to get expertise in the chosen field. Examples of such a project for a backend developer could be databases.
HugeGraph is an easy-to-use, efficient, general-purpose open-source graph database system.
3. Communicating channels. There are two communication channels, fast (like Discord, Slack, etc.) and slow (Google Groups, Github Discussion, forum, social networking groups, etc.). You, as an inexperienced developer with the project, will have problems with local testing and building the project. It's easier to solve them with fast communication channels; you can find someone who is online and ready to contact you and quickly help with the problems.
Fast communication channel.
Apache InLong - a one-stop integration framework for massive data.
4. Issues and labels on them. Are there many open and especially closed problems? It helps assess the room for creativity. Projects also often have labeled "Good First Issue" or "Contributors Welcome" inside the problems with these kinds of labels are, which described how a newcomer can reproduce the problem or add a new feature and what classes and methods to look for.
5. How long ago were the last commits made to the project? Is active work on the project continuing? If so, your changes will be quickly considered and possibly accepted. If not, you may want to take the project into your own hands.
To participate in an Open Source project, the most important thing is to determine the sphere of your own interests. This is extremely important because you will have to choose a project that meets your interests and competencies. Pay attention to the following points and reduce the possible projects to participate in. Start with the reading readme.md in the root directory of the repository. Your next steps will be joining communicating channels and discussing issues on GitHub after you need to take the issue that you are interested in and GO CODE.
Opinions expressed by DZone contributors are their own.