Leading Eclipse Collections… My 6 month story
In April ‘17, I was voted in as a project lead of Eclipse Collections. I have been contributing to the framework since even before it was called Eclipse Collections. I still remember my first contribution; I added a constructor to Multimap which takes an Iterable<Pair<K, V>> as input. After that contribution, I never looked back and have been contributing to the framework ever since. I am a Mechanical Engineer turned software developer, so, if anyone had asked me if I would contribute to open source frameworks, I would have said “In your dreams!”.
In March ‘17 under the guidance of Hiroshi I released Eclipse Collections 8.1.0. I still remember being nervous hitting push for Maven Central and publish for release notes. Hiroshi handed over his role to me starting April ‘17. He did a phenomenal job as a project lead and made sure the project was in good shape before handing over to me. Now it was my job to keep it well maintained and move it forward.
Since April ‘17, we have done a minor release and released Eclipse Collections 9.0.0. We have added a lot of new features to the project mainly Java 9 support, OSGi support, enhanced symmetry between object and primitive collections. We also designed a logo and had laptop stickers and t-shirts at JavaOne. This would not have been possible without the help, guidance, support and contributions from members of the community. I sincerely thank them for their involvement and encourage them to keep on being involved and invite new members to help us enhance and improve the library for all of us.
What worked for me in the transition:
- Direction from previous project leads: I spent a lot of time with Hiroshi understanding the responsibilities of being a project lead. Craig was there to help out and quintessential Don was there to ensure I had all the help I needed. This was the most important part of transition.
- Documentation: This was one of the most under-rated aspects of transition. In addition to the documentation found on Eclipse Foundation’s Project Handbook, we have documentation to help us in our specific use-case. If I added a new step I made sure to update documentation. This requires a lot of discipline but is worth the effort!
- Familiarity with infrastructure, timelines and formalities: We use Travis for builds for contributions, and Hudson for release, deploy, Javadoc builds. Both of them have fair bit of nuances and being familiar with them helps speed things up. There are few time critical steps which need to be executed for each release and some formalities which need to be completed. Being familiar with them helps a lot. Practice makes you perfect!
- Roadmap: A roadmap helps me plan out the release timelines and timely staging of milestone releases. I try to have a roadmap of one or two releases in future helps committers, contributors.
- Questions: I don’t feel bad about saying “I don’t know” on a pull request/issue/commit. Often I ask for documentation (if I am unable to find it), and go through it. Sometimes, I loop in someone else who might be an expert to help out. I have seen that the community is receptive to such questions and has always helped me with answers.
- Innovation: For a framework to remain healthy it needs to innovate. Sometimes, it is necessary to experiment with new features/ new technologies to see how the community receives it. Before I start an experiment, I always run the idea by someone (generally Don). I am receptive to critical feedback, have few times dropped off my idea because it did not pan out well.
- Publicize: It is important to publicize the framework otherwise community loses interest. Once community loses interest, we lose motivation to keep on innovating. So, best way to not let community lose interest is to keep on publicizing. And best way for community to help me innovate is to support me with ideas/questions/contributions.
- Ask feedback: This ties with publicity aspect. I am receptive to feedback from users, other project leads, experts or anyone from the community. Feedback helps me analyze requirements of community as well as improve the framework.
- Pride: With great power comes great responsibility, but there comes pride too! I am proud of the framework and I am proud to be the lead of Eclipse Collections.
I plan to publish blogs which highlight features of Eclipse Collections, my experience as a Java developer, my experiments building and programming robots.