MediaWiki

From Wikipedia, the free encyclopedia

For the Mediawiki namespace on Wikipedia see- Wikipedia:MediaWiki namespace.
MediaWiki
MediaWiki logo
Developed by Wikimedia Foundation, Brion Vibber (release manager)
Initial release 25 January 2002
Stable release 1.12  (March 20, 2008 (2008-03-20); 85 days ago) [+/−]
Preview release SVN  (1.13alpha) [+/−]
Written in PHP
OS Cross-platform
Available in over 100 languages
Genre Wiki
License GNU General Public License
Website mediawiki.org (English)

MediaWiki is a web-based wiki software application used by all projects of the Wikimedia Foundation, all wikis hosted by Wikia, and many other wikis, including some of the largest and most popular ones.[1] Originally developed to serve the needs of the free content Wikipedia encyclopedia, today it has also been deployed by companies for internal knowledge management, and as a content management system. Notably, Novell uses it to operate several of its high traffic websites.[2]

MediaWiki is written in the PHP programming language, and can use either the MySQL or PostgreSQL relational database management system. MediaWiki is distributed under the terms of the GNU General Public License while its documentation is released under the GFDL and partly in the public domain, making it free and open source software.

Contents

[edit] History

The current software was originally written for Wikipedia by Lee Daniel Crocker, based on the user interface design of Magnus Manske, a developer and student of the University of Cologne. Wikipedia had originally used a small wiki engine called UseModWiki written in Perl. Wikipedia was later switched to Manske's PHP-based software to offer more functionality. Increasing usage caused load problems, leading Crocker to re-write the software with a more scalable MySQL database backend. Later, Brion Vibber would take up the role of release manager and most active developer.[3]

Since the release of the first version of Manske's script, the software had been given multiple nicknames representing the state of development—"the PHP script", "phase II", "phase III", "the new codebase"—but no product name. After the Wikimedia Foundation was announced on June 20, 2003, the name "MediaWiki" was coined by Wikipedia contributor Daniel Mayer as a play on "Wikimedia," [4] and 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"). Nevertheless, "MediaWiki" has become a recognizable brand, with a Google search yielding over 67 million results on the name in March 2008.

The product logo was created by Erik Moeller 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 summer 2003.[5] 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 and the first place logo for Wikipedia itself.[6] The double square brackets around the photo of a sunflower symbolize the syntax MediaWiki uses for creating hyperlinks to other wiki pages.

Colour Meaning
Red Old release; not supported
Yellow Old release; still supported
Green Current release
Blue Future release

[edit] Release history

This table contains the release history of MediaWiki. The newest version of the software runs at the Test Wikipedia, hosted at http://test.wikipedia.org/ and presently running on version 1.13alpha.[7]

Version number Date Links Notable changes
1.1 December 8, 2003 Full release notes
  • New wiki table syntax.
  • User-editable interface messages through "MediaWiki namespace".
  • XML-wrapped page source export with optional history.
  • "Magic words" – special variables and parser instructions.
1.2 March 24, 2004 Full release notes
  • Experimental web-based installer.
  • Image resizing and thumbnail generation.
  • Editing toolbar for learning wiki syntax.
  • User rights management within the wiki.
1.3 August 11, 2004 Full release notes
  • New, highly CSS-based default look and feel ("MonoBook" skin) and better web standards compliance.
  • Parametrized templates.
  • Category feature.
  • Automatic merging of edit conflicts when possible.
  • Improved installation.
1.4 March 20, 2005 Full release notes, Language support
  • User interface language can be changed by the user.
  • Significant performance improvements.
  • Support for compressing old revisions of articles to reduce storage needs.
  • Image gallery generation, list of recently uploaded images.
  • SVG rasterization support (requires external support tools).
1.5
(newest version supporting MySQL 3)
October 5, 2005 Full release notes, Language support
  • Major database redesign decoupling text storage from revision tracking, resulting in:
    • Significant performance boosts for some operations.
    • Permalink functionality for all revisions.
    • Support for storing bulk data outside the database.
  • Support for e-mail notification upon changes.
  • Page content must be encoded in UTF-8.
1.6
(newest version supporting PHP 4)
April 5, 2006 Full release notes, Language support
  • The account creation form has been separated from the user login form.
  • Page protection/unprotection uses a new, expanded form.
  • "Job queue" for background updates.
  • Improved tracking of template usage.
  • Tracking of external link usage for more systematic anti-spam measures.
  • Template parameters can have default values.
1.7 July 7, 2006 Full release notes, Language support
  • MediaWiki 1.7 requires PHP 5 (5.1 recommended). PHP 4 is no longer supported.
  • Deleted files can now be restored.
1.8 October 10, 2006 Full release notes, Language support
  • Full support for PostgreSQL (8.1 or better) database backend
  • Support for DjVu thumbnailing and multipage navigation
  • Various improvements to user blocking; blocks can be placed only on unregistered users using a particular IP address
  • Uploading files from publicly accessible URLs is possible if enabled
1.9 January 10, 2007 Full release notes, Language support
  • "Undo revision" feature
  • Various improvements to blocking and special page caching
  • Tables with sortable columns
  • Addition of an edit counter field to the user database
  • Revision size displayed on watchlists and recent changes
  • The names of Special: pages can now be localized, so links and URLs to them

are more legible in languages that aren't English.

1.10 May 9, 2007 Full release notes, Language support
  • "Cascading protection" feature
  • Improved tooltips and accesskey feature
  • Various improvements to blocking and special page caching
  • IPv6 support
1.11 September 10, 2007 Full release notes, Language support
  • $wgAddGroups and $wgRemoveGroups are added to allow finer control over usergroup assignment
  • AJAX-based page watching has been cleaned up and enabled by default
1.12 March 20, 2008 Full release notes, Language support
1.13 1.13 started as of February 2008 Full release notes, Language support
  • Introduced hidden category feature: __HIDDENCAT__ on a category page causes the category to be hidden on the article page.
  • Sysops can hide parts of single revisions, log events, and files

[edit] Key features

Editing interface of MediaWiki 1.7, showing the edit toolbar and some examples of wiki syntax.
Editing interface of MediaWiki 1.7, showing the edit toolbar and some examples of wiki syntax.

MediaWiki provides a rich core feature set and a mechanism to attach extensions to provide additional functionality.

Due to the strong emphasis on multilinguality 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 100 languages (see also translation statistics and Multilingual MediaWiki), and can be further customized by site administrators (the entire interface is editable through the wiki).

Because Wikipedia is one of the world's largest websites, achieving scalability through multiple layers of caching 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.

One of the earliest differences between MediaWiki (and its predecessor, UseModWiki) and other wiki engines was the use of "free links" instead of CamelCase. Where, in a typical wiki, text like "WorldWideWeb" would have to be typed to create a link to a page about the World Wide Web, links in MediaWiki 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 very important.

To make editing long pages such as comprehensive Wikipedia articles easier, MediaWiki allows the editing of a subsection of a page (as identified by its header).

[edit] Rich content

Images can be arranged in galleries, a feature that is used extensively for Wikimedia's media archive, Wikimedia Commons.
Images can be arranged in galleries, a feature that is used extensively for Wikimedia's media archive, Wikimedia Commons.

MediaWiki supports rich content generated through specialized syntax. For example, the software comes with support for rendering mathematical formulas using LaTeX and a special parser written in OCaml. Similar functionality for other content, ranging from graphical timelines over mathematical plotting and musical scores to Egyptian hieroglyphs, is available in the form of extensions and also aesthetic sense has improved considerably.

As the name MediaWiki suggests, the software has become ever 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 if the software is set up correctly. There is also support for Exif metadata. The use of MediaWiki to operate the Wikimedia Commons, one of the largest free content media archives, has driven the need for further functionality in this area.

MediaWiki currently provides no native WYSIWYG support, though it does come with a graphical toolbar for simplifying the process of learning the wiki syntax. It also has a simple interface to allow the transparent use of external editors for uploaded files and wiki pages.

[edit] Organization

MediaWiki provides many features beyond hyperlinks for structuring content. One of the earliest features is namespaces. One problem for Wikipedia had long been the separation of encyclopedic content from discussions surrounding it, as well as personal pages about encyclopedia editors. Namespaces are prefixes before a page title (like "User:" or "Talk:") which allow a page to exist under multiple names, but serving different purposes depending on their prefix. For instance, a page "[[The Terminator]]" could describe the 1984 movie starring Arnold Schwarzenegger, while a page "[[User:The Terminator]]" could be a profile describing a user who chooses this name as a pseudonym. More commonly, each page has an associated "Talk:" page which can be used to discuss its contents.

Namespaces can be viewed as folders which separate different basic types of information or functionality. While new namespaces can be added, the number of namespaces in a wiki is typically relatively low.

In addition to namespaces, pages can be structured using subpages. This simple feature provides automatic backlinks from a page of the pattern [[Page title/Subpage title]] to the component before the slash (in this case, "Page title").

MediaWiki supports user-created categories. These are similar to tags used in many web applications, but hierarchical and descriptive. In large wikis like Wikipedia, very complex hierarchies have grown using this system without any central planning.[8]

[edit] Customization

Users can configure custom JavaScript that is executed on every pageview. This has led to JavaScript tools that users can "install", the "navigation popup" tool shown here displays a small preview of an article when hovering over a link title.
Users can configure custom JavaScript that is executed on every pageview. This has led to JavaScript tools that users can "install", the "navigation popup" 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 configure client-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, 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.[9] Another example is wikEd, a full-featured MediaWiki-integrated text editor that provides syntax highlighting and search and replace functions. [10]

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. 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 which can be dynamically loaded inside another page whenever that page is requested. The template "tag" is simply a special link in double curly brackets (for example "{{disputed}}") which calls the template (in this case located at Template:Disputed) to load where the tag is. Templates support parameters, 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 tag) 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 limits the consistency of using templates, but may be useful in certain cases, and is (perhaps) less demanding on the server.

Templates have found many different uses, such as:

  • Identifying problems with a Wikipedia article by putting a template in the article. This template will then output a graphical box stating that the article is disputed, and also categorize it so that articles of this nature can be located.
  • Creating complex table layouts which are used consistently across multiple pages, and where only the content of the tables gets inserted using template parameters.
  • Sending users standard messages when they are blocked from editing, when their behavior is considered inappropriate, and so on.
The Semantic MediaWiki extension
The Semantic MediaWiki extension

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.

The MediaWiki codebase contains various "hooks" using callback functions to add additional code in an extensible way. This allows developers to write extensions without modifying 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 are required.

[edit] Extensions

MediaWiki is getting more and more advanced and useful for other targets through its extensions. Many of the available extensions are simple scripts to allow embedding content such as Adobe Flash files or HTML forms. Others add complex new behavior to the wiki syntax, such as Semantic MediaWiki which provides the ability to add structured and searchable relations and attributes to wiki pages (cf. semantic web). Examples of extensions that could improve a wiki are:

  • Ratings extension
  • Category suggestion extension
  • RSS feed inclusion
  • Flash inclusion
  • YouTube inclusion

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 are known for development of - or support for extensions

[edit] Access and groups

While MediaWiki comes with a basic set of features related to restricting access and defining user groups, page access control does not tend to be given high priority in development. For instance, it is not possible to define the access permissions to pages on a per-namespace basis. Here, wiki engines like TWiki, MoinMoin and WikkaWiki provide more flexibility by supporting advanced security mechanisms like Access Control Lists.

[edit] Performance

Because it is used to run one of the highest traffic sites on the World Wide Web, Wikipedia, MediaWiki performance and scalability have been highly optimized. MediaWiki supports Squid caches, 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.

The software is suitable for the operation of large scale wiki farms such as Wikimedia, which has about 750 wikis as of December 2007. However, MediaWiki comes with no built-in functionality to manage such installations.

[edit] Limitations

Aside from the aforementioned lack of WYSIWYG features, user documentation is found online only (there is no printed manual). The installation and usage of the MediaWiki software is not intuitive for inexperienced computer users.

The parser serves as the de facto standard for the MediaWiki syntax as no formal syntax has been defined. Since the syntax has no formal definition (e.g., in Extended Backus–Naur form (EBNF)) there is an inherent difficulty in creating a WYSIWYG editor or complete porting of the syntax to another language. Work is in progress to formalise the grammar in ANTLR.[11] [12]

Furthermore, there is no offline version of MediaWiki, which would enable users to update pages on their client offline, and then have those pages automatically transferred to the server when re-connected, in a similar way to the client-server operation of Lotus Notes. An offline MediaWiki client could also help users with the back-up of important pages.

[edit] See also

[edit] References

  1. ^ WikiStats by S23 - List of largest wikis.
  2. ^ e.g.: http://developer.novell.com/ ; http://en.opensuse.org/ ; http://www.ifolder.com/
  3. ^ MediaWiki history. MediaWiki website. Retrieved on 2007-07-19.
  4. ^ Mayer, Daniel. Phase IV, Wikibooks.org/.com and WikimediaFoundation.org/.com (was Wikis and uniformity). Wikipedia-L mailing list archives.
  5. ^ Wikimedia contributors (2007-01-10). International logo contest/results. Meta-wiki. Wikimedia Foundation. Retrieved on 2007-03-14.
  6. ^ Wikimedia contributors (2007-01-17). Historical/Logo history. Meta-wiki. Wikimedia Foundation. Retrieved on 2007-03-14.
  7. ^ Test Wikipedia's About page
  8. ^ Compare Erik Zachte's category trees generated from Wikipedia category information.
  9. ^ "Lupin". Wikipedia:Tools/Navigation popups.
  10. ^ "Cacycle". wikEd.
  11. ^ Wikitext-L mailing list
  12. ^ Markup spec project (mediawiki.org)

[edit] External links