User:TBurmeister (WMF)/Sandbox/Ecosystem intro

__NOINDEX__ This page provides an overview of Wikimedia software and infrastructure for new technical contributors. Its goal is to help developers understand the major areas where you can apply your technical skills to help support and grow the Movement.

Open source
The Wikimedia technical ecosystem is guided by free and open source software (FLOSS) principles. Contributors around the world volunteer their time to maintain and extend the technology behind Wikimedia projects. This means that the Wikimedia technical ecosystem consists of many unique projects with varying contributing guidelines, design patterns, hosting locations, and code review processes.

Open source values like shared ownership and strong privacy commitments are central to Wikimedia's technical infrastructure, software, and services. For example:


 * For version control and code review, the Wikimedia Foundation (WMF) uses Git and Gerrit.  Git is a free and open source distributed version control system, and Gerrit is a free, web-based collaborative code review tool that integrates with Git.
 * Wikimedia Cloud Services (WMCS) provides cloud computing infrastructure, shared hosting (platform as a service), and data services for contributors to Wikimedia software projects. You can use these services to host your software tools for the Wikimedia movement, for free, instead of using proprietary, paid, or non-open-source services.

In addition to providing tools and services for technical contributors, WMF maintains core infrastructure like data centers, search, networking, and global traffic routing. You don't need to learn about those in order to contribute to wiki projects, but you should know about the core software that powers Wikipedia and other wikis: MediaWiki.

MediaWiki
Wikimedia projects, including Wikipedia, run on the MediaWiki software platform. MediaWiki is free and open source software, built specifically for collecting and organizing free and open knowledge. It's multilingual, extensible, customizable, and reliable. MediaWiki enables users around the world to edit, organize, maintain, and collaborate on wikis. It manages the display of content like text, photos, formatting, and revisions. MediaWiki is more than just a content management system: it also provides tools to handle spam and vandalism, and other functionality that supports community curation of freely-reusable knowledge on an open platform.

MediaWiki core and extensions
The MediaWiki software is developed collaboratively by people from all around the world. The Wikimedia technical community has added many key features to MediaWiki and built a large ecosystem of extensions to the core software. Due to its complexity, contributing to MediaWiki may be more challenging than other types of technical contributions. As a new contributor, focus on features and bugs that only touch a small region of code. Avoid building new MediaWiki skins and extensions: every new extension adds to the software's overall maintenance burden, and can block the launch of new, crucial features. Instead, look into working on one of the many existing extensions.

To learn more, visit How to become a MediaWiki hacker.

Wikimedia mobile apps
Mobile apps expand the reach of Wikimedia content by allowing users to interact with Wikimedia without using a browser. There are apps for the Android, iOS, and KaiOS platforms, apps for different Wikimedia projects like Commons, Wikipedia, and Wiktionary, and apps for activities like reading, contributing, and more. Many apps have vibrant developer communities and welcome new contributors.

To learn more, visit Wikimedia Apps.

Templates and modules
Templates enable one piece of content to appear on multiple wiki pages ("transclusion"). Many wikis rely heavily on templates: there are thousands of them, they're used on almost every page, and they're integral to wiki functionality. You can pass parameters to templates to customize how content is handled in different contexts.

You don't need a developer account to edit or create a template, and they're written in wikitext. That makes templates an easy way to get started with customizing wiki behavior.

Modules are similar to templates, but instead of being written in wikitext, they use the Lua programming language.  While templates are part of the core MediaWiki application, support for modules is implemented by an extension called Scribunto.