User:BDavis (WMF)/Projects/Tool Labs support

Tool Labs support is an evolving idea for a team/sub-team/individual in the Wikimedia Foundation with a mission of helping Tool Labs developers create more robust, secure and performant tools and bots to support Wikimedia wikis.

Problem statement
Bots and tools are a vital resource for many on-wiki content creation and curation activities. A typical bot/tool project begins life as a way for a motivated Wikimedia community member to make some on-wiki task easier (or possible). These individuals are "scratching their own itch" in the best tradition of open source development. Many of these projects have a short lifecycle due to factors such as loss of interest by the maintainer, insurmountable technical hurdles, or discovery of a better means to manage the original problem. Others however become popular and tightly integrated in the workflows of one or more on-wiki communities.

Popular tools and bots become de facto production software needed to keep the wikis healthy and happy. Their roots as weekend projects from motivated volunteers brought them their success, but ultimately pose a risk to their end users. Life happens and a single developer project is in perpetual danger of abandonment. In The Cathedral and the Bazaar, ESR notes that "When you lose interest in a program, your last duty to it is to hand it off to a competent successor." Facilitating the best practices and communication that allow for this hand off to happen and for project to grow beyond what can be accomplished by a single motivated individual would be a primary focus of Tool Labs support.

Key activities

 * Curate and promote documentation of best practices for tool and bot development.
 * Connect bot and tool developers via mailing lists, irc channels, phabricator and other public communication channels to solve shared problems and advocate for shared concerns.
 * Help interested developers transition from one person weekend projects to small collaborative communities.
 * Help organize groups to work on shared libraries/infrastructure needed for bots and tools. Pywiki bot is a good example of a healthy library community to emulate for other projects.
 * Help curate bootstrap projects for common tasks including support for best practices and evolving Labs infrastructure.
 * Consult on performance and security for interested projects.
 * Advocate for shared Tool Labs user concerns in Wikimedia Foundation planning.

Similar projects
At first glance the focus of Tools Lab support may seem very similar to the focus of the existing Community Tech, Developer Relations and/or Wikimedia Labs teams. The author however believes that the proposed activities are actually falling into a gap between these teams. Community Tech might become involved in the short term maintenance of a popular tool or bot but their current charter is focused on the on-wiki outcomes and not the health of the project behind any particular tool or bot. Developer Relations encourages use of the MediaWiki APIs that are the backbone of many tools and bots but focus primarily on creating documentation and engagement opportunities for learning about using MediaWiki and its APIs. The Wikimedia Labs team maintains and enhances the technical infrastructure for Labs and Tool Labs but has no charter to mentor the individual projects that are hosted there beyond basic tutorials for using the provided services. Tool Labs support would likely collaborate with all three teams to fulfill its mission as well as interact with other Wikimedia Foundation teams such as Community Engagement and additional technical teams as well as the larger MediaWiki developer community.

For organizational purposes, the Tool Labs support team could be founded as a sub-team within any of the Community Tech, Developer Relations and/or Wikimedia Labs teams. Regardless of the eventual staffing, the project should be incubated for a trial period as a single person or at most two people within one of these existing teams.

Past proposals
This idea is not really new. Various people have pitched similar or related ideas during past annual planning cycles. The author believes that the focus of this particular proposal is slightly more narrow than past proposals. It does not include an ask for design or project management support as one proposal considered in the run up to the 2015 Engineering department reorg proposed. It also does not include a "productization" charter for very popular tools as was suggested in another unpublished proposal. The focus here is really intended to be on enabling the formation and reinforcement of volunteer communities. The technical contributions envisioned are primarily in the form of template projects and tutorials with a hope that these will actually be largely maintained by the various developer communities themselves. The potential novel component of this proposal is that it wants to help build a self-sustaining community of support out of the group of bright, passionate individuals who are already using Tool Labs to make the wikis better.

Where to start
Some quick ideas of how this project could get off the ground:
 * Make discovering tools easier by updating the landing page application at https://tools.wmflabs.org/
 * Add search functionality
 * Allow tool account meta data to describe the type of tool (tags, categories) (Maybe already possible?)
 * Add an easy way for tool owners to generate the rich description meta data
 * General prettyness enhancements
 * ✅ Make finding the Tool and Labs documentation on wikitech easier
 * Create 3 portal pages: Production, Labs, Tool Labs
 * Replace the Main_Page with a landing portal highlighting the 3 sub-portals and their purpose
 * ✅ Carve out space on wikitech for Tool owners to document their tools/bots (something like the Extension namespace on mediawiki.org)
 * Analyze results from Labs survey to find issues that might be remedied by documentation and outreach
 * Reach out to current Tool Labs users to find pain points and areas of strength
 * Metrics! What resources are tools consuming, what reach to they have, how are these trending
 * Organize a community documentation sprint for Tool Labs
 * Finish up tool takeover policy and get a community vote
 * Survey of on-wiki communities to find out which tools they are most reliant on and follow up with the Tool developer community to ensure that high impact projects have multiple maintainers, published FLOSS source code, and documentation for support practices.