MediaWiki is a web-based wiki
software application used by all projects of the Wikimedia
Foundation
, and many other wikis. 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.
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 version 2 or any later version while its documentation
is released under the
Creative
Commons BY-SA 3.0 license and partly in the
public domain, making it
free and open source software.
History
The
current software was originally written for Wikipedia by Lee
Daniel Crocker, based on the user interface design of , 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, the Chief
Technical Officer of the Wikimedia Foundation
, took 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", 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").The product logo was created by
Erik Möller 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
mid-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.The double square brackets around the
photo of a
sunflower symbolize the
syntax MediaWiki
uses for creating
hyperlinks to other
wiki pages.
Key features

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 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 300 languages, 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). === Rich
content === [[Image:MediaWiki's gallery
feature.png|thumb|300px|[[Image]]s 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
[[Plot (graphics)|plotting]] and [[musical score]]s 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. 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. Wikia, though,
has [[mw:Extension:FCKeditor (Official)|developed an extension]]
that uses a modified version of the popular [[FCKeditor]] to edit
wiki code graphically. MediaWiki also has a simple interface to
allow the transparent use of external editors for uploaded files
and wiki pages. === Organization === MediaWiki provides many
features beyond hyperlinks for structuring content. One of the
earliest features is ''[[namespace]]s''. 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 describe
[[The Terminator|the 1984 movie]] starring [[Arnold
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 page and each
namespace has an associated "
Talk:" page, 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.{{cite book |title=Enterprise 2. 0
Implementation |author=Newman, Aaron, Adam Steinberg, and Jeremy
Thomas |page=185 |publisher=McGraw-Hill Professional |year=2008
|isbn=9780071591607}}{{cite book |title=Multi-Stakeholder
Governance and the Internet Governance Forum |author=Malcolm,
Jeremy |pages=188, 280 |publisher=Terminus Press |year=2008
|isbn=9780980508406}} Namespaces can be viewed as [[file
folder|folders]] 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 talk page namespaces have odd numbers.{{cite
book|title=Wiki |author=Ebersbach, Anja, Markus Glaser, Richard
Heigl, and Gunter Dueck |pages=55, 80–82, 109, 120–121, 156
|publisher=Springer |year=2006 |isbn=9783540259954}} In addition to
namespaces, content can be ordered using ''subpages''. This simple
feature provides automatic [[breadcrumb (navigation)|breadcrumb]]s
from a page of the pattern
[[Page title/Subpage
title]] to the component before the slash (in this case,
"Page title"). === Customization ===
[[Image:Popup-preview.png|thumb|300px|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.{{cite web|
url =
http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups|
title = Wikipedia:Tools/Navigation popups | accessdate = | author =
"Lupin"}} Another example is ''[[mw:Extension:WikEd|wikEd]]'', a
full-featured MediaWiki-integrated text editor that provides syntax
highlighting and search and replace functions.{{cite web| url =
http://en.wikipedia.org/wiki/User:Cacycle/wikEd| title = wikEd |
accessdate = | author = "Cacycle"}} 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 that can be dynamically loaded inside another page whenever
that page is requested. The template is a special link in double
[[curly bracket]]s (for example "
{{Disputed|date=October
2008}}"), which calls the template (in this case located at
) to load in place of the template.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 link) 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
can lead to inconsistency when using templates, but may be useful
in certain cases, and in most cases requires less
server resources (the actual amount of
savings can vary depending on wiki configuration and the complexity
of the template).
Templates have found many different uses, such as:
- Creating complex table layouts that are used consistently
across multiple pages, and where only the content of the tables
gets inserted using template parameters.
- 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.
- Sending users standard messages when they are blocked from
editing, when their behavior is considered inappropriate, and so
on.
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 PHP 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.
Bugzilla
Bug in the MediaWiki software can
arise for a variety of reasons, including developmental oversight
and unforeseen changes as the result of new releases. These bugs
are reported to
Bugzilla.wikimedia.org, a
Bugzilla (alternatively known as
Mediazilla) bug tracker project for Wikimedia founded in
August 2004, where they are assigned a bug number and later
resolved by MediaWiki developers. Minor feature requests and
enhancements to the software are also requested on
Bugzilla.wikimedia.org.
Extensions
MediaWiki can be made more advanced and useful for various purposes
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, and
WikiTrust,
which implements a system for checking the author, origin, and
reliability of wiki text. Examples of extensions that could improve
a wiki are:
- Category suggestion extension
- Flash inclusion
- Ratings extension
- RSS feed 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:
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 extremely difficult to create a wiki where only
certain users can read and access some pages. Here, wiki engines
like
TWiki,
MoinMoin
and
WikkaWiki provide more flexibility by
supporting advanced security mechanisms like
access control lists.
Performance
Because it is used to run one of the highest-traffic sites on the
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 had about 750 wikis as of December
2007. However, MediaWiki comes with no built-in GUI to
manage such installations.
Limitations
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 (for example, 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.
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. But this
could conflict with other users' edits, so this feature may not
work for every site (especially high traffic ones).
See also
References
- e.g.: http://developer.novell.com/ ; http://en.opensuse.org/ ;
http://www.ifolder.com/
- See also: Translation statistics and Multilingual MediaWiki.
- Wikitext-L mailing list
- Markup spec project (mediawiki.org)
External links