MediaWiki extension

From Wikipedia, the free encyclopedia
Jump to: navigation, search

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;[1] and Google Code.[2] MediaWiki code review is itself facilitated through a Gerrit instance. Since version 1.16 MediaWiki also used the jQuery library.[3]

Usage[edit]

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.[4] There is also an extension, Configure, that allows other extensions to be more easily managed.[5] A better extension management platform is under development.[6]

Kinds of extensions[edit]

Parser functions[edit]

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.[7] 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}}.[8] Schindler recounts the history of the ParserFunctions extension as follows:[9]

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,[10] clamored for it to be enabled on their projects.[11] Much of its functionality was eventually integrated into the ParserFunctions extension,[12] 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."[13]

Academic and encyclopedia-related data display[edit]

Another very popular extension is a citation extension that enable footnotes to be added to pages using inline references.[14] 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.[15] 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[16] and an extension that allows molecules to be rendered in 3D.[17]

Integration[edit]

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[18] and extensions for inclusion of Flash Videos,[19] YouTube videos,[20] and RSS feeds.[21] An extension to integrate with Facebook is forthcoming.[22] 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.[23] 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.[24]

Combating spam[edit]

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.[25] 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.[26] Anti-spam extensions have been developed to combat the problem by introducing CAPTCHAs,[27] blacklisting certain URLs,[28] and allowing bulk deletion of pages recently added by a particular user.[29]

Searches, queries and data processing and aggregation[edit]

A form to edit a page, using the Semantic Forms extension, which in turn relies on Semantic MediaWiki

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[30] and programming projects attempted.[31] They have been deemed necessary in order for the software to be suitable for applications such as some scientific databases.[32][33]

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.[34] 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.[35] 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.[36]

An extension called Woogle[37] 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.[38] 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.[39]

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.[40]

References[edit]

  1. ^ "Extension Matrix". MediaWiki. Retrieved 2010-05-30. 
  2. ^ MediaWiki Extensions, Google Code
  3. ^ jQuery on MediaWiki
  4. ^ http://www.mediawiki.org/wiki/Manual:Extensions#Installing_an_extension
  5. ^ http://www.mediawiki.org/wiki/Extension:Configure
  6. ^ http://www.mediawiki.org/wiki/Deployment
  7. ^ "Extension:ParserFunctions". MediaWiki. 2009-12-25. Retrieved 2010-05-30. 
  8. ^ "Wikipedia:Miscellany for deletion/Template:Qif – Wikipedia, the free encyclopedia". En.wikipedia.org. Retrieved 2010-05-30. 
  9. ^ M Schindler, D Vrandecic (2009), Introducing new features to Wikipedia, Proceedings of WebSci 
  10. ^ "Category:String manipulation templates – Wikipedia, the free encyclopedia". En.wikipedia.org. 2010-05-15. Retrieved 2010-05-30. 
  11. ^ https://bugzilla.wikimedia.org/show_bug.cgi?id=6455
  12. ^ "Extension:StringFunctions". MediaWiki. Retrieved 2010-05-30. 
  13. ^ "r51497 – Code Review". MediaWiki. Retrieved 2010-05-30. 
  14. ^ "Extension:Cite". MediaWiki. 2010-05-03. Retrieved 2010-05-30. 
  15. ^ Luther, Kurt; Flaschen, Matthew; Forte, Andrea; Jordan, Christopher; Bruckman, Amy (2009), ProveIt: a new tool for supporting citation in MediaWiki, ACM 
  16. ^ "Category:Math extensions". MediaWiki. 2009-12-26. Retrieved 2010-05-30. 
  17. ^ Marieke Guy (January 2007), Wikido: Exploiting the Potential of Wikis (50), Ariadne 
  18. ^ "Extension:CategorySuggest". MediaWiki. Retrieved 2010-05-30. 
  19. ^ "Category:Flash Video extensions". MediaWiki. Retrieved 2010-05-30. 
  20. ^ "Category:YouTube extensions". MediaWiki. 2008-09-16. Retrieved 2010-05-30. 
  21. ^ "Category:RSS extensions". MediaWiki. Retrieved 2010-05-30. 
  22. ^ "Extension:FBConnect". MediaWiki. Retrieved 2010-05-30. 
  23. ^ M Dale, A Stern, M Deckert, W Sack, System demonstration: Metavid.org: a social website and open archive of congressional video, Proceedings of the 10th Annual International Conference on Digital Government Research: Social Networks: Making Connections between Citizens, Data and Government, pp. 309–310, ISBN 978-1-60558-535-2 
  24. ^ Lecture Notes in Business Information Processing 3, Enterprise Information Systems, February 8, 2008, ISSN 1865-1348 
  25. ^ "Wiki spam – Meta". Meta.wikimedia.org. Retrieved 2010-05-30. 
  26. ^ Goldman, Eric, Wikipedia's Labor Squeeze and its Consequences 8, Journal on Telecommunications and High Technology Law 
  27. ^ "Extension:ConfirmEdit". MediaWiki. 2010-05-05. Retrieved 2010-05-30. 
  28. ^ "Extension:SpamBlacklist". MediaWiki. 2010-03-24. Retrieved 2010-05-30. 
  29. ^ "Extension:Nuke". MediaWiki. 2010-05-19. Retrieved 2010-05-30. 
  30. ^ http://www.google.com/search?q=mediawiki&hl=en&sa=N&tab=sw
  31. ^ "Summer of Code 2010". MediaWiki. Retrieved 2010-05-30. 
  32. ^ Masanori Arita and Kazuhiro Suwa (September 17, 2008), Search extension transforms Wiki into a relational system: A case for flavonoid metabolite database, BioData Mining 
  33. ^ Finn Årup Nielsen (August 11, 2009), Lost in localization: A solution with neuroinformatics 2.0? 48 (1), NeuroImage, doi:10.1016/j.neuroimage.2009.05.073 
  34. ^ Eric Ras, Jörg Rech, Sebastian Weber (1 August 2008), Collaborative Authoring of Learning Elements for Adaptive Learning Spaces, Fifth International Conference on Adaptive Hypermedia and Adaptive Web-Based Systems 
  35. ^ Emma Weeding, Jason Houle, Ben Swiniarski, Patrick Smadbeck, Kristen Lindblad, Katherine Volzing, Poonam Srivastava, Vassilios Sotiropoulos, Kostas Biliouris, and Yiannis Kaznessis (2009), BBF RFC##: SynBioSS Wiki: A Repository of BioBrick Models 
  36. ^ Hartung, Michael et al. "A Platform for Collaborative Management of Semantic Grid Metadata". Intelligent distributed computing, systems and applications. p. 123. 
  37. ^ "Extension:Woogle4MediaWiki". MediaWiki. Retrieved 2010-05-30. 
  38. ^ Hans-Jörg Happel (2009), Woogle – On Why and How to Marry Wikis with Enterprise Search 
  39. ^ Arnold, Carrie (2009), DynaTable: a Wiki extension for structured data, ISBN 978-1-60558-730-1 
  40. ^ Tansey, Brendan (2010), Annoki: A MediaWiki-based Collaboration Platform, ISBN 978-1-60558-975-6