Building a community around an open-source project requires a number of practices regarding support, pull requests handling, licensing, and more, writes Pete Warden, TensorFlow Mobile lead at Google.
A great challenge in the early life of a new project, explains Warden, is providing support to those who are using it. At first, the only available experts are the developers themselves, who have to find a way to integrate their day-to-day tasks with other support duties. This is not entirely straightforward, since it may take developers outside of their comfort zone and potentially distract them from their main tasks. The TensorFlow team dealt with this challenge by establishing a rotation among all engineers, so each engineer took responsibility for a particular area for one full week approximately once every couple of months.
Among the practices that helped the most to address community requests, the key ones were the following:
- Reviewing pull requests, which are usually assigned to the developer on rotation, who validates the PR and makes sure it does not break the tests, then forwards it, if necessary, to another developer with more knowledge in that area.
- Triaging reported issues: for a project like TensorFlow, which has had a wide adoption, thousands of issues may be reported. This required defining a detailed procedure to manage priorities and keep track of what was being done.
- Addressing StackOverflow questions, which the TensorFlow team chose as a channel to provide help on the use of the library. This has the advantage that anyone knowing how to answer a question can do it, even if they are not part of the team.
- Ensuring tests are not failing: this is dealt with by using Jenkins to run a suite of automated tests running on most supported platforms.
- Doing developer relations, which is also done on a part-time basis and brings the great benefit of letting developers know first-hand what problems their users have.
The long term goal of this effort, explains Warden, is to broaden the number of people both inside and outside of Google that have the expertise required to help the community, improve the documentation, and create “playbooks” that help deal with common tasks such as bug triage.
Make sure you read the original post, since there are many more details that are interesting to read about.