Wikimedia Foundation

About the Organization

The Wikimedia Foundation, Inc. is a 501(c)(3) nonprofit charitable organization dedicated to encouraging the growth, development and distribution of free, multilingual content, and to providing the full content of these wiki-based projects to the public free of charge. The Wikimedia Foundation operates some of the largest collaboratively edited reference projects in the world, including Wikipedia, a top-ten internet property.  Other Wikimedia Foundation projects include Wikibooks, Wikiversity, Wikispecies, Wikinews and Wikimedia Commons.  All these Wikimedia Foundation projects and thousands of other wikis are based on the open source MediaWiki software.

Software

License GNU General Public License (GPL)
Source Repository http://svn.wikimedia.org
Issue Tracker

https://bugzilla.wikimedia.org (general)

http://openhatch.org/+projects/MediaWiki (easy bugs specifically meant for volunteers new to MediaWiki and software development)

Primary Language/Framework primarily PHP and jQuery/JavaScript/HTML/CSS
Platforms mostly on a LAMP (Linux/Apache/MySQL/PHP) platform but also available on Mac, Windows, PostgreSQL, SQLite, MariaDB, and IIS 

Development Team

About half of MediaWiki's development team are Wikimedia Foundation employees and contractors, many of whom work out of the Foundation's office in San Francisco.  The other half of the development team is composed of volunteers, students and contributors employed by others.  Wikimedia Foundation's Engineering Community Manager, Sumana Harihareswara, is available to coordinate volunteers.

Tools

MediaWiki developers use a variety of IDEs, such as phpStorm, vim, emacs, NetBeans, & Eclipse.  MediaWiki documentation is based on Doxygen and can be found online at http://www.mediawiki.org.  Wikimedia tracks bugs in the Bugzilla at https://bugzilla.wikimedia.org/ but also puts easy tasks for new volunteers on the wiki at http://www.mediawiki.org/wiki/Annoying_Little_Bug and in OpenHatch at http://openhatch.org/+projects/MediaWiki.

For remote collaboration Wikimedia uses IRC (#mediawiki on freenode connect), mailing lists (https://lists.wikimedia.org/mailman/listinfo/wikitech-l), and Etherpad (http://www.mediawiki.org/wiki/Project:Etherpad_index), Mumble, Skype and Wikimedia-hosted POTS for conference calls.

The community is active and welcomes new developers, and it's easy and fast to get commit access.

Development Process

MediaWiki's development methodology can be described as an adhocracy, moving towards a continuous integration model.  A roadmap is emerging.  Developers review code before deploying new code to Wikimedia servers (every two weeks).  Then developers release a beta and multiple release candidates, and release a new final MediaWiki version about every six months.

Feel free to dive right in and start fixing bugs and making tools!

Volunteer Opportunities

Short Engagements (a week, for example)

  • Improve volunteer-written mass upload tools to make them more robust, especially for use by museums, galleries, libraries and archives.  Use Python, PHP, or jQuery with the MediaWiki API and help thousands of people share free culture.
  • Fix bugs in MediaWiki's performance on Windows and Macintosh.  Improve how MediaWiki works on all operating systems!
  • Implement pre- or post-commit checks in our code repositories that automatically look for security vulnerabilities, broken coding conventions, broken code, etc, perhaps with a web interface to facilitate the process, or using our Jenkins continuous integration setup.  Use your favorite programming language to help MediaWiki developers save time in code review, and make our code more secure.
  • Write a version of reCAPTCHA that uses document images that have been processed by MediaWiki's ProofreadPage extension for WikiSource. In other words, a CAPTCHA that feeds data to ProofreadPage to augment its OCR processing.  You might build on existing code.
  • Improve our math support using TeX and OCaml.  Make it easier for people to write and read mathematical formulae in Wikipedia.

Longer Engagements (3 months, for example)

  • Analytics.  We need to track how well our initiatives are doing, so we need to build flexible and robust tools for logging site statistics and deriving and distributing useful data.
  • Extension management overhaul.  The MediaWiki ecology has hundreds of popular extensions, yet it's hacky and unintuitive to install and maintain an extension.  We need to integrate the five most commonly used extensions into MediaWiki core, make installing extensions easier, and create a dashboard so administrators can maintain their extensions more easily.  It would also be good to track compatibility of released extensions with core MediaWiki releases, and provide this information via special pages and the API.
  • Visual Editor.  Work on the team that's using open web standards to make a best-of-breed WYSIWYG editor for MediaWiki, or work on the parser underlying it.
  • Virtualized development/ops environment.  We want to make it easy for any volunteer developer or sysadmin to test out their ideas on a sandbox that we host, with a replica of our production environment.  We're just beginning to do this via OpenStack Nova, and need a lot of help.
  • Structured data repository: One of the largest continuing challenges in Wikimedia projects is that structured data (such as information in tables and lists) is plain text, with only minimal separation of text and content through the template system. There's no shared repository for such data, which means that every language and every project has to keep copies of all data. The lack of any storage or search mechanism for structured data also means that there's no way to automatically construct queries like "List of countries by GDP". Instead, these lists have to be manually maintained by the community (often with the help of bots). An alternative is to think about a lot of the data in Wikimedia projects in the same terms in which we think about images: It's not language-dependent (although conversions and label translations are required), and it should be possible to maintain a single repository where key data (such as data about countries) can be stored and maintained. Such a "Wikidata Commons" would a) dramatically reduce duplicate effort, b) create new potential opportunities for participation, c) make it easier to bootstrap new language communities, d) lead to higher content quality overall. Solving this problem will not immediately address any of the major issues we're facing (e.g. reversing problematic trends in participation). But it's a critical building block to a more mature and useful Wikimedia projects that can serve the planet in many new ways. It's also a logical precondition for some other high-wishlist items such as better geo-data support, better structured data management for media files, etc. This is a long-range enabling project, with huge potential for transformative impact.
  • Make a meta-schema, so we no longer use tables.sql as a canonical source when creating database tables.  This will greatly improve the installation and maintenance experience of MediaWiki on non-MySQL databases, such as PostgreSQL, SQLite, Microsoft SQL Server, and Oracle.  See discussion and a starter branch.