Description
Earlier this year we expanded the committers of RxJava to include non-Netflix engineers. I'd like to now further explore how we can broaden community involvement and lessen dependence on me. The recent "RxJava Truck Factor" issue was a reminder of this topic and pushed several of us inside Netflix to raise the priority on tackling this.
First, a note on how great the community has been thus far! We have had great contributors, several having contributed significant time, effort and skill and without whom RxJava would not be as good as it is. Many who are not shown with "code contributions" have helped immensely in answering questions on Twitter, StackOverflow, Google Groups, blogging, speaking at meetups and conferences, or helping build reactivex.io. In short, the community around RxJava is already great.
However, I'd like to achieve a few things:
- Make it possible for others to fulfill the "release engineer" role I'm still playing.
- Ensure there are no irreplaceable people on the project.
- Improve the reliability for getting code reviews and questions answered in a reasonable time frame.
- Improve the release cadence so it is more reliable, and less dependent on me getting bursts of time.
- Make it easier for community to get involved by pointing to where they can help in ways other than writing code.
- Find a way to recognize people for involvement in the many important areas other than lines of code committed.
A few ideas on making these happen include:
- More engineers from Netflix with time formally allocated. I will bootstrap them and ensure they have everything needed to do releases without me.
- More comprehensive CONTRIBUTING.md (Rust has a good example: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md)
- Ask community to help with StackOverflow, Google Groups, Issue/PR Triage, Twitter (and perhaps recognize people somehow who do these things?)
A key thing I want people to understand is that writing code is actually the easiest part of maintaining a project like this. The lifecycle is far harder and more time consuming. This includes:
- code reviews
- answering questions
- deciding whether a change should be made or not
- discussing design decisions and deciding which tradeoffs to make
- balancing change with stability
- writing documentation
- debugging issues
- replicating bugs with unit tests
- answering more questions
- tutorials, blogs, speaking, training, etc
All who are interested in RxJava, what ideas do you have for helping us improve and achieve the above? What else should we pursue and improve?