Викии Вики
Регистрация
Advertisement
Викии Вики
1858
страниц
MediaWiki-2020-logo-horizontal

Логотип

MediaWiki — популярный бесплатный викидвижок с открытым исходным кодом, написанный на языке PHP. Первоначально движок был разработан для проектов Фонда Викимедиа, но впоследствии стал применяться на многих википроектах и викихостингах, в том числе и на Фэндоме.

История[]

History_of_MediaWiki,_April_2003_-_August_2015-0

History of MediaWiki, April 2003 - August 2015-0

Когда Википедия была запущена в январе 2001 года, она работала на движке UseModWiki, который был написан на Perl, хранил все страницы вики в текстовых файлах без какой-либо истории их изменения и к тому же поддерживал имена страниц только в виде CamelCase (слова без пробелов, разделенные заглавными буквами). Это программное обеспечение было ограничено как в функциональности, так и в производительности, но впоследствии оказало влияние на дальнейшее развитие MediaWiki, в частности язык разметки.

В середине 2001 года Магнус Манске, разработчик и студент университете Кёльна, являшийся также редактором Википедии, начал работать над новым программным обеспечением, что смогло бы заменить UseModWiki. Новый движок был написан на PHP и, в отличие от своего предшественника, использовал базы данных для хранения информации. У нового движка изначально не было названия, поэтому существовало множество вариантов его наименования: «PHP-скрипт», «PHP-вики», «программа Википедии» или даже «II фаза». Движок появился на английской Википедии в январе 2002 года и постепенно был развёрнут на всех языковых разделах Wikipedia того времени.

Несмотря на проделанную работу, растущий трафик, ограниченные серверные ресурсы и использование ресурсоёмких функций продолжили вызывать проблемы производительности. Поэтому в 2002 году Ли Даниэль Крокер переписал программу: новая версия по-прежнему была написана на PHP и имела такой же интерфейс, как и в прошлой версии, но лучше масштабировалась (то есть могла эффективнее использовать растирающиеся серверные ресурсы). На Википедии обновленный движок стал использоваться с июля 2002 года.

Mediawiki-edit

MediaWiki версии 1.9 на Википедии

Летом 2003 года был основан фонд Викимедиа, а в июле Даниэль Майер предложил назвать движок «MediaWiki», что образовывало игру слов с названием фонда (в оригинале: «Wikimedia Foundation»)[1].

Логотип продукта, созданный Эриком Мёллером с использованием фотографии цветка (автор — Флоранс Нибар-Девуар), первоначально являлся одним из проектов нового логотипа Википедии[2]. Он получил третье место на выборах, но стал символом MediaWiki[3]. Двойные квадратные скобки символизируют синтаксис движка, который использует их для создания внутренних ссылок, а подсолнечник представляет разнообразие контента на Википедии и постоянный рост проекта[4].

Позже Брайон Vibber, технический директор Фонда Викимедиа[5], взял на себя роль менеджера выпуска и наиболее активного разработчика[6].

Основными вехами в развитии MediaWiki являются: система категорий (2004); функции парсера (2006); расширение FlaggedRevisions (2008); система загрузки CSS и JavaScript контента — «ResourceLoader» (2011); визуальный редактор (2013).

Версия[]

Самая последняя выпущенная версия MediaWiki — 1.34 (от 19 декабря 2019 года); самая последняя LTS-версия (версия с более длительным периодом поддержки) — 1.31 (от 14 июля 2018 года) [7]. Согласно внутренней политике, крупные обновления производятся раз в шесть месяцев, а LTS-версии — раз в два года.

Начиная с 2012 года Фэндом использует движок версии 1.19[8], который тем не менее крайне сильно модифицирован под внутренние нужды. Обновления кода происходят ежедневно; ранее информация о них публиковалась раз в неделю на центральных вики, а применялись они по вторникам и четвергам. С 28 августа 2017 года принцип работы изменился: теперь информация публикуется ежедневно, обновления применяются каждый день[9].

В июне 2019 года было объявлено о предстоящем обновлении используемого ФЭНДОМОМ движка[10]. В 2020 был выпущен блог с подробностями перехода; сам переход ожидается в «ближайшее время»[11].

Лицензирование[]

MediaWiki является свободным программным обеспечением, распространяемым согласно лицензии GNU General Public License версии 2 или более поздней, а документация к движку распространяется на условиях лицензии CC-BY-SA 3.0, при этом часть документации передано в общественное достояние[12]. Последнее было сделано с целью разрешения правовых вопросов, связанных со справочными страницами википроектов, лицензии которых не совместимы с лицензиями Creative Commons.

Разработка[]

На данный момент у MediaWiki имеется более 800 настроек конфигурации, доступно более 2000 расширений[13][14].

MediaWiki имеет активное сообщество волонтёров, развивающих проект. Тем людям, которые внесли значительный вклад в развитие викидвижка, по их просьбе может предоставляться доступ к изменению репозиториев (хранилищ кода) Git/Gerrit и SVN. Помимо волонтёров, разработкой занимаются и оплачиваемые программисты, чья работа сосредаточена на проектах фонда Викимедии.

Фонд Викимедиа участвует в программе Google Summer of Code — инициативной программе компании Google, в рамках которой студенты ежегодно участвуют в разработке проектов с открытым исходным кодом[15]. MediaWiki имеет публичный багтрекер по адресу phabricator.wikimedia.org (ранее — bugzilla.wikimedia.org), который также используется для предложений по улучшению проекта.

На Фэндоме разработка практически полностью находится в руках оплачиваемых инженеров компании, хотя и существует небольшая группа волонтёров (впрочем, неизвестно, актина ли она сейчас). Инженеры Фэндома работают в отделах или проектах, где каждому отделу соответствует есть своя область — например, группа ADEN занимается вопросами рекламы. Несмотря на то что часть исходного кода публично доступна по адресу github.com/wikia, баг-трекер Фэндома приватен. Периодически проводятся внутренние форумы разработчиков — хакатоны[16].

Базы данных[]

См. также: mw:Manual:Database layout (англ.)
MediaWiki logging table

Внутренности таблицы, хранящей журналы вики

С MediaWiki совместимы различные системы управления базами данных, однако, поскольку Фонд Викимедиа использует MariaDB (аналог MySQL), именно она поддерживается в наиболее полном объёме. При этом MediaWiki работает только с реляционными (традиционными) базами данных: они состоят из множества таблиц, внутри которых находятся столбцы и строки с непосредственно самой информацией. Современные версии MediaWiki в чистом виде (без учёта расширений) содержат более пятидесяти таблиц, в том числе таблицы, хранящие сведения о страницах и их содержимом, категориях, о файлах, о пользователях, а также об их действиях (журналы) и т. д.[17][18] Расширения зачастую добавляют собственные дополнительный таблицы.

У каждой вики Фэндома имеется собственная база данных, название которой в большинстве случаев представляет собой объединение языкового кода и домена вики, — для Викии Вики, например, название будет ruwikies. Помимо них используется целый ряд баз данных, где хранится статистика, описания и прочая информация о вики.

Интересно, что MediaWiki даёт возможность делать определенные таблицы вики общими, при этом другие проекты получают возможность использовать определенные данные родительской вики. Например, можно сделать так, чтобы блокировки, накладываемые на одной, действовали и на всех вики.

Безопасность[]

См. также: mw:Manual:Security (англ.)

Поскольку MediaWiki является движком для таких популярных сайтов, как, например, Википедия, разработчики установили строгие стандарты безопасности как для самого ядра, так и для расширений к нему. Все запросы в базу данных осуществляются с помощью функции-обёртки, которая проверяет их на предмет возможных инъекций (внедрение зловредного кода). К HTML-формам добавляются псевдослучайные токены, что уменьшает шанс SCRF-атак (возможность выполнять действия от лица другого пользователя)[19][20].

На Фэндоме существуют особые инструменты, позволяющие инженерам быстро находить и устранять уязвимости. Высокопривелигированным участникам выдаётся дополнительный статус — restricted-login, — значительно повышающий безопасность учетной записи. В отличие от Википедии, на википроектах ФЭНДОМА не всегда присутствуют добросовестные участники, следящие за правками с потенциально опасным JavaScript-кодом, поэтому здесь используется уникальная система его проверки отдельными сотрудниками.

С июня 2018 года[21] весь хостинг использует HTTPS для защиты пользовательский данных и обеспечения конфиденциальности. Интересно, что для подключения HTTPS на всех сайтах ФЭНДОМ изменил доменные имена многих проектов — языковой домен был убран из начала адреса проекта в конец.

Производительность[]

См. также: «Викия» изнутри: просмотры страниц и The speed of thought (англ.)

Сам по себе викидвижок является достаточно медленным и тяжеловесным, поэтому как Фэндом, так и фонд Викимедиа используют сложную многоуровневую систему кэширования: она является краеугольным камнем производительности MediaWiki и позволяет сохранять данные (интервики-префиксы, файлы локализации, содержимое страниц и т. д.) таким образом, чтобы тратить меньше времени и использовать меньше ресурсов на их загрузку. Кроме того, MediaWiki позволяет использовать Lua для написания шаблонов — в некоторых ситуация это позволяет ускорить обработку страниц в 5 раз[22].

Разработчики же могут использовать профилирование для анализа производительности ядра, расширений и т. д.

Пространства имён[]

Одной из особенностей MediaWiki является система пространств имён. Она неоднократно менялась с течением времени, но сохранила свою основную функцию: разделение различных видов контента. Все пространства имён состоят из префикса, отделенного от названия страницы двоеточием (например, Участник:). Единственным исключением является основное пространство имён: своего префикса у него нет.

В то время как пространства имён разделяют содержимое по его типу, страницы с одинаковым типом содержимого разделяются категориями.

Служебные[]

Служебная — особое пространство имён MediaWiki. Размещённые в нём страницы не поддаются правке и предназначены для вывода статистических данных, журналирования определённых действий (блокировка, удаление, регистрация, загрузка файлов и т. д.), а также размещения викиинструментов.

Загрузка файлов[]

MediaWiki позволяет пользователям загружать на википроект файлы, для чего существует служебная страница Special:Upload. В отличие от многих других систем управления контентом (CMS), этот движок поддерживает работу и с такими нетипичными форматами файлов, как векторные изображения SVG), PDF и DjVu.

Сразу после загрузки новому файлу выделяется страница в пространстве имён Файл:, которая содержит введённую загружающим информацию (сведения о лицензировании, категории, текстовое описание и т. п.), если таковая была введена. Технически файл при этом помещается в собственную директорию на сервере, и одновременно с этим для него создаются миниатюры.

Впрочем, поддерживается не только локальная загрузка файлов: существует возможность использовать и другие медиарепозитории, самым популярным из которых является Wikimedia Commons — хранилище для более чем сорока миллионов свободно распространяемых файлов. Помимо этого, используя опцию общих таблиц в базе данных, файлы с одной вики можно делать доступными на другой.

На Фэндоме действует более сложная система хранения и обработки файлов: для создания миниатюр применяется специально написанная библиотека Vignette, доставку файлов пользователям осуществляет распределённая сетевая инфраструктура, а многие уже загруженные файлы впоследствии проходят постмодерацию на соответствие условиям использования.

Локализация[]

Интересная особенность викидвижка заключается в том, что практически все сообщения интерфейса доступны для просмотра и редактирования прямо на вики. Сообщение определяется уникальным ключом, которые в свою очередь определяются разработчиками. Достаточно часто для различных инструментов и расширений используются различные префиксы, добавляемые к ключу: одним из множества примеров можно назвать страницу MediaWiki:Abusefilter-accountreserved, где Abusefilter является префиксом расширения, а само сообщение (Abusefilter-accountreserved) — ключом.

Сообщения интерфейса могут включать в себя какие-либо параметры, а также такие волшебные слова, как, например, {{GRAMMAR:}} (позволяет переводить сообщения интерфейса с учётом грамматики и особенностей языка). Кроме того, с целью помощи переводчикам хорошей практикой считается добавление описаний сообщениям в файл с особым искусственным языком — qqq.

Локализация MediaWiki выполняется волонтёрами на translatewiki.net. Ранее эта вики предоставляла свои услуги и Фэндому, однако впоследствии хостинг отказался от них в пользу закрытой системы Crowdin. Из-за закрытости системы неизвестно, кто конкретно занимается переводами, но, по всей видимости, обычно участие принимают и сотрудники, и помощники конкретного языкового портала. Известен пример, когда перевод делался независимо от них, и в итоге получил весьма негативные отзывы от участников[23].

Скины[]

Темы оформления MediaWiki называются скинами. Скины отличаются дизайном, цветом и расположением элементов.

Каждый пользователь может изменить вид скина с помощью правки страницы User:{{{USERNAME}}}/{{{Skin}}}.css, а вид для всех просматривающих проект редактируется через сообщение MediaWiki:{{{Skin}}}.css.

На сайте MediaWiki представлено порядка 60 скинов[24] (по сост. на 29.07.2017), однако у разработчиков имеется возможность создавать собственные.

Скины Фэндома

Примечания[]

Advertisement