MediaWiki

From BitProjects
Revision as of 12:47, 30 June 2006 by Infobox>Eloquence (Key features)
Jump to navigation Jump to search

Template:Infobox Software2

MediaWiki is a wiki software package licensed under the GNU General Public License. It is written in PHP and requires a MySQL relational database management system. Historically, MediaWiki was developed to serve the needs of Wikipedia, a free wiki-based encyclopedia, but it has since become one of the most popular general wiki solutions. Today, it is used by all projects of the Wikimedia Foundation, all wikis hosted by Wikia, and many other popular and large wikis.[1] It has also been deployed by companies as an internal knowledge management solution, and as a content management system. Notably, Novell uses it to operate several of its high traffic websites, which are not editable by the general public.

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 has received significant attention by developers. The user interface has been fully or partially translated into more than 70 languages, and can be further customized by site administrators (the entire interface is editable through the wiki). Due to Wikipedia being one of the world's largest websites, achieving scalabiliy through multiple layers of caching and database replication has also been a major concern for developers. The needs of the Wikimedia Foundation projects continue to dominate the direction of the project, as its two leading developers are full-time employees of the organization.

History

The software was originally written for Wikipedia by the German University of Cologne student and developer Magnus Manske. Wikipedia had previously used a small wiki engine called UseModWiki written in Perl. On January 25, 2002, Wikipedia was switched to Manske's software to offer more functionality and build upon a scalable infrastructure (i.e. a MySQL database). However, the first implementation actually led to significant performance issues, and the software was substantially rewritten by Lee Daniel Crocker. Later on, Brion Vibber would take up the role of release manager and most active developer.

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," [2] 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 370 million results on the name in June 2006.

The product logo was created 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. 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. The double square brackets around the flower symbolize the syntax MediaWiki uses for creating hyperlinks to other wiki pages.

Release history

Version number Date Notable changes
1.1 December 8, 2003
  • 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.
  • Full release notes
1.2 March 24, 2004
  • Experimental web-based installer.
  • Image resizing and thumbnail generation.
  • Editing toolbar for learning wiki syntax.
  • User rights management within the wiki.
  • Full release notes
1.3 August 11, 2004
  • 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.
  • Full release notes
1.4 March 20, 2005
  • 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).
  • Full release notes
1.5 October 5, 2005
  • 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.
  • Full release notes
1.6 April 5, 2006
  • 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.
  • Full release notes

Key features

Editing interface of MediaWiki 1.7 as rendered in Firefox, showing the edit toolbar and some examples of wiki syntax.
File:Mediawiki-gallery.png
Images can be arranged in galleries, a feature that is used extensively for Wikimedia's media archive, Wikimedia Commons.
Users can configure a custom JavaScript that is executed on every pageview. This has led to small JavaScript tools that users can "install", such as navigation pop-ups, small previews of articles which are shown when hovering over link titles.
Semantic MediaWiki is one of the most powerful extensions to the MediaWiki core functionality. It provides the ability to add structured and searchable relations and attributes to wiki pages (cf. semantic web).

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, you would have to type a text like "DemoCracy" (or "DemocracyPoliticalSystem") to create a link to a page about democracy, links in MediaWiki are created by surrounding words with double square brackets, and any spaces between them are left intact. This change was logical for the purpose of creating an encyclopedia, where accuracy in titles is very important.

MediaWiki provides many features beyond hyperlinks for structuring content. One of the earliest feature developed for this purpose are 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. A list of the namespaces and their associated functionality is found below.

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.

Namespace name Namespace function
Special: Prefix to identify functionality provided by MediaWiki that is not regular page content. For instance, "Special:Recentchanges" shows the most recent activitiy in the wiki. Cannot contain regular wiki pages.
Media: Prefix for linking to any uploaded media file directly, i.e., without passing through a file description page. Cannot contain regular wiki pages.
No prefix The primary "article namespace" where content is stored if the page title does not have a namespace prefix.
User: Personal profiles of wiki users.
Project: Typically named after the project itself, e.g. "Wikipedia:". Policies, processes and project background.
Image: Description pages for images and other files. Associated with special functionality related to files.
MediaWiki: Editable user interface messages. Only editable by sysops.
Template: Reusable blocks of information, which can optionally be parametrized.
Help: Documentation. Has to be manually imported when setting up a new wiki.
Category: Descriptions for categories added to articles that can also be used to build category hierarchies (by categorizing the category page).
Talk:, User talk:, Project talk:, Image talk:, etc. Various discussion namespaces associated with the above primary namespaces. There are no talk namespaces for "Media:" or "Special:". User talk pages come with a special notification feature when new text is added to them.

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"). Finally, 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.[3]

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. Templates support parameters, so that parts of the text can be substituted for each specific use case.

Templates have found many different uses, such as:

  • Identifying problems with a Wikipedia article by putting a template (also called "tag" in this context) such as {{Disputed}} on 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. For this purpose, template substitution can be used: Instead of loading the template contents dynamically whenever the page is loaded, the contents of the template are inserted exactly once into the target page, similar to a copy and paste operation.

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.

On the level of editing, MediaWiki currently provides no native WYSIWYG support, though it does come with a graphical toolbar for simplifying the process of learning the wiki syntax. To make editing long pages such as comprehensive Wikipedia articles easier, MediaWiki supports editing only a small subsection of a page (as identified by its header). In addition, the wiki software comes with a simple interface to allow the transparent use of external editors for uploaded files and wiki pages.

MediaWiki also 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 hieroglyphics, is available in the form of extensions.

MediaWiki comes with several so-called "special pages" to analyze relations between pages and page content, while also providing importer and exporter utilities. Additional software to analyze page content, such as Erik Zachte's "Wikistats" toolset, is available. An experimental API for external access to the wiki is under development, and a variety of scripts can be used to create "bots" which automatically perform specific tasks on a MediaWiki installation.

If the feature is enabled, users can also customize their stylesheets and configure a 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, Wikipedia user "Lupin" created a custom JavaScript that shows previews of articles when the user hovers over links, and also provides shortcuts for common maintenance tasks.[4]

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, wikis like TWiki and MoinMoin provide more power by supporting advanced security mechanisms like Access Control Lists.

See also

Template:Portalpar

References

  1. Template:Cite web
  2. Template:Cite web
  3. Compare Erik Zachte's category trees generated from Wikipedia category information.
  4. Template:Cite web

als:MediaWiki ar:ميدياويكي bg:МедияУики zh-min-nan:MediaWiki ca:MediaWiki cs:MediaWiki de:MediaWiki et:MediaWiki es:MediaWiki eu:MediaWiki fr:MediaWiki ko:미디어위키 id:MediaWiki it:MediaWiki he:מדיה-ויקי csb:MediaWiki ku:MediaWiki lb:MediaWiki li:MediaWiki nl:MediaWiki ja:MediaWiki no:MediaWiki nn:MediaWiki oc:MediaWiki pl:MediaWiki pt:MediaWiki ru:MediaWiki simple:MediaWiki sk:MediaWiki sr:MediaWiki fi:MediaWiki sv:MediaWiki th:มีเดียวิกิ vi:MediaWiki zh:MediaWiki