1000/1000
Hot
Most Recent
MediaWiki extensions allow MediaWiki to be made more advanced and useful for various purposes. These extensions vary greatly in complexity. The Wikimedia Foundation operates a Git server where many extensions are hosted, and a directory of them can be found on the MediaWiki website. Some other sites also are known for development of—or support for—extensions are MediaWiki.org, which maintains an extension matrix; and Google Code. MediaWiki code review is itself facilitated through a Gerrit instance. Since version 1.16 MediaWiki also used the jQuery library.
A person with administrative FTP or file system access to the wiki directories can install extensions manually by downloading them to the appropriate directories and using a text editor to add require once lines to the LocalSettings.php file to cause the extension code to be included and evaluated. Some extensions also have configuration settings that are set and changed by editing this file.[1] There is also an extension, Configure, that allows other extensions to be more easily managed.[2] A better extension management platform is under development.[3]
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.[4] 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}}.[5] Schindler recounts the history of the ParserFunctions extension as follows:[6]
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 offer 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 was 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 function 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,[7] clamored for it to be enabled on their projects.[8] Much of its functionality was eventually integrated into the ParserFunctions extension,[9] 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."[10]
Another very popular extension is a citation extension that enable footnotes to be added to pages using inline references.[11] 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.[12] 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[13] and an extension that allows molecules to be rendered in 3D.[14]
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[15] and extensions for inclusion of Flash Videos,[16] YouTube videos,[17] and RSS feeds.[18] An extension to integrate with Facebook is forthcoming.[19] Metavid, 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.[20] 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.[21]
There are many spambots that search the Internet for MediaWiki installations and add linkspam to them, despite the fact that MediaWiki uses the nofollow attribute to discourage such attempts at search engine optimization.[22] Part of the problem is that third party republishers, such as mirrors, may not independently implement the nofollow tag on their websites, so marketers can still get PageRank benefit by inserting links into pages when those entries appear on third party websites.[23] Anti-spam extensions have been developed to combat the problem by introducing CAPTCHAs,[24] blacklisting certain URLs,[25] and allowing bulk deletion of pages recently added by a particular user.[26]
MediaWiki's weak query functionality, based mostly upon text searches, has inspired the creation of extensions adding complex new behavior to the wiki syntax. Systems which assist in analyzing relationships among editors, articles, revisions, topics, and words have attracted considerable attention from the academic community, both in terms of papers published and programming projects attempted.[27] They have been deemed necessary in order for the software to be suitable for applications such as some scientific databases.[28][29]
Example of extensions facilitating such analyses include Semantic MediaWiki, which provides the ability to add structured and searchable relations and attributes to wiki pages, and WikiTrust, which implements a system for checking the author, origin, and reliability of wiki text. SNPedia, NeuroLex, and DBpedia are projects along these lines. A Software Organization Platform, intended to support specific software engineering activities such as experience management, requirements engineering, or project management, was based upon Semantic MediaWiki.[30] Another wiki, SynBioSS Wiki, whose purpose is to enable the scientific community to store and retrieve information related to synthetic biology efforts, likewise sought to overcome MediaWiki's limitations in this regard by creating database fields for species ids, complex ids, etc.; new species and such could be added through a special page. A modified MediaWiki search engine was also part of that project.[31] SMW was itself extended by the introduction of content types, bidirectional relationships, controlled vocabularies, user-friendly user interfaces (including, for instance, autocompletion), and Web 2.0 techniques for visualization and interaction options.[32]
An extension called Woogle[33] was created in an attempt to combine the advantages of wikis in capturing new information in a lightweight and collaborative fashion and of enterprise search engines in locating existing documents and information in an organization.[34] Since by default, creating and changing tables is a manual process, with inconsistencies likely to occur among tables that display the same data in different ways, the DynaTable extension was created to provide wiki users with a convenient way to define data in a separate namespace, resulting in the data being stored in a database table, and have it be dynamically retrieved from the database at the time of the wiki page parsing or rendering, to pages that have the appropriate tag (and needed parameters). The extension also allows users to filter tables by selecting a subset of columns and rows to display.[35]
An extension-based system known as Annoki was developed to help attribute specific parts of articles to specific authors. If more than 50% of a sentence was added by a particular editor, that sentence was deemed to be "owned" by that editor. If less than 50% was added by an editor, that editor was deemed to be a proofreader of that sentence. The system also viewed a series of edits made by the same author as a continuous editing effort and defined a wiki page "release" as the last of these sequential revisions.[36]