There are plenty of open source projects, and you probably use some. Open source projects can be a good source of learning and can help improve your developing skills. You'll have a chance to read carefully written code, used by many people. You'll have a chance to receive feedback from the project owner. Finally, you can contribute to a project you love. It might be scary in the beginning, and for many developers, the big question would be:
How to choose an open source project?
If there is an open source project you use and would like to contribute to it by resolving an issue that annoys you or adding a feature that would be beneficial for you, then go ahead. For those who don't know where to start, http://up-for-grabs.net/#/ is a good place. The website lists open source projects that mark their issues as easy to start with. It also allows filtering open source projects by programming language or technology.
Once you narrowed your search to a list of several open source projects, the dilemma is how to choose. In this post, I'll try to give tips that might help you in choosing an open source project.
Before you dive deep into source code, think whether the domain of an open source project attracts you. If you're mainly a back-end person, I doubt a 3D graphics project will cause you the same passion as some other server-side component. So, do what you love.
Clear and permissive license
The open source world looks very open, but there are strict rules, regarding software licensing. I am sure you don't want to deal with legal issues when you contribute a few lines of code. So, make sure the project has a clear and permissive license that appears on its website. If you are not sure what software licenses mean, here is a good and short guideline: https://choosealicense.com/
Unit tests indicate the project was probably well-designed, open for modification, and allow you to make sure your additional code does not break existing functionality.
While documentation is usually a weak side of most open source projects, some basic documentation is required. Make sure it describes how to build the project, how to run tests, how to use it, what are contribution guidelines.
Although the open source scene resembles the jungle or worldwide west, the opposite is true. Open source project usually involves the cooperation of developers from different locations and time zones. Without proper methodology, which includes continuous integration on a publicly available server, would not be possible. A few CI systems provide free service for open source projects, such as AppVeyor, Travis, CircleCI, and TeamCity.
No matter what you will contribute to an open source project, I assume you prefer a timely fashioned response. Any feedback is better than no feedback. Submitting a Pull Request ignored by a project owner might be frustrating. You can view the list of open Pull Requests and get an impression of the responsiveness of the project owner.
Project owners might be very sensitive about their code. It can be understood; it's their baby, and they invested many hours to do it. However, polite communication that respects contributors is one of the key conditions to get new contributors to join the project. You may look at conversations on issues, discussions on closed Pull Requests to understand how nice the owner is.
I hope this blog post will help you to choose an open source project, and it will help you to improve your programming skills.