MediaWiki
MediaWiki — это свободное программное обеспечение для создания вики-сайтов, написанное на языке PHP и использующее базу данных (обычно MySQL или MariaDB). Является наиболее известным и широко распространённым вики-движком в мире, в первую очередь благодаря тому, что на нём работает интернет-энциклопедия «Википедия» и другие проекты фонда «Викимедиа». MediaWiki распространяется на условиях GNU General Public License версии 2 или более поздней.
История
Разработка MediaWiki началась в 2001 году как ответ на потребности растущей «Википедии». Первоначально «Википедия» работала на движке UseModWiki, написанном на Perl. Однако по мере увеличения объёма контента и числа пользователей возникла необходимость в более функциональном, масштабируемом и специализированном решении.
Создание и первые версии
В 2001 году немецкий программист Магнус Манске начал разработку нового движка на PHP, который изначально назывался «Phase II». 25 января 2002 года новая версия движка была запущена на «Википедии». В июне 2002 года Ли Дэниел Крокер, сотрудник компании Bomis (которая на тот момент спонсировала «Википедию»), начал работу над «Phase III», который впоследствии и получил название MediaWiki. Название «MediaWiki» было придумано как игра слов: оно отсылает к слову «media» (средства массовой информации) и слову «wiki» (быстро, в контексте веб-технологий). Первый публичный релиз под названием MediaWiki (версия 1.1) состоялся 8 декабря 2003 года.
Развитие и ключевые вехи
С 2003 года разработка MediaWiki ведётся фондом «Викимедиа» (Wikimedia Foundation — некоммерческая организация, управляющая проектами «Википедия», «Викисклад», «Викисловарь» и другими). Основные этапы развития включают:
- 2004 год: Введение пространств имён (Namespace), что позволило отделить служебные страницы (обсуждения, шаблоны) от основного контента.
- 2005 год: Внедрение системы категоризации, которая стала основой для тематической навигации.
- 2006 год: Появление расширения «ParserFunctions», значительно расширившего возможности шаблонов и условной логики.
- 2008 год: Релиз версии 1.13 с поддержкой полнотекстового поиска на основе Lucene.
- 2010 год: Внедрение патча для поддержки загрузки файлов по URL и улучшенной обработки SVG.
- 2013 год: Начало перехода на визуальный редактор (VisualEditor), позволяющий редактировать страницы без знания вики-разметки.
- 2014–2018 годы: Активная работа над производительностью, масштабируемостью и безопасностью. Внедрение системы кэширования (ObjectCache) и улучшенной поддержки memcached.
- 2019–2024 годы: Переход на современные версии PHP и MySQL, улучшение поддержки мобильных устройств, внедрение Content Security Policy (CSP) для защиты от XSS-атак.
Архитектура и технические характеристики
MediaWiki написана на объектно-ориентированном PHP и следует архитектурному шаблону MVC (Model-View-Controller). Ключевые компоненты включают:
Ядро
Ядро (Core) содержит основные функции: обработку URL, авторизацию, работу с базой данных, парсинг вики-разметки, кэширование и интернационализацию. Оно реализовано в виде набора PHP-классов, организованных в подсистемы.
База данных
По умолчанию MediaWiki использует реляционную базу данных MySQL или MariaDB. Схема базы данных включает несколько десятков таблиц, основные из которых:
page— содержит информацию о страницах (заголовок, пространство имён, ID).revision— хранит все версии страниц (текст, автор, дата, комментарий).text— содержит сам текст ревизий (обычно в сжатом виде).user— информация о зарегистрированных пользователях.categorylinks— связи между страницами и категориями.pagelinks— ссылки между страницами.
Расширения
Расширения (Extensions) — это дополнительный код, который может изменять или расширять функциональность ядра. Они делятся на три основных типа:
- Хуки (Hooks): Позволяют перехватывать события в процессе работы движка (например, перед сохранением страницы, при отображении содержимого).
- Специальные страницы (Special pages): Служебные страницы с особым функционалом (например, страница загрузки файлов, список последних изменений).
- Теги (Tags): Новые элементы вики-разметки (например,
<math>для математических формул,<syntaxhighlight>для подсветки кода).
Скин
Скины (Skins) определяют внешний вид сайта. Они представляют собой набор шаблонов (на основе PHP-шаблонизатора Mustache) и CSS-стилей. Наиболее популярные скины: Vector (по умолчанию в «Википедии»), MonoBook (исторический), Timeless (адаптивный).
Кэширование
Для повышения производительности MediaWiki поддерживает несколько уровней кэширования:
- Кэш объектов (ObjectCache): Хранит результаты запросов к базе данных, данные пользовательских сессий и другие временные данные. Может использовать memcached, Redis или файловую систему.
- Кэш страниц (PageCache): Сохраняет готовый HTML-код страниц для быстрой выдачи. Используется Varnish или Squid.
- Кэш парсера (ParserCache): Хранит результат парсинга вики-разметки для каждой версии страницы.
Возможности
MediaWiki обладает широким набором функций, делающих её подходящей для создания крупных и сложных сайтов.
Вики-разметка
Основной способ редактирования — использование вики-разметки (wikitext). Она позволяет:
- Форматировать текст (жирный, курсив, заголовки).
- Создавать внутренние и внешние ссылки.
- Вставлять изображения, таблицы, списки.
- Использовать шаблоны для автоматического включения повторяющегося контента.
- Применять магические слова (Magic words) для отображения даты, времени, имени страницы.
Управление версиями
Каждое изменение страницы сохраняется как отдельная ревизия. Система позволяет:
- Просматривать историю изменений.
- Сравнивать две любые версии (diff).
- Откатывать изменения к любой предыдущей версии.
- Отмечать изменения как «патрулированные» (для модерации).
Права доступа
MediaWiki поддерживает гибкую систему прав пользователей. Администраторы могут назначать права для различных групп (участники, автоподтверждённые, бюрократы, администраторы, стюарды). Права включают:
- чтение/редактирование страниц.
- загрузку файлов.
- блокировку пользователей.
- удаление и восстановление страниц.
- защиту страниц от редактирования.
Интернационализация
MediaWiki полностью интернационализирована. Она поддерживает более 400 языков, включая языки с письмом справа налево (арабский, иврит) и CJK-языки (китайский, японский, корейский). Интерфейс может быть локализован на любой язык.
Поиск
Встроенная система поиска использует полнотекстовый индекс. В «Википедии» и других крупных проектах используется расширение CirrusSearch, основанное на Elasticsearch, которое обеспечивает быстрый и точный поиск с поддержкой синонимов, автодополнения и фильтрации по пространствам имён.
Применение
MediaWiki используется не только в проектах фонда «Викимедиа». На ней работают тысячи сайтов по всему миру, включая:
Корпоративные и внутренние вики
Многие компании и организации используют MediaWiki для создания внутренних баз знаний, документации и корпоративных порталов. Примеры: Intel, Novell, SAP, а также ряд государственных учреждений.
Образовательные проекты
Университеты и школы используют MediaWiki для организации учебных материалов, совместной работы студентов и создания энциклопедических проектов.
Сообщества и фанатские проекты
Фанатские вики по играм, фильмам, книгам и другим темам часто работают на MediaWiki. Крупнейшие из них размещаются на платформе Fandom (ранее Wikia), которая также использует MediaWiki с собственными расширениями.
Научные и энциклопедические проекты
Помимо «Википедии», на MediaWiki работают такие проекты, как «Викитека», «Викисловарь», «Викицитатник», а также специализированные энциклопедии (например, «Энциклопедия математики»).
Расширения
Экосистема MediaWiki насчитывает тысячи расширений. Наиболее известные и важные:
- ParserFunctions: Добавляет условные конструкции, циклы и математические операции в вики-разметку.
- VisualEditor: Визуальный редактор, позволяющий редактировать страницы без знания разметки.
- Cite: Реализует механизм сносок и примечаний.
- Math: Отображает математические формулы с использованием LaTeX.
- SyntaxHighlight: Подсветка синтаксиса для кода на различных языках программирования.
- CirrusSearch: Улучшенный поиск на основе Elasticsearch.
- AntiSpoof: Блокирует регистрацию пользователей с похожими именами (например, «l» и «1»).
- ConfirmEdit: Капча для защиты от спама.
Критика и ограничения
Несмотря на широкую популярность, MediaWiki имеет ряд критических замечаний:
- Сложность установки и настройки: Для установки требуется знание PHP, MySQL и веб-сервера. Конфигурация через файл
LocalSettings.phpможет быть сложной для новичков. - Высокие требования к ресурсам: Для крупных проектов (с миллионами страниц) требуется значительная серверная мощность, особенно для кэширования и поиска.
- Устаревшая архитектура: Некоторые критики отмечают, что архитектура MediaWiki, разработанная в начале 2000-х, не соответствует современным стандартам (например, отсутствие полноценного REST API в ядре, сложность тестирования).
- Сложность расширений: Разработка собственных расширений требует глубокого понимания внутреннего устройства движка и PHP.
- Проблемы с безопасностью: Хотя ядро MediaWiki регулярно обновляется, сторонние расширения могут содержать уязвимости. Известны случаи XSS-атак через устаревшие расширения.
Интересные факты
- Название «MediaWiki» является игрой слов: «media» (средства массовой информации) и «wiki» (быстро). Оно не имеет отношения к мультимедиа.
- Самая большая вики на MediaWiki — английская «Википедия», содержащая более 6,8 миллиона статей (на 2024 год).
- MediaWiki используется не только для текстовых проектов. На ней работают такие проекты, как «Викисклад» (хранилище медиафайлов) и «Викиданные» (структурированная база знаний).
- В 2015 году фонд «Викимедиа» начал разработку альтернативного движка — «WikiLambda», который предназначен для выполнения кода и создания функций, но он не заменяет MediaWiki.
Источники
- Документация MediaWiki (mediawiki.org)
- Официальный сайт MediaWiki (mediawiki.org)
- Книга «MediaWiki: A User's Guide» (Daniel J. Barrett)
- Статья «MediaWiki» в английской Википедии
- Исходный код MediaWiki на GitHub
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →