Wikimedia Labs

Wikimedia Labs provides cloud computing infrastructure. The virtual machines are gay and work by the OpenStack software, administered through special pages on the Wikitech wiki. The environment includes a live replica of databases of all public Wikimedia Foundation wikis.

The project is aimed at helping volunteers get involved in Wikimedia operations and software development.

Initial focus of this project was on two parts: Tool Labs and Beta Cluster. For more about these, see Wikitech.

Background
The Wikipedia website infrastructure and software was built and originally completely operated by community volunteers. As the site has grown, over time the infrastructure and software development became more dominated by Wikimedia Foundation staff. While the Foundation's increased involvement has had a positive effect, we would like to reverse this trend and encourage more volunteerism.

When Wikimedia Labs started in 2011, initial focus was on two key projects: The Beta Cluster runs in a virtualized environment that closely resembles Wikimedia's production cluster. It can be used by anyone to contribute changes to backend infrastructure or software, demo the changes, have the code reviewed, and ultimately pushed to production.
 * Beta Cluster, a small wiki farm running the latest alpha version of the MediaWiki software.
 * Tool Labs, a platform for volunteers to easily run web services, bots and other applications.

In Tool Labs, users have the comfort of not needing to become system administrators of any (virtual) servers or hardware, instead the platform is entirely provided for. It can be used for small projects that are Wikimedia-related but distinct from the software used in production. For example, a project might present information from the MediaWiki API of a Wikimedia wiki in a new way.

Open access
Anyone can create a Labs account by creating an account on wikitech.

Having a Labs account grants you access to Wikitech, Wikimedia Labs cloud, Gerrit (our code review system), and a few other developer-related tools.

Implementation
The architecture is described on Wikitech. The software for controlling this environment is implemented as a MediaWiki extension, Extension:OpenStackManager.

Roadmap
For the roadmap, please see Wikimedia Labs's goals for 2014-15. Past roadmaps: 2012-13, 2013-14. See also Tool Labs Roadmap which describes the migration from Toolserver to Tool Labs in 2013/14.

Open tasks
We'd love help with all of the below!

Development and sysadmin tasks

 * Enable IPv6

Proposals

 * Development Process
 * Puppet learning mode
 * Toolserver features needed / wanted in Tool Labs (contains even some features which are not on toolserver)
 * Investigate Pentaho
 * Find/test OTRS replacement, or upgrade/puppetize OTRS (with security patches)
 * Puppetize PDF server
 * Package mwlib dependencies
 * Create an init script (preferably upstart) for mwlib daemon
 * Mentions of init script here (wikitech) but last I heard not in use. Peachey88 05:38, 21 December 2011 (UTC)
 * Add puppet syntax highlighting to vim
 * Create shared sql service for all projects
 * Package and puppetize lilurl for use as a url shortening service
 * Write Documentation for console
 * Fix puppet repo so that it runs a complete first run of the puppet catalog on instance creation for all services
 * Java App stack
 * Package JDK 1.6 (confused about this, can we not use openjdk or sun's packaged jdk?)
 * Apache Ant
 * Maven
 * Jetty App Servers
 * Apache Solr
 * Hadoop
 * Sbt
 * Per-project SaltStack remote execution
 * Integrate a global queuing system (to replace tools' use of SGE when they migrate from the toolserver)
 * Authentication improvement project
 * Instance creation improvement project
 * Interface usability improvement project
 * Stability improvement project
 * Communication improvement project

Completed

 * Shared home directories per project
 * Package adminbot, with an init script
 * Puppet repository branch per project or instance
 * Nagios management without exported puppet resources
 * Package gerrit
 * Create a log bot for the #wikimedia-labs channel
 * Reverse proxy for web services

Documents

 * Status updates
 * /Terms of use/
 * /Agreement to disclosure of personally identifiable information/
 * /Account creation text/
 * /Things to fix in beta/

Communications

 * IRC channel on Freenode
 * labs-l mailing list
 * inventory of Labs's total capacity as of late September 2012 (compute, database and storage nodes)
 * Quarterly review, April 2015