Shhhh! I’m going to tell you a secret. It’s something that for a few people might just change their software development lives in unexpected and exciting ways.
Contribute to an open source project!
That’s not the secret though. I realize many of you have probably already thought of contributing to an open source project but were unsure how to get started.
I can help you get started and it might be easier than you expect.
That’s the secret.
There is a project called Eclipse Collections which is managed at the Eclipse Foundation and is open for contributions from anyone. As open source libraries go, Eclipse Collections has a relatively low barrier of entry. Eclipse Collections is a library of Java data structures and algorithms.
Disclaimer: I am not a lawyer, and cannot dispense legal advice. I won’t be able to help you determine what you will be able or allowed to do given your personal situation. You will need to determine whether you are allowed to do something, and what if any approvals and process you need to follow from your employer if you are employed by someone else given their policies, procedures, agreements, etc. for contributing to FOSS projects. If you are unsure of what you are able to do, I would suggest not getting started until you clarify that and are 150% comfortable. Contact the Eclipse Foundation if you want to understand the legal and governance rules over projects managed at the Foundation. The folks at the Eclipse Foundation are very helpful.
If you’d like to get started and are sure you are able to given your personal situation, here are some suggestions that might help you break through the initial barrier of contributing to an open source project. Not all contributions need to be made through code.
- Try out the Eclipse Collections Katas — this will help you understand what Eclipse Collections is all about. Once you understand Eclipse Collections, you may want to use it in your projects. If you use it in your projects, you may discover something that is missing that you would like to suggest and contribute. This is the best kind of code contribution to make to a project. Here you are helping yourself provide the functionality that you need.
- If you use and like Eclipse Collections you can also contribute to the community in many different ways. For instance you could… a) give a talk on Eclipse Collections perhaps at a Java User Group meet-up b) teach the katas to developers you know or at a Java User Group meet-up c) write about it in a blog or article. This can help people discover that Eclipse Collections exists. This is an amazing contribution and can help introduce you to the growing community of Java developers!
- If you are ready to try your hand at contributing code, the best place to start is the Contribution Guide in Eclipse Collections.
- What will you need to get started? 1) GitHub Account 2) Read, Understand and Sign Eclipse Foundation Contributor Agreement electronically 3) Git Client 4) JDK 8 5) Maven 6) a Java IDE. The instructions in the contribution guide can help you on some of these things.
- Find something you’d like to work on. This could come from the issue log or may be something you would like added based on a use case you have that hasn’t been addressed before. Here are a list of issues we have tagged as “help wanted”.
What types of things can you work on that are potentially low cost?
- Documentation — You could add or update something in the Reference Guide which is in this Markdown file.
- Test Coverage — If you find missing test coverage, adding test cases is a noble and much appreciated addition to any project.
- Static Utility — Static utility methods are isolated, easy to test and can be a great place to start experimenting with new API ideas.
- Bug Fixes — This is a great contribution which will include some investigation, a little coding in the library and maybe some additional testing to make sure the bug never comes back.
- Web Site translations — Developers across the globe have been contributing translations of the Eclipse Collections website in different languages. This is an amazing non-code contribution to the project, and the work is still committed to GitHub. All of the current translations are linked at the top of the README.md for the project.
Beyond these low cost, low complexity options there is a table that shows the cost and complexity of different things that can be contributed to Eclipse Collections.
This table was from Eclipse Foundation virtual meet-up which is now on YouTube.
As you gain more experience and confidence, you might want to tackle problems with increasing levels of complexity. All of the infrastructural skills you learn while contributing to Eclipse Collections will help you on any open source project you want to contribute to in the future.
Help is wanted and available
Not only will you be helping an open source project and community by contributing, but there are committers on the project who will help you grow and learn as a developer by providing feedback on any issues and pull requests you submit. I always look forward to code reviews and feedback from the community of Eclipse Collections project leads, committers and contributors. I have learned so much over the years from all of them. They continue to help me grow as a professional software developer.