MediaWiki
Encyclopedia
MediaWiki is a popular free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 web-based
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

 wiki software
Wiki software
Wiki software is collaborative software that runs a wiki, i.e., a website that allows users to create and collaboratively edit web pages via a web browser. A wiki system is usually a web application that runs on one or more web servers...

 application. Developed by the Wikimedia Foundation
Wikimedia Foundation
Wikimedia Foundation, Inc. is an American non-profit charitable organization headquartered in San Francisco, California, United States, and organized under the laws of the state of Florida, where it was initially based...

, it is used to run all of its projects, including Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...

, Wiktionary
Wiktionary
Wiktionary is a multilingual, web-based project to create a free content dictionary, available in 158 languages...

 and Wikinews
Wikinews
Wikinews is a free-content news source wiki and a project of the Wikimedia Foundation. The site works through collaborative journalism. Wikipedia co-founder Jimmy Wales has distinguished Wikinews from Wikipedia by saying "on Wikinews, each story is to be written as a news story as opposed to an...

. Numerous other wikis around the world also use it to power their website
Website
A website, also written as Web site, web site, or simply site, is a collection of related web pages containing images, videos or other digital assets. A website is hosted on at least one web server, accessible via a network such as the Internet or a private local area network through an Internet...

s. It is written in the PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 programming language and uses a backend database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

.

The first version of the software was deployed to serve the needs of the free content
Free content
Free content, or free information, is any kind of functional work, artwork, or other creative content that meets the definition of a free cultural work...

 Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...

 encyclopedia in 2002. It has been deployed since then by many companies as a content management system
Content management system
A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...

 for internal knowledge management
Knowledge management
Knowledge management comprises a range of strategies and practices used in an organization to identify, create, represent, distribute, and enable adoption of insights and experiences...

. Notably, Novell
Novell
Novell, Inc. is a multinational software and services company. It is a wholly owned subsidiary of The Attachmate Group. It specializes in network operating systems, such as Novell NetWare; systems management solutions, such as Novell ZENworks; and collaboration solutions, such as Novell Groupwise...

 uses it to operate several of its high-traffic websites. Thousands of websites use MediaWiki. Some educators have also assigned students to use MediaWiki for collaborative group projects.

The software is optimized to correctly and efficiently handle projects of all sizes, including the largest wikis, which can have terabytes of content and hundreds of thousands of hits
Hit (internet)
A hit is a request to a web server for a file . When a web page is uploaded from a server the number of "hits" or "page hits" is equal to the number of files requested. Therefore, one page load does not always equal one hit because often pages are made up of other images and other files which stack...

 per second. Because Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...

 is one of the world's largest websites, achieving scalability through multiple layers of caching
Cache
In computer engineering, a cache is a component that transparently stores data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere...

 and database replication has also been a major concern for developers. Wikipedia and other Wikimedia projects continue to define a large part of the requirement set for MediaWiki.

The software is highly customizable, with more than 700 configuration settings and more than 1,800 extensions
Extension (computing)
Software extension, is a file containing programming that serves to extend the capabilities of or data available to a more basic program. It is a kind of list of commands which are directly included in the program. This term often coincides with the plug-in...

 available for enabling various features to be added or changed. More than 600 automated and semi-automated bots
Internet bot
Internet bots, also known as web robots, WWW robots or simply bots, are software applications that run automated tasks over the Internet. Typically, bots perform tasks that are both simple and structurally repetitive, at a much higher rate than would be possible for a human alone...

 and other tools have been developed to assist in editing MediaWiki sites. Software hacks are also available, although MediaWiki.org lightly discourages them and does not provide a central repository of them.

License

MediaWiki is free and open source software
Free and open source software
Free and open-source software or free/libre/open-source software is software that is liberally licensed to grant users the right to use, study, change, and improve its design through the availability of its source code...

 and is distributed under the terms of the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

 version 2 or any later version while its documentation is released under the Creative Commons BY-SA 3.0
Creative Commons licenses
Creative Commons licenses are several copyright licenses that allow the distribution of copyrighted works. The licenses differ by several combinations that condition the terms of distribution. They were initially released on December 16, 2002 by Creative Commons, a U.S...

 license and partly in the public domain
Public domain
Works are in the public domain if the intellectual property rights have expired, if the intellectual property rights are forfeited, or if they are not covered by intellectual property rights at all...

. Specifically, the manuals and other content at MediaWiki.org are Creative Commons-licensed, while the set of help pages intended to be freely copied into fresh wiki installations and/or distributed with MediaWiki software is public domain. This was done to eliminate legal issues arising from the help pages being imported into wikis with licenses that are incompatible with the Creative Commons license. MediaWiki development has generally favored the use of open-source media formats.

Development

MediaWiki has an active volunteer community for development and maintenance. Users who have made meaningful contributions to the project by submitting patches
Patch (computing)
A patch is a piece of software designed to fix problems with, or update a computer program or its supporting data. This includes fixing security vulnerabilities and other bugs, and improving the usability or performance...

 are generally, upon request, granted access to commit revisions to the project's Apache Subversion repository. There is also a small group of paid programmers who primarily develop projects for the Wikimedia foundation
Wikimedia Foundation
Wikimedia Foundation, Inc. is an American non-profit charitable organization headquartered in San Francisco, California, United States, and organized under the laws of the state of Florida, where it was initially based...

. Wikimedia participates in the Google Summer of Code
Google Summer of Code
The Google Summer of Code is an annual program, first held from May to August 2005, in which Google awards stipends to hundreds of students who successfully complete a requested free or open-source software coding project during the summer...

 by facilitating the assignment of mentors to students wishing to work on MediaWiki core and extension projects. As of June 2010, there were 143 developers who had committed changes to the MediaWiki core or extensions within the past year. Major MediaWiki releases are generated approximately every three to eight months by taking snapshots of the development trunk, which is kept continuously in a runnable state; minor releases, or point release
Point release
A point release is a minor release of a software project, especially one intended to fix bugs or do minor cleanups rather than add features. The term implies that such releases are relatively frequent, and is generally used with respect to open source projects being developed in the "bazaar model"...

s, are issued as needed to correct bugs (especially security problems).

MediaWiki has a public bug tracker, bugzilla.wikimedia.org, (alternatively known as Mediazilla), which uses Bugzilla
Bugzilla
Bugzilla is a Web-based general-purpose bugtracker and testing tool originally developed and used by the Mozilla project, and licensed under the Mozilla Public License....

. The site is also used for feature and enhancements requests.

History

When Wikipedia was first launched in January 2001, it ran on the existing wiki software UseModWiki
UseModWiki
UseModWiki is a wiki engine written in the Perl programming language. It is licensed under the GNU General Public License. Pages in UseModWiki are stored in ordinary files, not in a relational database. Something similar to the interface can be seen in MediaWiki with the classic skin.- History...

, which was written in Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

 and stored all wiki pages in text files. This software soon proved limiting, both in its functionality and its performance. In mid-2001, Magnus Manske, a developer and student at the University of Cologne
University of Cologne
The University of Cologne is one of the oldest universities in Europe and, with over 44,000 students, one of the largest universities in Germany. The university is part of the Deutsche Forschungsgemeinschaft, an association of Germany's leading research universities...

, who was also a Wikipedia editor, began working on new software that would replace UseModWiki, specifically for use by Wikipedia. This software was written in PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 and stored all its information in a MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...

 database. It launched on the English Wikipedia in January 2002, and gradually was placed on all the Wikipedia language sites of that time. This software was referred to as "the PHP script" and as "phase II", with the name "phase I" retroactively given to the use of UseModWiki.

Increasing usage soon caused load problems again, and soon afterward, another rewrite of the software began, done by Lee Daniel Crocker, which was first known as "phase III". This new software was also written in PHP with a MySQL backend, and kept the basic interface of the phase II software, but was meant to be more scalable. It went live on Wikipedia in July 2002.

The Wikimedia Foundation was announced on June 20, 2003, and in July, Wikipedia contributor Daniel Mayer suggested the name "MediaWiki" for the software, as a play on "Wikimedia". The name was gradually phased in beginning in August 2003. The name has frequently caused confusion due to its (intentional) similarity to the "Wikimedia" name (which itself is similar to "Wikipedia").

The product logo was created by Erik Möller
Erik Möller
Erik Möller is a German freelance journalist, software developer, author, and Deputy Director of the Wikimedia Foundation , based in San Francisco, California...

 using a flower photograph taken by Florence Nibart-Devouard, and was originally submitted to an international logo contest for a new Wikipedia logo held in mid-2003. The logo came in third place, and was chosen to represent MediaWiki instead of Wikipedia, with the second place logo used for the Wikimedia Foundation.
The double square brackets around the photo of a sunflower
Sunflower
Sunflower is an annual plant native to the Americas. It possesses a large inflorescence . The sunflower got its name from its huge, fiery blooms, whose shape and image is often used to depict the sun. The sunflower has a rough, hairy stem, broad, coarsely toothed, rough leaves and circular heads...

 symbolize the syntax
Syntax of programming languages
In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. The syntax of a language defines its surface form...

 MediaWiki uses for creating hyperlinks to other wiki pages.

Later, Brion Vibber, the Chief Technical Officer
Chief technical officer
A chief technology officer is an executive-level position in a company or other entity whose occupant is focused on scientific and technological issues within an organization....

 of the Wikimedia Foundation
Wikimedia Foundation
Wikimedia Foundation, Inc. is an American non-profit charitable organization headquartered in San Francisco, California, United States, and organized under the laws of the state of Florida, where it was initially based...

, took up the role of release manager and most active developer.

Major milestones in MediaWiki's development have included the categorization system, added in 2004; parser functions
Parsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

, added in 2006; and flagged revisions
Flagged revisions
Flagged revisions is a software extension to the MediaWiki wiki software that allows moderation of edits to Wiki pages. It was developed by the Wikimedia Foundation for use on Wikipedia and similar wikis hosted on its servers...

, added in 2008.

Sites using MediaWiki

MediaWiki's most famous use has been in Wikipedia and, to a lesser degree, Wikimedia's other projects. But MediaWiki has also been used to power tens of thousands of other wikis, both public and private.

A number of alternative wiki encyclopedias to Wikipedia run on MediaWiki, including Citizendium
Citizendium
Citizendium is an English-language wiki-based free encyclopedia project launched by Larry Sanger, who co-founded Wikipedia in 2001....

, Conservapedia
Conservapedia
Conservapedia is an English-language wiki project written from a self-described American conservative Christian point of view. The website considers itself to be a supporter of "conservative, family-friendly" content...

, Metapedia and Scholarpedia
Scholarpedia
Scholarpedia is an English-language online wiki-based encyclopedia that uses the same MediaWiki software as Wikipedia, but has features more commonly associated with open-access online academic journals....

.

Wikia
Wikia
Wikia is a free web hosting service for wikis . It is normally free of charge for readers and editors, deriving most of its income from advertising, and publishes all user-provided text under copyleft licenses. Wikia hosts several hundred thousand wikis using the open-source wiki software MediaWiki...

, the world's most popular wiki farm
Wiki farm
A wiki hosting service or wiki farm is a server or an array of servers that offer users tools to simplify the creation and development of individual, independent wikis...

, runs on MediaWiki. Among the notable wikis that Wikia hosts are LyricWiki
LyricWiki
LyricWiki is a lyrical database-oriented website. As of August 2011, it is the fourth largest MediaWiki installation with over 1,600,000 pages. Users on the site can view, edit, and discuss the lyrics of songs, which are also available for purchase from links on the site. The site is powered by...

, Memory Alpha
Memory Alpha
Memory Alpha is a wiki that is an encyclopedic reference for topics related to the Star Trek fictional universe. Conceived by Harry Doddema and Dan Carlson in September 2003 and officially launched on December 5 of that year, it uses the wiki model and is hosted by Wikia, Inc. on the MediaWiki...

, Uncyclopedia
Uncyclopedia
Uncyclopedia is a satirical website that parodies Wikipedia. Founded in 2005 as an originally English-language wiki, the project currently spans over 75 languages...

, WoWWiki
WoWWiki
- External links :*...

 and Wookieepedia
Wookieepedia
Wookieepedia, the Star Wars Wiki is an online encyclopedia for information on the Star Wars fictional universe—including information on all six films, as well as The Clone Wars and the Expanded Universe...

.

Other popular public wikis that run on MediaWiki include wikiHow
WikiHow
wikiHow is a web-based and wiki-based community, consisting of an extensive database of how-to guides. wikiHow's mission is to build the world's largest and highest quality how-to manual. The site started as an extension of the already existing eHow website, and has evolved to host over 127,000...

, AboutUs.org
AboutUs.org
AboutUs.org is a wiki Internet domain directory. It lists websites along with information about their content. As a wiki, AboutUs allows Internet users to add entries or modify information....

, Mahalo.com
Mahalo.com
Mahalo.com is a web directory and Internet-based knowledge exchange launched in alpha test in May 2007 by Jason Calacanis...

 and WikiLeaks
Wikileaks
WikiLeaks is an international self-described not-for-profit organisation that publishes submissions of private, secret, and classified media from anonymous news sources, news leaks, and whistleblowers. Its website, launched in 2006 under The Sunshine Press organisation, claimed a database of more...

.

MediaWiki is also used internally by a large number of companies, including Novell
Novell
Novell, Inc. is a multinational software and services company. It is a wholly owned subsidiary of The Attachmate Group. It specializes in network operating systems, such as Novell NetWare; systems management solutions, such as Novell ZENworks; and collaboration solutions, such as Novell Groupwise...

 and Intel.

Notable usages of MediaWiki within governments include Intellipedia
Intellipedia
Intellipedia is an online system for collaborative data sharing used by the United States Intelligence Community . It was established as a pilot project in late 2005 and formally announced in April 2006 and consists of three wikis running on JWICS, SIPRNet, and Intelink-U...

, used by the United States Intelligence Community
United States Intelligence Community
The United States Intelligence Community is a cooperative federation of 16 separate United States government agencies that work separately and together to conduct intelligence activities considered necessary for the conduct of foreign relations and the protection of the national security of the...

, and Diplopedia
Diplopedia
Diplopedia, billed as the Encyclopedia of the United States Department of State, is a wiki running on a State internal Intranet, called "OpenNet". It houses a unique collection of information pertaining to diplomacy, international relations, and Department of State tradecraft.The wiki may be used...

, used by the United States Department of State
United States Department of State
The United States Department of State , is the United States federal executive department responsible for international relations of the United States, equivalent to the foreign ministries of other countries...

. United Nations agencies such as the U.N. Development Programme and INSTRAW chose to implement their wikis using MediaWiki because "this software runs Wikipedia and is therefore guaranteed to be thoroughly tested, will continue to be developed well into the future, and future technicians on these wikis will be more likely to have exposure to MediaWiki than any other wiki software."

Key features

MediaWiki provides a rich core feature set and a mechanism to attach extensions
Extension (computing)
Software extension, is a file containing programming that serves to extend the capabilities of or data available to a more basic program. It is a kind of list of commands which are directly included in the program. This term often coincides with the plug-in...

 to provide additional functionality. Due to the strong emphasis on multilingualism in the Wikimedia projects, internationalization and localization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...

 has received significant attention by developers. The user interface has been fully or partially translated into more than 300 languages, and can be further customized by site administrators (the entire interface is editable through the wiki).

Installation and configuration

Installation of MediaWiki requires that the user have administrative privileges on a server running both PHP and a compatible type of SQL database. Some users find that setting up a virtual host is helpful if the majority of one's site runs under a framework (such as Zope
Zope
Zope is a free and open-source, object-oriented Web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web...

 or Ruby on Rails
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...

) that is largely incompatible with MediaWiki. Cloud hosting can enable a user to dispense with task of building a new server by hand.

An installation PHP script is accessed via a web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

 to initialize the wiki's settings. It prompts the user for a minimal set of required parameters, leaving further changes, such as enabling uploads, adding a site logo, and installing extensions, to be made by modifying configuration settings contained in a file called LocalSettings.php. Some aspects of MediaWiki can be configured through special pages or by editing certain pages; for instance, abuse filters can be configured through a special page, and certain gadgets can be added by creating javascript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

 pages in the MediaWiki namespace. The MediaWiki community publishes a comprehensive installation guide.

Markup

One of the earliest differences between MediaWiki (and its predecessor, UseModWiki) and other wiki engines was the use of "free links" instead of CamelCase
CamelCase
CamelCase , also known as medial capitals, is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element's initial letter capitalized within the compound and the first letter either upper or lower case—as in "LaBelle", "BackColor",...

. When MediaWiki was created, it was typical for wikis to require text like "WorldWideWeb" to create a link to a page about the World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

: links in MediaWiki, on the other hand, are created by surrounding words with double square brackets, and any spaces between them are left intact, e.g. World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

. This change was logical for the purpose of creating an encyclopedia, where accuracy in titles is important.

MediaWiki uses an extensible lightweight wiki markup designed to be easier to use and learn than HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

. Tools exist for converting content such as tables
Table (information)
A table is a means of arranging data in rows and columns.Production % of goalNorth 4087102%South 4093110% The use of tables is pervasive throughout all communication, research and data analysis. Tables appear in print media, handwritten notes, computer software, architectural...

 between MediaWiki markup and HTML. Efforts have been made to create a MediaWiki markup spec, but a consensus seems to have been reached that Wikicode requires context-sensitive grammar
Context-sensitive grammar
A context-sensitive grammar is a formal grammar in which the left-hand sides and right-hand sides of any production rules may be surrounded by a context of terminal and nonterminal symbols...

 rules. The following side-by-side comparison illustrates the differences between wiki markup and HTML:
MediaWiki syntax Equivalent HTML Rendered output
"Take some more tea
Tea
Tea is an aromatic beverage prepared by adding cured leaves of the Camellia sinensis plant to hot water. The term also refers to the plant itself. After water, tea is the most widely consumed beverage in the world...

," the March Hare said to Alice, very earnestly.


"I've had nothing yet," Alice replied in an offended tone: "so I can't take more."

"You mean you can't take less," said the Hatter: "it's very easy to take more than nothing."
<p>"Take some more tea," the March Hare said to Alice, very earnestly.</p>


<p>"I've had nothing yet," Alice replied in an offended tone: "so I can't take more."</p>


<p>"You mean you can't take <i>less</i>," said the Hatter: "it's <b>very</b> easy to take <i>more</i> than nothing."</p>

"Take some more tea
Tea
Tea is an aromatic beverage prepared by adding cured leaves of the Camellia sinensis plant to hot water. The term also refers to the plant itself. After water, tea is the most widely consumed beverage in the world...

," the March Hare said to Alice, very earnestly.

"I've had nothing yet," Alice replied in an offended tone: "so I can't take more."

"You mean you can't take less," said the Hatter: "it's very easy to take more than nothing."

(Quotation above from Alice's Adventures in Wonderland
Alice's Adventures in Wonderland
Alice's Adventures in Wonderland is an 1865 novel written by English author Charles Lutwidge Dodgson under the pseudonym Lewis Carroll. It tells of a girl named Alice who falls down a rabbit hole into a fantasy world populated by peculiar, anthropomorphic creatures...

by Lewis Carroll
Lewis Carroll
Charles Lutwidge Dodgson , better known by the pseudonym Lewis Carroll , was an English author, mathematician, logician, Anglican deacon and photographer. His most famous writings are Alice's Adventures in Wonderland and its sequel Through the Looking-Glass, as well as the poems "The Hunting of the...

)

Editing interface

MediaWiki's page-editing tools have sometimes been described as somewhat challenging to learn. A survey of students assigned to use a MediaWiki-based wiki found that when they were asked an open question about main problems with the wiki, 24% cited technical problems with formatting, e.g. "Couldn't figure out how to get an image in. Can't figure out how to show a link with words; it inserts a number."

To make editing long pages easier, MediaWiki allows the editing of a subsection of a page (as identified by its header). A user can also indicate whether or not an edit is minor. Correcting spelling, grammar or punctuation are examples of minor edits, whereas adding paragraphs of new text is an example of a non-minor edit.

Sometimes while one user is editing, a second user saves an edit to the same part of the page. Then, when the first user attempts to save the page, an edit conflict
Edit conflict
An edit conflict is a computer software problem encountered on wikis. An edit conflict occurs when a shared document is being edited by more than one person at the same time and a conflict is generated...

 occurs. The second user is then given an opportunity to merge his content into the page as it now exists following the first user's page save. An optional extension gives selected user groups priority when edit conflicts occur.

MediaWiki has the user interface in different languages. A language for the wiki content itself can also be set, to be sent in the "Content-Language" HTTP header and "lang" HTML attribute.

In Mediawiki 1.17 and up the classic editing toolbar is no longer included.

Application Programming Interface

MediaWiki has an extensible Application Programming Interface that provides direct, high-level access to the data contained in the MediaWiki databases. Client programs can use the API to login, get data, and post changes. The API supports thin web-based JavaScript clients and end-user applications (such as vandal-fighting tools). The API can be accessed by the backend of another web site. An extensive Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 bot
Internet bot
Internet bots, also known as web robots, WWW robots or simply bots, are software applications that run automated tasks over the Internet. Typically, bots perform tasks that are both simple and structurally repetitive, at a much higher rate than would be possible for a human alone...

 library, Pywikipediabot, and a popular semi-automated tool called AutoWikiBrowser, also interface with the API. The API is accessed via URLs such as http://en.wikipedia.org/w/api.php?action=query&list=recentchanges. In this case, the query would be asking Wikipedia for information relating to the last 10 edits to the site. One of the perceived advantages of the API is its language independence; it listens for HTTP connections from clients and can send a response in a variety of formats, such as XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

, serialized PHP, YAML
YAML
YAML is a human-readable data serialization format that takes concepts from programming languages such as C, Perl, and Python, and ideas from XML and the data format of electronic mail . YAML was first proposed by Clark Evans in 2001, who designed it together with Ingy döt Net and Oren Ben-Kiki...

, or JSON
JSON
JSON , or JavaScript Object Notation, is a lightweight text-based open standard designed for human-readable data interchange. It is derived from the JavaScript scripting language for representing simple data structures and associative arrays, called objects...

. Client code has been developed to provide layers of abstraction
Abstraction (computer science)
In computer science, abstraction is the process by which data and programs are defined with a representation similar to its pictorial meaning as rooted in the more complex realm of human life and language with their higher need of summarization and categorization , while hiding away the...

 to the API.

Rich content

MediaWiki supports rich content generated through specialized syntax. For example, the software comes with support for rendering mathematical formulas using LaTeX
LaTeX
LaTeX is a document markup language and document preparation system for the TeX typesetting program. Within the typesetting system, its name is styled as . The term LaTeX refers only to the language in which documents are written, not to the editor used to write those documents. In order to...

 and a special parser written in OCaml. Similar functionality for other content, ranging from graphical timelines over mathematical plotting
Plot (graphics)
A plot is a graphical technique for representing a data set, usually as a graph showing the relationship between two or more variables. The plot can be drawn by hand or by a mechanical or electronic plotter. Graphs are a visual representation of the relationship between variables, very useful for...

 and musical scores to Egyptian hieroglyphs
Egyptian hieroglyphs
Egyptian hieroglyphs were a formal writing system used by the ancient Egyptians that combined logographic and alphabetic elements. Egyptians used cursive hieroglyphs for religious literature on papyrus and wood...

, is available in the form of extensions and also aesthetic sense has improved considerably.

The software has become more powerful at dealing with a wide variety of uploaded media files. Its richest functionality is in the area of images, where image galleries and thumbnails can be generated with relative ease. There is also support for Exif metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

. The use of MediaWiki to operate the Wikimedia Commons
Wikimedia Commons
Wikimedia Commons is an online repository of free-use images, sound and other media files. It is a project of the Wikimedia Foundation....

, one of the largest free content
Free content
Free content, or free information, is any kind of functional work, artwork, or other creative content that meets the definition of a free cultural work...

 media archives, has driven the need for further functionality in this area.

Because any WYSIWYG editor would have to know wikitext grammar, and no full grammar for wikitext exists, MediaWiki currently provides no native WYSIWYG
WYSIWYG
WYSIWYG is an acronym for What You See Is What You Get. The term is used in computing to describe a system in which content displayed onscreen during editing appears in a form closely corresponding to its appearance when printed or displayed as a finished product...

 support. It does come with a customizable graphical toolbar for simplifying the process of learning the wiki syntax. Various extensions exist for handling WYSIWYG editing to different degrees, some using variations of the popular CKEditor. Wikia
Wikia
Wikia is a free web hosting service for wikis . It is normally free of charge for readers and editors, deriving most of its income from advertising, and publishes all user-provided text under copyleft licenses. Wikia hosts several hundred thousand wikis using the open-source wiki software MediaWiki...

, a popular wiki farm, uses a WYSIWYG extension that, being designed to be a modal editor, allows the user to flip back and forth between WYSIWYG and WikiText and Preview modes in a single editing session. MediaWiki also has an interface to allow the transparent use of external editors for uploaded files and wiki pages.

Tracking edits

Among the features of MediaWiki to assist in tracking edits is a Recent Changes feature that provides a list of recent edits to the wiki. This list contains basic information about those edits such as the editing user, the edit summary, the page edited, as well as any tags (e.g. "possible malware link") added by customizable abuse filters and other extensions to aid in combating unhelpful edits. On more active wikis, so many edits occur that it is hard to track Recent Changes manually. Anti-vandal software, including user-assisted tools and fully automated bots, are sometimes employed on such wikis to process Recent Changes items. Server load can be reduced by sending a continuous feed of Recent Changes to an IRC channel that these tools can monitor, eliminating their need to send requests for a refreshed Recent Changes feed to the API.

Another important tool is watchlisting. Each logged-in user has a watchlist to which he can add whatever pages he or she wishes. When an edit is made to one of those pages, a summary of that edit appears on the watchlist the next time it is refreshed. As with the recent changes page, recent edits that appear on the watchlist contain clickable links for easy review of the article history and specific changes made.

There is also capability to review all edits made by any particular user. In this way, if an edit is identified as problematic, it is possible to check the user's other edits for issues.

MediaWiki allows one to link to specific versions of articles. This has been useful to the scientific community, in that expert peer reviewers could analyse articles, improve them and provide links to the trusted version of that article.

Navigation

Navigation through the wiki is largely through internal wikilinks.

These implement page existence detection, in which a link is colored blue if the target page exists on the local wiki and red if it does not. When a user clicks on a red link, he is prompted to create an article with that title. Page existence detection makes it practical for users to create "wikified" articles — that is, articles containing links to other pertinent subjects — without those other articles being yet in existence.

The red/blue distinction alerts :
  • readers lacking an interest in creating new articles of broken links that it would be fruitless for them to click upon
  • editors interested in creating new articles of what topics their efforts might be usefully applied to.


Interwiki links function much the same way as namespaces. A set of interwiki prefixes can be configured to cause, for instance, a page title of wikiquote:Jimbo Wales to direct the user to the Jimbo Wales article on Wikiquote
Wikiquote
Wikiquote is one of a family of wiki-based projects run by the Wikimedia Foundation, running on MediaWiki software. Based on an idea by Daniel Alston and implemented by Brion Vibber, the goal of the project is to produce collaboratively a vast reference of quotations from prominent people, books,...

. Unlike internal wikilinks, interwiki links lack page existence detection functionality, and accordingly there is no way to tell whether a blue interwiki link is broken or not.

Page tabs and associated pages

Page tabs are displayed at the top of pages. These tabs allow users to perform actions or view pages that are related to the current page. The available default actions include viewing, editing, and discussing the current page. The specific tabs displayed depend on whether or not the user is logged into the wiki and whether the user has sysop privileges on the wiki. For instance, the ability to move a page or add it to one's watchlist is usually restricted to logged-in users. The site administrator can add or remove tabs by using JavaScript or installing extensions.

Each page has an associated history page from which the user can access every version of the page that has ever existed and generate diff
Diff
In computing, diff is a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Modern implementations also...

s between two versions of his choice. Users' contributions are displayed not only here, but also via a "user contributions" option on a sidebar. Carl Challborn & Teresa Reimann note that "While this feature may be a slight deviation from the collaborative, ‘ego-less’ spirit of wiki purists, it can be
very useful for educators who need to assess the contribution and participation of individual student users."

Namespaces

MediaWiki provides many features beyond hyperlinks for structuring content. One of the earliest features is namespace
Namespace
In general, a namespace is a container that provides context for the identifiers it holds, and allows the disambiguation of homonym identifiers residing in different namespaces....

s
. One of Wikipedia's earliest problems had been the separation of encyclopedic content from pages pertaining to maintenance and communal discussion, as well as personal pages about encyclopedia editors. Namespaces are prefixes before a page title (such as "User:" or "Talk:") that serve as descriptors for the page's purpose and allow multiple pages with different functions to exist under the same title. For instance, a page titled "The Terminator
The Terminator
The Terminator is a 1984 science fiction action film directed by James Cameron, co-written by Cameron and William Wisher Jr., and starring Arnold Schwarzenegger, Michael Biehn, and Linda Hamilton. The film was produced by Hemdale Film Corporation and distributed by Orion Pictures, and filmed in Los...

", in the default namespace, could describe the 1984 movie
The Terminator
The Terminator is a 1984 science fiction action film directed by James Cameron, co-written by Cameron and William Wisher Jr., and starring Arnold Schwarzenegger, Michael Biehn, and Linda Hamilton. The film was produced by Hemdale Film Corporation and distributed by Orion Pictures, and filmed in Los...

 starring Arnold Schwarzenegger
Arnold Schwarzenegger
Arnold Alois Schwarzenegger is an Austrian-American former professional bodybuilder, actor, businessman, investor, and politician. Schwarzenegger served as the 38th Governor of California from 2003 until 2011....

, while a page titled "User:The Terminator" could be a profile describing a user who chooses this name as a pseudonym. More commonly, each page and each namespace has an associated "Talk:" page, which can be used to discuss its contents, such as "User talk:" or "Template talk:". The purpose of having discussion pages is to allow content to be separated from discussion surrounding the content.

Namespaces can be viewed as folders
File folder
A file folder is a kind of folder that holds loose papers together for organization and protection. File folders usually consist of a sheet of heavy paper stock or other thin, but stiff, material which is folded in half, and are used to keep paper documents...

 that separate different basic types of information or functionality. Custom namespaces can be added by the site administrators. There are 16 namespaces by default for content, with 2 "pseudo-namespaces" used for dynamically generated "Special:" pages and links to media files. Each namespace on MediaWiki is numbered: content page namespaces have even numbers and their associated talk page namespaces have odd numbers.

Category Tags

Users can create new categories and add pages and files to those categories by appending one or more category tags to the content text. Adding these tags creates links at the bottom of the page that take the reader to the list of all pages in that category, making it easy to browse related articles. The use of categorization to organize content has been described as a combination of :
  • Collaborative tagging systems
    Social bookmarking
    Social bookmarking is a method for Internet users to organize, store, manage and search for bookmarks of resources online. Unlike file sharing, the resources themselves aren't shared, merely bookmarks that reference them....

     like del.icio.us
    Del.icio.us
    Delicious is a social bookmarking web service for storing, sharing, and discovering web bookmarks. The site was founded by Joshua Schachter in 2003 and acquired by Yahoo! in 2005, and by the end of 2008, the service claimed more than 5.3 million users and 180 million unique bookmarked URLs...

     and
  • Hierarchical classifications
    Library classification
    A library classification is a system of coding and organizing documents or library materials according to their subject and allocating a call number to that information resource...

     like the Dewey Decimal Classification
    Dewey Decimal Classification
    Dewey Decimal Classification, is a proprietary system of library classification developed by Melvil Dewey in 1876.It has been greatly modified and expanded through 23 major revisions, the most recent in 2011...

    .

Subpages

In addition to namespaces, content can be ordered using subpages. This simple feature provides automatic breadcrumbs
Breadcrumb (navigation)
Breadcrumbs or breadcrumb trail is a navigation aid used in user interfaces. It allows users to keep track of their locations within programs or documents. The term comes from the trail of breadcrumbs left by Hansel and Gretel in the popular fairytale....

 of the pattern Page title/Subpage title from the page after the slash (in this case, "Subpage title") to the page before the slash (in this case, "Page title").

Customization

If the feature is enabled, users can customize their stylesheets and configure client-side JavaScript
Client-side JavaScript
Client-side JavaScript is JavaScript that runs on the client-side. While JavaScript was originally created to run this way, the term was coined because the language is no longer limited to just client-side, since server-side JavaScript is now available.-Environment:The most common Internet media...

 to be executed with every pageview. On Wikipedia, this has led to a large number of additional tools and helpers developed through the wiki and shared among users. For instance, Lupin's navigation popups is a custom JavaScript tool that shows previews of articles when the user hovers over links, and also provides shortcuts for common maintenance tasks. Another example is wikEd, a full-featured MediaWiki-integrated text editor that provides syntax highlighting and search and replace functions.

The entire MediaWiki user interface can be edited through the wiki itself by users with the necessary permissions (typically so-called "administrators"). This is done through a special namespace with the prefix "MediaWiki:", where each page title identifies a particular user interface message. Using an extension, it is also possible for a user to create personal scripts, and to choose whether certain sitewide scripts should apply to him by toggling the appropriate options in the user preferences page.

Templates

The "MediaWiki:" namespace was also originally used for creating custom text blocks that could then be dynamically loaded into other pages using a special syntax. This content was later moved into its own namespace, "Template:".

Templates are text blocks that can be dynamically loaded inside another page whenever that page is requested.
The template is a special link in double curly brackets (for example ""), which calls the template (in this case located at Template:Disputed) to load in place of the template.
Templates support parameter
Parameter
Parameter from Ancient Greek παρά also “para” meaning “beside, subsidiary” and μέτρον also “metron” meaning “measure”, can be interpreted in mathematics, logic, linguistics, environmental science and other disciplines....

s, so that parts of the text can be substituted for each specific use case.
A related method, called template substitution (called by adding subst: at the beginning of a template link) inserts (like a copy and paste operation) the contents of the template into the target page, instead of loading the template contents dynamically whenever the page is loaded. This can lead to inconsistency when using templates, but may be useful in certain cases, and in most cases requires fewer server
Server (computing)
In the context of client-server architecture, a server is a computer program running to serve the requests of other programs, the "clients". Thus, the "server" performs some computational task on behalf of "clients"...

 resources (the actual amount of savings can vary depending on wiki configuration and the complexity of the template).

Templates have found many different uses. Templates enable users to create complex table layouts that are used consistently across multiple pages, and where only the content of the tables gets inserted using template parameters. Templates are often used to identify problems with a Wikipedia article by putting a template in the article. This template then outputs a graphical box stating that the article content is disputed or in need of some other attention, and also categorize it so that articles of this nature can be located. Templates are also used on user pages to send users standard messages welcoming them to the site, giving them awards for outstanding contributions, warning them when their behavior is considered inappropriate, notifying them when they are blocked from editing, and so on.

Groups and restriction of access

MediaWiki offers flexibility in creating and defining user groups. For instance, it would be possible to create an arbitrary "ninja" group that can block users and delete pages, and whose edits are hidden by default in the recent changes log. It is also possible to set up a group of "autoconfirmed" users that one becomes a member of after making a certain number of edits and waiting a certain number of days. Some groups that are enabled by default are bureaucrats and sysops. Bureaucrats have power to change other users' rights. Sysops have power over page protection and deletion and the blocking of users from editing. MediaWiki's available controls on editing rights have been deemed sufficient for publishing and maintaining important documents such as a manual of standard operating procedures in a hospital.

When a page consists only of useless content, there are several ways to remove said content. The simplest way, available to all users, is simply to blank the page. However, this interferes with page existence detection, unless an extension is installed to treat blanked pages as though they were nonexistent. Blanking also leaves the content accessible through the history page, an outcome that, while potentially increasing transparency by allowing non-sysops to easily review the content removal decision for appropriateness, might be unacceptable or even unlawful in some cases. Another option is for a sysop to delete the page, and thereby prevent it from being viewed by non-sysops. Another level of deletion, called RevisionDelete, can be used by a group (e.g. "Oversighters") to prevent a page from being viewed by non-members of that group. It is also possible, using certain extensions, to remove content from being viewed through any of the normal channels on the wiki, or even to completely delete revisions from the database.

MediaWiki comes with a basic set of features related to restricting access, but its original and ongoing design is driven by functions that largely relate to content, not content segregation. As a result with minimal exceptions (related to specific tools and their related "Special" pages), page access control has never been a high priority in core development and developers have stated that users requiring secure user access and authorisation controls should not rely on MediaWiki, since it was never designed for these kinds of situations. For instance, it is extremely difficult to create a wiki where only certain users can read and access some pages. Here, wiki engines like TWiki
TWiki
TWiki is a Perl-based structured wiki application, typically used to run a collaboration platform, knowledge or document management system, a knowledge base, or team portal...

, MoinMoin
MoinMoin
MoinMoin is a wiki engine implemented in Python, initially based on the PikiPiki wiki engine. The MoinMoin code is licensed under the GNU General Public License v2, or any later version .A number of organizations use MoinMoin to run public wikis,...

 and WikkaWiki
WikkaWiki
WikkaWiki is a free, lightweight, and standards-compliant wiki engine. Written in PHP, it uses MySQL to store pages. WikkaWiki is a fork of Wakka Wiki to which a number of new features have been added...

 provide more flexibility by supporting advanced security mechanisms like access control list
Access control list
An access control list , with respect to a computer file system, is a list of permissions attached to an object. An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on given objects. Each entry in a typical ACL specifies a subject...

s.

Extensibility

The MediaWiki codebase contains various "hooks" using callback
Callback (computer science)
In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine defined in a higher-level layer....

 functions
Subroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....

 to add additional PHP code in an extensible
Extensibility
In software engineering, extensibility is a system design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension...

 way. This allows developers to write extensions without necessarily needing to modify the core or having to submit their code for review. Installing an extension typically consists of adding a line to the configuration file, though in some cases additional changes such as database updates or core patches are required.

Five main extension points were created to allow developers to add features and functionalities to MediaWiki. Hooks are run every time a certain event happens; for instance, the ArticleSaveComplete hook occurs after a save article request has been processed. This can be used, for example, by an extension that notifies selected users whenever a page edit occurs on the wiki from new or anonymous users. New tags can be created to process data with opening and closing tags (...). Parser functions can be used to create a new command (). New special pages can be created to perform a specific function. These pages are dynamically generated. For example, a special page might show all pages that have one or more links to an external site or it might create a form providing user submitted feedback. Skins
Skin (computing)
In computing, a skin is a custom graphical appearance achieved by the use of a graphical user interface that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users....

 allow users to customize the look and feel of MediaWiki. A minor extension point allows the use of Amazon S3
Amazon S3
Amazon S3 is an online storage web service offered by Amazon Web Services. Amazon S3 provides storage through web services interfaces...

 to host image files.

Extensions

Resources to developers

MediaWiki can be made more advanced and useful for various purposes through its extensions. These extensions vary greatly in complexity.

The Wikimedia Foundation operates a Subversion server where many extensions are hosted, and a directory of them can be found on the MediaWiki website.

Some other sites also known for development of — or support for — extensions are MediaWiki.org, which maintains an extension matrix; and Google Code
Google Code
Google Code is Google's site for developer tools, APIs and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products....

.

Some MediaWiki developers, especially new ones, are granted access to commit changes to extensions only, rather than the entire codebase.

MediaWiki code review
Code review
Code review is systematic examination of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers' skills...

 is itself facilitated through a MediaWiki extension.

Since version 1.16, MediaWiki also used the jQuery
JQuery
jQuery is a cross-browser JavaScript library designed to simplify the client-side scripting of HTML. It was released in January 2006 at BarCamp NYC by John Resig...

 library.

For parser functions

Among the most popular extensions is a parser function extension, ParserFunctions, that allows different content to be rendered based on the result of conditional statements. These conditional statements can perform functions such as evaluating whether a parameter is empty, comparing strings, evaluating mathematical expressions, and returning one of two values depending on whether a page exists. It was designed as a replacement for a notoriously inefficient template called . Schindler recounts the history of the ParserFunctions extension as follows:
Another parser functions extension, StringFunctions, was developed to allow evaluation of string length, string position, and so on. Wikimedia communities, having created awkward workarounds to accomplish the same functionality, clamored for it to be enabled on their projects. Much of its functionality was eventually integrated into the ParserFunctions extension, albeit disabled by default and accompanied by a warning from Tim Starling that enabling string functions would allow users "to implement their own parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions."

For footnotes and academic-related display

Another very popular extension is a citation extension that enable footnotes to be added to pages using inline references. This extension has, however, been criticized for being difficult to use and requiring the user to memorize complex syntax. A tool called ProveIt was proposed as a replacement. A gadget called RefToolbar has also been created to make it easier to create citations using common templates. MediaWiki has some extensions that are well-suited for academia, such as mathematics extensions and an extension that allows molecules to be rendered in 3D
Three-dimensional space
Three-dimensional space is a geometric 3-parameters model of the physical universe in which we live. These three dimensions are commonly called length, width, and depth , although any three directions can be chosen, provided that they do not lie in the same plane.In physics and mathematics, a...

.

Integration

A generic Widgets framework has been created that allows MediaWiki to integrate with virtually anything. Other examples of extensions that could improve a wiki are category suggestion extensions and extensions for inclusion of Flash Videos, YouTube
YouTube
YouTube is a video-sharing website, created by three former PayPal employees in February 2005, on which users can upload, view and share videos....

 videos, and RSS feeds. An extension to integrate with Facebook
Facebook
Facebook is a social networking service and website launched in February 2004, operated and privately owned by Facebook, Inc. , Facebook has more than 800 million active users. Users must register before using the site, after which they may create a personal profile, add other users as...

 is forthcoming. Metavid
Metavid
Metavid is a free-software wiki-based community archive project for audio video media. The site hosts public domain US legislative footage. It was started as a Digital Arts/New Media MFA thesis project of Michael Dale and Abram Stern under the advisement of Professor Warren Sack in late 2005 at the...

, a site that archives video footage of the U.S. Senate and House floor proceedings, was created using code extending MediaWiki into the domain of collaborative video authoring. One extension, Viskimap, makes use of graphic organizers to visualize the relationships between content pages, so that students can easily get an understanding of the content elements and their relations, as they navigate through the wiki pages.

Combating linkspam

There are many spambot
Spambot
A spambot is an automated computer program designed to assist in the sending of spam. Spambots usually create fake accounts and send spam using them, although it would be obvious that a spambot is sending it...

s that search the Internet for MediaWiki installations and add linkspam to them, despite the fact that MediaWiki uses the nofollow
Nofollow
nofollow is a value that can be assigned to the rel attribute of an HTML a element to instruct some search engines that a hyperlink should not influence the link target's ranking in the search engine's index...

 attribute to discourage such attempts at search engine optimization
Search engine optimization
Search engine optimization is the process of improving the visibility of a website or a web page in search engines via the "natural" or un-paid search results...

. Part of the problem is that third party republishers, such as mirrors
Mirror (computing)
In computing, a mirror is an exact copy of a data set. On the Internet, a mirror site is an exact copy of another Internet site.Mirror sites are most commonly used to provide multiple sources of the same information, and are of particular value as a way of providing reliable access to large downloads...

, may not independently implement the nofollow tag on their websites, so marketers can still get PageRank
PageRank
PageRank is a link analysis algorithm, named after Larry Page and used by the Google Internet search engine, that assigns a numerical weighting to each element of a hyperlinked set of documents, such as the World Wide Web, with the purpose of "measuring" its relative importance within the set...

 benefit by inserting links into pages when those entries appear on third party websites. Anti-spam extensions have been developed to combat the problem by introducing CAPTCHA
CAPTCHA
A CAPTCHA is a type of challenge-response test used in computing as an attempt to ensure that the response is generated by a person. The process usually involves one computer asking a user to complete a simple test which the computer is able to generate and grade...

s, blacklist
Blacklist
A blacklist is a list or register of entities who, for one reason or another, are being denied a particular privilege, service, mobility, access or recognition. As a verb, to blacklist can mean to deny someone work in a particular field, or to ostracize a person from a certain social circle...

ing certain URLs, and allowing bulk deletion of pages recently added by a particular user.

Searches and queries

MediaWiki comes pre-installed with a standard text-based search. Extensions exist to let MediaWiki use third-party search tools like Lucene
Lucene
Apache Lucene is a free/open source information retrieval software library, originally created in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License....

 (used on Wikimedia sites) and Sphinx
Sphinx (search engine)
Sphinx is a free software search engine designed with indexing database content in mind. It currently supports MySQL, PostgreSQL, and ODBC-compliant databases as data sources natively. Other data sources can be indexed via pipe in a custom XML format...

.

Various MediaWiki extensions have also been created to allow for more complex, faceted search, on both data entered within the wiki and on metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

 such as pages' revision history. Example of extensions facilitating such analyses include Semantic MediaWiki
Semantic MediaWiki
Semantic MediaWiki is an extension to MediaWiki that allows for annotating semantic data within wiki pages, thus turning a wiki that incorporates the extension into a semantic wiki...

, which provides the ability to add structured and searchable relations and attributes to wiki pages, WikiTrust
WikiTrust
WikiTrust is a software product that assesses the credibility of content and author reputation of wiki articles using an automated algorithm. WikiTrust is a plug-in for servers using the MediaWiki platform, such as Wikipedia. When installed on a MediaWiki website it enables users of that website to...

, which implements a system for checking the author, origin, and reliability of wiki text, and DynaTable.

An extension called Woogle attempts to add enterprise search engine functionality to MediaWiki.

Database

MediaWiki can use either the MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...

, PostgreSQL
PostgreSQL
PostgreSQL, often simply Postgres, is an object-relational database management system available for many platforms including Linux, FreeBSD, Solaris, MS Windows and Mac OS X. It is released under the PostgreSQL License, which is an MIT-style license, and is thus free and open source software...

 or SQLite
SQLite
SQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard...

 relational database management system
Relational database management system
A relational database management system is a database management system that is based on the relational model as introduced by E. F. Codd. Most popular databases currently in use are based on the relational database model....

. There is limited support for Oracle Database
Oracle Database
The Oracle Database is an object-relational database management system produced and marketed by Oracle Corporation....

. A MediaWiki database contains several dozen tables
Table (database)
In relational databases and flat file databases, a table is a set of data elements that is organized using a model of vertical columns and horizontal rows. A table has a specified number of columns, but can have any number of rows...

, including a page table that contains page titles, page ids, and other metadata; and a revision table to which is added a new row every time an edit is made, containing the page id, a brief textual summary of the change performed, the user name of the article editor (or its IP address the case of an unregistered user) and a timestamp.

In a 4.5 year period, the MediaWiki database had 170 schema
Database schema
A database schema of a database system is its structure described in a formal language supported by the database management system and refers to the organization of data to create a blueprint of how a database will be constructed...

 versions. Possibly the largest schema change was done in MediaWiki 1.5, when the storage of metadata was separated from that of content, to improve performance flexibility. When this upgrade was applied to Wikipedia, the site was locked for editing, and the schema was converted to the new version in about 22 hours. Some software enhancement proposals, such as a proposal to allow sections of articles to be watched via watchlist, have been rejected because the necessary schema changes would have required excessive Wikipedia downtime.

Performance and storage

Because it is used to run one of the highest-traffic sites on the Web, Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...

, MediaWiki performance and scalability
Scalability
In electronics scalability is the ability of a system, network, or process, to handle growing amount of work in a graceful manner or its ability to be enlarged to accommodate that growth...

 have been highly optimized. MediaWiki supports Squid, load-balanced
Load balancing (computing)
Load balancing is a computer networking methodology to distribute workload across multiple computers or a computer cluster, network links, central processing units, disk drives, or other resources, to achieve optimal resource utilization, maximize throughput, minimize response time, and avoid...

 database replication, client-side caching, memcached
Memcached
In computing, memcached is a general-purpose distributed memory caching system that was originally developed by Danga Interactive for LiveJournal, but is now used by many other sites. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the...

 or table-based caching for frequently accessed processing of query results, a simple static file cache, feature-reduced operation, revision compression, and a job queue for database operations. According to Wikimedia Networking Coordinator Mark Bergsma, MediaWiki developers have attempted to optimize the software by not doing anything stupid, avoiding expensive algorithms, database queries, etc., caching every result that is expensive and has temporal locality of reference, and focusing on the hot spots in the code through profiling.

MediaWiki code is designed to allow for data to be written to a master database and read from slave databases, although the master can be used for some read operations if the slaves are not yet up to date. Metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...

, such as article revision history, article relations (links, categories etc.), user accounts and settings can be stored in core databases and cached; the actual revision text, being more rarely used, can be stored as append-only blobs in external storage. The software is suitable for the operation of large scale wiki farm
Wiki farm
A wiki hosting service or wiki farm is a server or an array of servers that offer users tools to simplify the creation and development of individual, independent wikis...

s such as Wikimedia, which had about 800 wikis as of August 2011. However, MediaWiki comes with no built-in GUI to manage such installations.

Empirical evidence shows most revisions in MediaWiki databases tend to differ only slightly from previous revisions Therefore, subsequent revisions of an article can be concatenated and then compressed, achieving very high data compression ratio
Data compression ratio
Data compression ratio, also known as compression power, is a computer-science term used to quantify the reduction in data-representation size produced by a data compression algorithm...

s of up to 100x.

Limitations

The parser serves as the de facto
De facto
De facto is a Latin expression that means "concerning fact." In law, it often means "in practice but not necessarily ordained by law" or "in practice or actuality, but not officially established." It is commonly used in contrast to de jure when referring to matters of law, governance, or...

standard for the MediaWiki syntax, as no formal syntax has been defined. Due to this lack of a formal definition, it has been difficult to create WYSIWYG
WYSIWYG
WYSIWYG is an acronym for What You See Is What You Get. The term is used in computing to describe a system in which content displayed onscreen during editing appears in a form closely corresponding to its appearance when printed or displayed as a finished product...

 editors for MediaWiki, or to port the parsing to another language.

MediaWiki is not designed to be a suitable replacement for dedicated online forum or blog
Blog
A blog is a type of website or part of a website supposed to be updated with new content from time to time. Blogs are usually maintained by an individual with regular entries of commentary, descriptions of events, or other material such as graphics or video. Entries are commonly displayed in...

ging software, although extensions do exist to allow for both of these.

It is not uncommon for new MediaWiki users to make certain mistakes, such as forgetting to sign posts with four tildes (~~~~), or manually entering a plaintext signature, due to unfamiliarity with the idiosyncratic particulars involved in communication on MediaWiki discussion pages. On the other hand, the format of these discussion pages has been cited as a strength by one educator, who stated that it provides "more fine-grain capabilities for discussion than traditional threaded discussion forums. For example, instead of 'replying' to an entire message, the participant in a discussion can create a hyperlink to a new wiki page on any word from the original page. Discussions are easier to follow since the content is available via hyperlinked wiki page, rather than a series of reply messages on a traditional threaded discussion forum. However, except in few cases, students were not using this capability, possibly because of their familiarity with the traditional linear discussion style and a lack of guidance on how to make the content more 'link-rich'."

MediaWiki has little support for the creation of dynamically-assembled documents, or pages that aggregate data from other pages. While it is possible to create new "special" pages, it requires coding an extension in PHP and thus administrative rights to the server running MediaWiki. Some research has been done on enabling such features directly within MediaWiki. The Semantic MediaWiki
Semantic MediaWiki
Semantic MediaWiki is an extension to MediaWiki that allows for annotating semantic data within wiki pages, thus turning a wiki that incorporates the extension into a semantic wiki...

 extension provides these features, but it is not in use on Wikipedia.

Upgrading MediaWiki has also historically been a bit troublesome, especially when upgrading from significantly older versions.

Security

MediaWiki developers have enacted security standards, both for core code and extensions. SQL queries and HTML output are usually done through wrapper functions that handle validation, escaping, filtering for prevention of cross-site scripting
Cross-site scripting
Cross-site scripting is a type of computer security vulnerability typically found in Web applications that enables attackers to inject client-side script into Web pages viewed by other users. A cross-site scripting vulnerability may be used by attackers to bypass access controls such as the same...

 and SQL injection
SQL injection
A SQL injection is often used to attack the security of a website by inputting SQL statements in a web form to get a badly designed website in order to dump the database content to the attacker. SQL injection is a code injection technique that exploits a security vulnerability in a website's software...

. As of April 2010, approximately 50 of MediaWiki's extensions had unresolved security issues. Many security issues have had to be patched after a MediaWiki version release, and accordingly MediaWiki.org states, "The most important security step you can take is to keep your software up to date" by subscribing to the announcement listserv and installing security updates that are announced. PHPIDS
PHPIDS
PHPIDS is an open source PHP Web Application Intrusion Detection System. It was written by Mario Heiderich, Christian Matthies, Lars H. Strojny and several others in March 2007...

 Extension for Mediawiki
MediaWiki
MediaWiki is a popular free web-based wiki software application. Developed by the Wikimedia Foundation, it is used to run all of its projects, including Wikipedia, Wiktionary and Wikinews. Numerous other wikis around the world also use it to power their websites...

 developed to identify intrusions

Developer community

MediaWiki developers are spread around the world, though with a majority in the United States and Europe. Face-to-face meetings and programming sessions for MediaWiki developers have been held once or several times a year since 2004.

Support

To support MediaWiki users, there are :
  • The Support Desk on MediaWiki.org.
  • An official mailing list, Mediawiki-l.
  • Several books have been written about MediaWiki administration, including some free online books.
  • An unofficial forum at MWusers.com

Comparison to other online collaboration software

Due to MediaWiki's use on Wikipedia, most users are familiar with MediaWiki's functions and layout. Compared to other wikis, MediaWiki is also fairly aesthetically pleasing, though simple, and has an easily customized side menu and stylesheet. However, in one assessment, Confluence
Confluence (software)
Confluence is an enterprise wiki software. Written in Java and mainly used in corporate environments, Confluence is developed and marketed by Atlassian. Confluence is sold as either on-premises software or as a hosted solution...

 was deemed to be a superior product due to its very usable API and ability to better support multiple wikis. Wiki providers Socialtext
Socialtext
Socialtext Incorporated is a company based in Palo Alto, California that produces enterprise social software, comprising an integrated suite of web-based social software applications including microblogging, user profile, directories, groups, personal dashboards using OpenSocial widgets, and shared...

 and JotSpot have/had project management
Project management
Project management is the discipline of planning, organizing, securing, and managing resources to achieve specific goals. A project is a temporary endeavor with a defined beginning and end , undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value...

 features that MediaWiki lacks.

A study was done at the University of Hong Kong comparing TWiki
TWiki
TWiki is a Perl-based structured wiki application, typically used to run a collaboration platform, knowledge or document management system, a knowledge base, or team portal...

 to MediaWiki. The authors noted that TWiki has been considered as a collaborative tool for development of educational papers and technical projects, whereas MediaWiki's fame is mostly due to Wikipedia. Although both platforms allow discussion and tracking of progress, TWiki has a "Report" part that MediaWiki lacks. Students perceived MediaWiki as being easier to use and more enjoyable than TWiki. When asked whether they recommended using MediaWiki for knowledge management
Knowledge management
Knowledge management comprises a range of strategies and practices used in an organization to identify, create, represent, distribute, and enable adoption of insights and experiences...

 course group project, 15 out of 16 respondents expressed their preference for MediaWiki giving answers of great certainty, such as “of course”, “for sure”. TWiki and MediaWiki both have flexible plug-in architecture. A study that compared students' experience with MediaWiki to that with Google Documents found that students gave the latter a much higher rating on user-friendly layout.

Version history

The first version of MediaWiki, 1.1, was released in December 2003. The current stable version of MediaWiki is 1.18, while the most recent version is 1.19.

External links

  • MediaWiki homepage, with Hubs for users, system administrators and developers.
  • MediaWiki on the Meta-Wiki, Wikimedia's meta
    Meta
    Meta- , is a prefix used in English to indicate a concept which is an abstraction from another concept, used to complete or add to the latter....

     website.
  • MediaWiki history at MediaWiki
  • [irc://irc.freenode.net/mediawiki #mediawiki] on freenode
  • MediaWiki version lifecycle
  • MediaWiki news
  • MediaWiki download page
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK