MediaWiki is written in thePHPprogramming language and stores all text content into adatabase. The software is optimized to efficiently handle large projects, which can have terabytes of content and hundreds of thousands ofviews per second.[7][8] Because Wikipedia is one of the world's largest and most visited websites, achieving scalability through multiple layers ofcaching anddatabase replication has been a major concern for developers. Another major aspect of MediaWiki is its internationalization; its interface is available in more than 400 languages.[9] The software has hundreds of configuration settings[10] and more than 1,000extensions available for enabling various features to be added or changed.[11]
Key features
MediaWiki provides a rich core feature set and a mechanism to attachextensions to provide additional functionality.
Internationalization and localisation
Niklas Laxström explains the features that allowedtranslatewiki.net to provide MediaWiki with more than 400 locales.
Due to the strong emphasis on multilingualism in the Wikimedia projects,internationalization and localization has received significant attention by developers. The user interface has been fully or partially translated into more than 400 languages ontranslatewiki.net,[9] and can be further customized by site administrators (the entire interface is editable through the wiki).
Several extensions, most notably those collected in the MediaWiki Language Extension Bundle, are designed to further enhance the multilingualism and internationalization of MediaWiki.
Installation and configuration
Installation of MediaWiki requires that the user haveadministrative privileges on a server running both PHP and a compatible type of SQLdatabase. Some users find that setting up avirtual host is helpful if the majority of one's site runs under a framework (such asZope orRuby on Rails) that is largely incompatible with MediaWiki.[12]Cloud hosting can eliminate the need to deploy a new server.[13]
An installation PHP script is accessed via aweb browser to initialize the wiki's settings. It prompts the user for a minimal set of required parameters, leaving further changes, such as enabling uploads,[14] adding a site logo,[15] and installing extensions, to be made by modifying configuration settings contained in a file calledLocalSettings.php.[16] 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,[17] and certain gadgets can be added by creatingJavaScript pages in the MediaWiki namespace.[18] The MediaWiki community publishes a comprehensive installation guide.[19]
Markup
One of the earliest differences between MediaWiki (and its predecessor,UseModWiki) and other wiki engines was the use of "free links" instead ofCamelCase. When MediaWiki was created, it was typical for wikis to require text like "WorldWideWeb" to create a link to a page about theWorld Wide Web; 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]]. This change was logical for the purpose of creating an encyclopedia, where accuracy in titles is important.
MediaWiki uses an extensible[20]lightweightwiki markup designed to be easier to use and learn thanHTML. Tools exist for converting content such astables between MediaWiki markup and HTML.[21] Efforts have been made to create a MediaWiki markup spec, but a consensus seems to have been reached that Wikicode requirescontext-sensitive grammar rules.[22][23] The following side-by-side comparison illustrates the differences between wiki markup and HTML:
MediaWiki syntax (the "behind the scenes" code used to add formatting to text)
HTML equivalent (another type of "behind the scenes" code used to add formatting to text)
Rendered output (seen onscreen by a site viewer)
====A dialogue===="Take some more[[tea]]," 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."
<h4>A dialogue</h4><p>"Take some more<ahref="/wiki/Tea"title="Tea">tea</a>," the March Hare said to Alice, very earnestly.</p><br><p>"I've had nothing yet," Alice replied in an offended tone: "so I can't take more."</p><br><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>
A dialogue
"Take some moretea," 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 takeless," said the Hatter: "it'svery easy to takemore than nothing."
Editing interface of MediaWiki 1.44.0-wmf.4 withsyntax highlighting, showing the edit toolbar of 2017 wikitext editor and some examples of wiki syntax
MediaWiki's default page-editing tools have been described as somewhat challenging to learn.[24] A survey of students assigned to use a MediaWiki-based wiki found that when they were asked anopen 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."[25]
To make editing long pages easier, MediaWiki allows the editing of a subsection of a page (as identified by its header). A registered 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, anedit conflict occurs. The second user is then given an opportunity to merge their content into the page as it now exists following the first user's page save.
MediaWiki's user interface has been localized in many 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.
VisualEditor has its own integrated wikitext editing interface known as 2017 wikitext editor, the older editing interface is known as 2010 wikitext editor.
Application programming interface
MediaWiki has an extensibleweb API (application programming interface) that provides direct, high-level access to the data contained in the MediaWiki databases. Client programs can use the API to log in, 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 thebackend of another web site.[26] An extensivePythonbot library,Pywikibot,[27] and a popular semi-automated tool calledAutoWikiBrowser, also interface with the API.[28] The API is accessed via URLs such ashttps://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 forHTTP connections from clients and can send a response in a variety of formats, such asXML, serialized PHP, orJSON.[29]Client code has been developed to provide layers ofabstraction to the API.[30]
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. "possiblevandalism")[31] added by customizable abuse filters and other extensions to aid in combating unhelpful edits.[32] On more active wikis, so many edits occur that it is hard to track Recent Changes manually. Anti-vandal software, including user-assisted tools,[33] is sometimes employed on such wikis to process Recent Changes items. Server load can be reduced by sending a continuous feed of Recent Changes to anIRC channel that these tools can monitor, eliminating their need to send requests for a refreshed Recent Changes feed to the API.[34][35]
Another important tool is watchlisting. Each logged-in user has a watchlist to which the user 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.[36] 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 the 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.[37]
Navigation
Wikilinks
Navigation through the wiki is largely through internal wikilinks. MediaWiki's wikilinks 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. If a user clicks on a red link, they are 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.
Interwiki links
"Inter-wiki link" redirects here. For help with interwiki linking on Wikipedia, seeHelp:Interwiki linking.
Interwiki links function much the same way as namespaces. A set of interwiki prefixes can be configured to cause, for instance, a page title ofwikiquote:Jimbo Wales to direct the user to the Jimbo Wales article onWikiquote.[38] 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.
Interlanguage links
An example of interlanguage links
Interlanguage links are the small navigation links that show up in the sidebar in most MediaWiki skins that connect an article with related articles in other languages within the same Wiki family. This can provide language-specific communities connected by a larger context, with all wikis on the same server or each on its own server.[39]
Previously, Wikipedia used interlanguage links to link an article to other articles on the same topic in other editions of Wikipedia. This was superseded by the launch of Wikidata.[40]
Content organization
Page tabs and associated pages
MediaWiki page tabs, using the "Vector 2010" skin. The red coloration of the "discussion" tab indicates that the article does not yet have a talk page. As with any other red wikilink, clicking on it prompts the user to create the page.
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 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.[41]
Each page has an associated history page from which the user can access every version of the page that has ever existed and generatediffs between two versions of his choice. Users' contributions are displayed not only here, but also via a "user contributions" option on a sidebar. In a 2004 article, Carl Challborn and Teresa Reimann noted 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."[42]
Namespaces
"Talk page" redirects here. For talk pages on Wikipedia, seeHelp:Talk pages.
MediaWiki provides many features beyondhyperlinks for structuring content. One of the earliest such features isnamespaces. 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]]", in the default namespace, could describethe 1984 movie starringArnold Schwarzenegger, while a page titled "[[User:The Terminator]]" could be a profile describing a user who chooses this name as a pseudonym. More commonly, each namespace has an associated "Talk:" namespace, 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.[43][44]
Namespaces can be viewed asfolders 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.[45]
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.[46] The use of categorization to organize content has been described as a combination of:
In addition to namespaces, content can be ordered usingsubpages. This simple feature provides automaticbreadcrumbs 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
Users can configure customJavaScript that is executed on every pageview. This has led to JavaScript tools that users can "install", the "navigation popups" tool shown here displays a small preview of an article when hovering over a link title.
If the feature is enabled, users can customize their stylesheets and configureclient-side JavaScript 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,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.[48]
Ascreenshot of a wiki using MediaWiki with a customized skin
The entire MediaWiki user interface can be edited through the wiki itself by users with the necessary permissions (typically 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,[49] it is also possible for a user to create personal scripts, and to choose whether certain sitewide scripts should apply to them by toggling the appropriate options in the user preferences page.
Templates
The "MediaWiki:" namespace was originally also 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 doublecurly brackets (for example "{{Disputed|date=October 2018}}"), which calls the template (in this case located atTemplate:Disputed) to load in place of the template call.
Templates arestructured documents containingattribute–value pairs. They are defined withparameters, to which are assignedvalues whentranscluded on an article page. The name of the parameter isdelimited from the value by anequals sign. A class of templates known asinfoboxes is used on Wikipedia to collect and present a subset of information about its subject, usually on the top (mobile view) or top right-hand corner (desktop view) of the document.
Pages in other namespaces can also be transcluded as templates. In particular, a page in the main namespace can be transcluded by prefixing its title with a colon; for example,{{:MediaWiki}} transcludes the article "MediaWiki" from the main namespace. Also, it is possible to mark the portions of a page that should be transcluded in several ways, the most basic of which are:[50]
<noinclude>...</noinclude>, which marks content that is not to be transcluded;
<includeonly>...</includeonly>, which marks content that is not rendered unless it is transcluded;
<onlyinclude>...</onlyinclude>, which marks content that is to be theonly content transcluded.
A related method, called templatesubstitution (called by addingsubst: at the beginning of a template link) inserts the contents of the template into the target page (like acopy and paste operation), 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 fewerserver 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 frequently 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,[51] giving them awards for outstanding contributions,[52][53] warning them when their behavior is considered inappropriate,[54] notifying them when they are blocked from editing,[55] 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.[56] Some groups that are enabled by default are bureaucrats and sysops. Bureaucrats have the power to change other users' rights. Sysops have power over page protection anddeletion 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 ofstandard operating procedures in a hospital.[57]
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 authorization 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.[58] Here, wiki engines likeFoswiki,MoinMoin andConfluence provide more flexibility by supporting advanced security mechanisms likeaccess control lists.
Extensibility
The MediaWiki codebase contains varioushooks usingcallbackfunctions to add additional PHP code in anextensible 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, theArticleSaveComplete hook occurs after a save article request has been processed.[59] 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.[60] New tags can be created to process data with opening and closing tags (<newtag>...</newtag>).[61] Parser functions can be used to create a new command ({{#if:...|...|...}}).[62] 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.[63]Skins allow users to customize the look and feel of MediaWiki.[64] A minor extension point allows the use ofAmazon S3 to host image files.[65]
Extensions
Text manipulation
Tim Starling in 2008
Among the most popular extensions is a parser function extension, ParserFunctions, which allows different content to be rendered based on the result ofconditional statements.[66] 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 {{Qif}}.[67] Schindler recounts the history of the ParserFunctions extension as follows:[68]
In 2006 some Wikipedians discovered that through an intricate and complicated interplay of templating features and CSS they could create conditional wiki text, i.e. text that was displayed if a template parameter had a specific value. This included repeated calls of templates within templates, which bogged down the performance of the whole system. The developers faced the choice of either disallowing the spreading of an obviously desired feature by detecting such usage and explicitly disallowing it within the software or offering an efficient alternative. The latter was done by Tim Starling, who announced the introduction of parser functions, wiki text that calls functions implemented in the underlying software.At first, only conditional text and the computation of simple mathematical expressions were implemented, but this already increased the possibilities for wiki editors enormously. With time further parser functions were introduced, finally leading to a framework that allowed the simple writing of extension functions to add arbitrary functionalities, like e.g. geo-coding services or widgets. This time the developers were clearly reacting to the demand of the community, being forced either to fight the solution of the issue that the community had (i.e. conditional text), or offer an improved technical implementation to replace the previous practice and achieve an overall better performance.
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,[69] clamored for it to be enabled on their projects.[70] Much of its functionality was eventually integrated into the ParserFunctions extension,[71] 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."[72]
Since 2012 an extension, Scribunto, has existed that allows for the creation of "modules"—wiki pages written in the scripting languageLua—which can then be run within templates and standard wiki pages. Scribunto has been installed on Wikipedia and other Wikimedia sites since 2013 and is used heavily on those sites. Scribunto code runs significantly faster than corresponding wikitext code using ParserFunctions.[73]
For footnotes and academic-related display
Another very popular extension is a citation extension that enables footnotes to be added to pages using inline references.[74] This extension has, however, been criticized for being difficult to use and requiring the user to memorize complex syntax. A gadget calledRefToolbar attempts to make it easier to create citations using common templates. MediaWiki has some extensions that are well-suited for academia, such as mathematics extensions[75] and an extension that allows molecules to be rendered in3D.[76]
Integration
A generic Widgets extension exists that allows MediaWiki to integrate with virtually anything. Other examples of extensions that could improve a wiki are category suggestion extensions[77] and extensions for inclusion ofFlash Videos,[78] YouTube videos,[79] andRSS feeds.[80]Metavid, a site that archives video footage of theU.S. Senate andHouse floor proceedings, was created using code extending MediaWiki into the domain of collaborative video authoring.[81]
Combating linkspam
There are manyspambots that search the web for MediaWiki installations and addlinkspam to them, despite the fact that MediaWiki uses thenofollow attribute to discourage such attempts atsearch engine optimization.[82] Part of the problem is that third party republishers, such asmirrors, may not independently implement the nofollow tag on their websites, so marketers can still getPageRank benefit by inserting links into pages when those entries appear on third party websites.[83]Anti-spam extensions have been developed to combat the problem by introducingCAPTCHAs,[84]blacklisting certain URLs,[85] and allowing bulk deletion of pages recently added by a particular user.[86]
MediaWiki comes pre-installed with a standard text-based search. Extensions exist to let MediaWiki use more sophisticated third-party search engines, includingElasticsearch (which since 2014 has been in use on Wikipedia),Lucene[87] andSphinx.[88]
Various MediaWiki extensions have also been created to allow for more complex,faceted search, on both data entered within the wiki and onmetadata such as pages' revision history.[89][90]Semantic MediaWiki is one such extension.[91][92]
Rich content
Images can be arranged in galleries, a feature that is used extensively for Wikimedia's media archive,Wikimedia Commons.
The software supports a wide variety of uploaded media files, and allows image galleries and thumbnails to be generated with relative ease. There is also support forExifmetadata. MediaWiki operates theWikimedia Commons, one of the largestfree content media archives.
For WYSIWYG editing,VisualEditor is available to use in MediaWiki which simplifying editing process for editors and has been bundled since MediaWiki 1.35.[93] Other extensions exist for handling WYSIWYG editing to different degrees.[94]
Database
A schematic of the MediaWiki database structure
MediaWiki can use either theMySQL/MariaDB,PostgreSQL orSQLiterelational database management system. Support forOracle Database andMicrosoft SQL Server has been dropped since MediaWiki 1.34.[95] A MediaWiki database contains several dozentables, including apage table that contains page titles, page ids, and other metadata;[96] and arevision 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.[97][98]
In a 4½ year period prior to 2008, the MediaWiki database had 170schema versions.[99] Possibly the largest schema change was done in 2005 with 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.[100]
Performance and storage
Because it is used to run one of the highest-traffic sites on the Web, Wikipedia, MediaWiki's performance andscalability have been highly optimized.[101] MediaWiki supportsSquid,load-balanced database replication, client-side caching,memcached 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. MediaWiki developers have attempted to optimize the software by 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 throughprofiling.[102]
MediaWiki code is designed to allow for data to be written to a read-write database and read from read-only databases, although the read-write database can be used for some read operations if the read-only databases are not yet up to date.Metadata, 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-onlyblobs in external storage. The software is suitable for the operation of large-scalewiki farms such asWikimedia, 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 highdata compression ratios of up to 100×.[102]
For more information on the architecture, such as how it stores wikitext and assembles a page, seeExternal links.
Limitations
The parser serves as thede facto 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 createWYSIWYG editors for MediaWiki, although several WYSIWYG extensions do exist, including the popularVisualEditor.
MediaWiki is not designed to be a suitable replacement for dedicatedonline forum or blogging software,[103] although extensions do exist to allow for both of these.[104][105]
It is common for new MediaWiki users to make certain mistakes, such as forgetting to sign posts with four tildes (~~~~),[106] or manually entering a plaintext signature,[107] 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'.[108]
MediaWiki by default has little support for the creation of dynamically assembled documents, or pages that aggregate data from other pages. Some research has been done on enabling such features directly within MediaWiki.[109] TheSemantic MediaWiki extension provides these features. It is not in use on Wikipedia, but in more than 1,600 other MediaWiki installations.[110] The Wikibase Repository and Wikibase Repository client are however implemented inWikidata andWikipedia respectively, and to some extent providessemantic web features, and linking of centrally stored data to infoboxes in various Wikipedia articles.
Upgrading MediaWiki is usually fully automated, requiring no changes to the site content or template programming. Historically troubles have been encountered when upgrading from significantly older versions.[111]
Security
MediaWiki developers have enacted security standards, both for core code and extensions.[112]SQL queries and HTML output are usually done through wrapper functions that handle validation, escaping, filtering for prevention ofcross-site scripting andSQL injection.[113] Many security issues have had to be patched after a MediaWiki version release,[114] 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 announcementmailing list and installing security updates that are announced.[115]
Support
Support for MediaWiki users consists of:
MediaWiki.org, including the Support Desk.
An official mailing list, Mediawiki-l.
Several books have been written about MediaWiki administration,[116] including some free online books.[117][118]
License
MediaWiki is free and open-source and is distributed under the terms of theGNU General Public License version 2 or any later version. Its documentation, located at its official website at www.mediawiki.org, is released under theCreative Commons BY-SA 4.0 license, with a set of help pages intended to be freely copied into fresh wiki installations and/or distributed with MediaWiki software in thepublic domain instead to eliminate legal issues for wikis with other licenses.[119][120] MediaWiki's development has generally favored the use ofopen-source media formats.[121]
Development
MediaWiki has an active volunteer community for development and maintenance. 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.[122]
Anyone can submitpatches to the project'sGit/Gerritrepository.[123]There are also paid programmers who primarily develop projects for theWikimedia Foundation. MediaWiki developers participate in theGoogle Summer of Code by facilitating the assignment of mentors to students wishing to work on MediaWiki core and extension projects.[124]During the year prior to November 2012, there were about two hundred developers who had committed changes to the MediaWiki core or extensions.[125]Major MediaWiki releases are generated approximately every six months by taking snapshots of the development branch, which is kept continuously in a runnable state;[126]minor releases, orpoint releases, are issued as needed to correctbugs (especially security problems).MediaWiki is developed on acontinuous integration development model, in which software changes are pushed live to Wikimedia sites on regular basis.[126]MediaWiki also has a publicbug tracker,phabricator.wikimedia.org, which runsPhabricator. The site is also used forfeature andenhancement requests.
When Wikipedia was launched in January 2001, it ran on an existingwiki software system,UseModWiki. UseModWiki is written in thePerl programming language, and stores all wiki pages in text (.txt) files. This software soon proved to be limiting, in both functionality and performance. In mid-2001,Magnus Manske—a developer and student at theUniversity of Cologne, as well as aWikipedia editor—began working on new software that would replace UseModWiki, specifically designed for use by Wikipedia. This software was written in thePHP scripting language, and stored all of its information in aMySQL database. The new software was largely developed by August 24, 2001, and a test wiki for it was established shortly thereafter.
The first full implementation of this software was the newMeta Wikipedia on November 9, 2001. There was a desire to have it implemented immediately on the English-language Wikipedia.[127] However, Manske was apprehensive about any potentialbugs harming the nascent website during the period of the final exams he had to complete immediately prior to Christmas;[128] this led to the launch on the English-language Wikipedia being delayed until January 25, 2002. The software was then, gradually, deployed 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 to arise again, and soon after, another rewrite of the software began; this time being done byLee Daniel Crocker, which became 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 with the added functionality of a widerscalability. The "phase III" software went live on Wikipedia in July 2002.
TheWikimedia Foundation was announced on June 20, 2003. In July, Wikipedia contributor Daniel Mayer suggested the name "MediaWiki" for the software, as a play on "Wikimedia".[129] The MediaWiki 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").[130] The first version of MediaWiki, 1.1, was released in December 2003.
MediaWiki logo until April 1, 2021
The oldproduct logo was created byErik Möller, using a flower photograph taken byFlorence Nibart-Devouard, and was originally submitted to the logo contest for a newWikipedia logo, held from July 20 to August 27, 2003.[131][132] The logo came in third place, and was chosen to represent MediaWiki rather than Wikipedia, with the second place logo being used for the Wikimedia Foundation.[133] The double square brackets ([[ ]]) symbolize thesyntax MediaWiki uses for creatinghyperlinks to other wiki pages; while thesunflower represents the diversity of content on Wikipedia, its constant growth, and the wilderness.[134]
The contest of designing a new logo was initiated on June 22, 2020, as the old logo was a bitmap image and had "high details", leading to problems when rendering at high and low resolutions, respectively. After two rounds of voting, the new and current MediaWiki logo designed bySerhio Magpie was selected on October 24, 2020, and officially adopted on April 1, 2021.[139]
MediaWiki's most famous use has been inWikipedia and, to a lesser degree, the Wikimedia Foundation's other projects.Fandom, awiki hosting service formerly known as Wikia, runs on MediaWiki. Other public wikis that run on MediaWiki includewikiHow andSNPedia.WikiLeaks began as a MediaWiki-based site, but is no longer a wiki.
Users of onlinecollaboration software are familiar with MediaWiki's functions and layout due to its noted use on Wikipedia. A 2006 overview of social software in academia observed that "Compared to other wikis, MediaWiki is also fairly aesthetically pleasing, though simple, and has an easily customized side menu andstylesheet."[144] However, in one assessment in 2006,Confluence was deemed to be a superior product due to its very usable API and ability to better support multiple wikis.[76]
A 2009 study at theUniversity of Hong Kong comparedTWiki to MediaWiki. The authors noted that TWiki has been considered as a collaborative tool for the development of educational papers and technical projects, whereas MediaWiki's most noted use is on 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 forknowledge management course group project, 15 out of 16 respondents expressed their preference for MediaWiki giving answers of great certainty, such as "of course", "for sure".[145] TWiki and MediaWiki both have flexible plug-in architecture.[146]
A 2009 study that compared students' experience with MediaWiki to that withGoogle Docs found that students gave the latter a much higher rating on user-friendly layout.[147]
A 2021 study conducted by theBrazilian Nuclear Engineering Institute compared a MediaWiki-basedknowledge management system against two others that were based onDSpace andOpen Journal Systems, respectively.[148] It highlighted ease of use as an advantage of the MediaWiki-based system, noting that because the Wikimedia Foundation had been developing MediaWiki for a site aimed at the general public (Wikipedia), "its user interface was designed to be more user-friendly from start, and has received large user feedback over a long time", in contrast to DSpace's and OJS's focus on niche audiences.[148]
^Reed, Sam (December 19, 2019)."Announcing MediaWiki 1.34.0".mediawiki-announce (Mailing list).Archived from the original on December 19, 2019. RetrievedDecember 19, 2019.
^ab"Message group statistics: MediaWiki core".translatewiki.net. August 20, 2023.Archived from the original on August 20, 2023. RetrievedAugust 20, 2023.488 languages (not including languages that are supported but have no translations)
^"Help:Navigation". MediaWiki. May 21, 2010.Archived from the original on May 27, 2010. RetrievedMay 30, 2010.
^Carl Challborn & Teresa Reimann (December 2004),Wiki products: a comparison(PDF), Athabasca University,archived(PDF) from the original on December 23, 2010, retrievedApril 23, 2010
^Newman, Aaron; Steinberg, Adam; Thomas, Jeremy (2008).Enterprise 2. 0 Implementation. McGraw-Hill Professional. p. 185.ISBN978-0-07-159160-7.
^H Zielke; W Boemke; M Kastrup; C Melzer (November 21, 2007),Operating Procedures in Clinical Practice(PDF), Royal College of Anaesthetists,archived(PDF) from the original on May 15, 2011, retrievedApril 25, 2010
^Masanori Arita & Kazuhiro Suwa (September 17, 2008), "Search extension transforms Wiki into a relational system: A case for flavonoid metabolite database",BioData Min,1 (1), BioData Mining: 7,doi:10.1186/1756-0381-1-7,PMC2556319,PMID18822113
^Hartung, Michael; et al. "A Platform for Collaborative Management of Semantic Grid Metadata".Intelligent distributed computing, systems and applications. p. 123.
^Ortega, Felipe; González-Barahona, Jesus M.; Robles, Gregorio (2007),The Top-Ten Wikipedias: A Quantitative Analysis Using WikiXRay,CiteSeerX10.1.1.107.1424
^ab"Wikipedia and MediaWiki".Presentation MediaWiki development (video). April 28, 2006.Archived from the original on April 14, 2011. RetrievedSeptember 23, 2009.
^"Events". Mediawiki.org.Archived from the original on December 27, 2018. RetrievedDecember 27, 2018.
^"Development policy". MediaWiki. July 19, 2013.Archived from the original on May 10, 2017. RetrievedAugust 4, 2013.
^"Summer of Code". MediaWiki. March 26, 2013.Archived from the original on May 10, 2017. RetrievedAugust 4, 2013.
^"Wikimedia". Open Hub.Archived from the original on September 14, 2017. RetrievedNovember 15, 2012. Approximate counts (not deduplicated) as of November 4, 2012: 139 for core, 155 for extensions supported by WMF, 190 and 42 for extensions only hosted on WMF's Git and SVN repositories respectively.
^ab"Version lifecycle". MediaWiki. September 5, 2018.Archived from the original on June 17, 2020. RetrievedOctober 21, 2018.
^Bartlett, Manning (November 14, 2001)."Magnus's new script..."Wikimedia Lists. Wikimedia Foundation.Archived from the original on October 2, 2019. RetrievedOctober 2, 2019.
^Manske, Magnus (November 14, 2001)."Magnus's new script..."Wikimedia Lists. Wikimedia Foundation.Archived from the original on October 2, 2019. RetrievedOctober 2, 2019.