MediaWiki — это бесплатное вики-программное обеспечение с открытым исходным кодом , первоначально разработанное Магнусом Манске для использования в Википедии 25 января 2002 года и дополнительно улучшенное Ли Дэниэлом Крокером , [5] [6] , после чего оно было координировано Фондом Викимедиа . Он поддерживает несколько веб-сайтов вики-хостинга в Интернете, а также большинство веб-сайтов, размещенных Фондом, включая Wikipedia, Wiktionary , Wikimedia Commons , Wikiquote , Meta-Wiki и Wikidata , которые определяют большую часть установленных требований к программному обеспечению. [7] MediaWiki написана на языке программирования PHP и сохраняет весь текстовый контент в базе данных . Программное обеспечение оптимизировано для эффективной работы с большими проектами, которые могут иметь терабайты контента и сотни тысяч просмотров в секунду. [7] [8] Поскольку Википедия является одним из крупнейших и наиболее посещаемых веб-сайтов в мире, достижение масштабируемости за счет нескольких уровней кэширования и репликации базы данных было серьезной проблемой для разработчиков. Еще одним важным аспектом MediaWiki является его интернационализация; его интерфейс доступен более чем на 400 языках. [9] Программное обеспечение имеет более 1000 настроек конфигурации [10] и более 1800 расширений , позволяющих добавлять или изменять различные функции. [11] Помимо использования на сайтах Викимедиа, MediaWiki использовалась в качестве системы управления знаниями и контентом на таких веб-сайтах, как Fandom , wikiHow , а также на крупных внутренних установках, таких как Intellipedia и Diplopedia .
MediaWiki бесплатна, имеет открытый исходный код и распространяется на условиях Стандартной общественной лицензии GNU версии 2 или любой более поздней версии. Его документация, расположенная на официальном сайте www.mediawiki.org, выпущена под лицензией Creative Commons BY-SA 4.0 и частично находится в свободном доступе . [12] В частности, руководства и другой контент на MediaWiki.org распространяется по лицензии Creative Commons , а набор справочных страниц, предназначенных для свободного копирования в новые установки вики и/или распространения вместе с программным обеспечением MediaWiki, является общественным достоянием. Это было сделано для устранения юридических проблем, возникающих из-за импорта страниц справки в вики с лицензиями, несовместимыми с лицензией Creative Commons. [13] Развитие MediaWiki в целом благоприятствовало использованию медиаформатов с открытым исходным кодом . [14]
MediaWiki имеет активное сообщество волонтеров, занимающихся разработкой и обслуживанием. Пользователям, которые внесли значимый вклад в проект, отправив исправления , обычно по запросу предоставляется доступ для фиксации изменений в репозитории Git / Gerrit проекта . [15] Есть также оплачиваемые программисты, которые в первую очередь разрабатывают проекты для Фонда Викимедиа . Разработчики MediaWiki участвуют в Google Summer of Code, помогая назначать наставников студентам, желающим работать над основными и дополнительными проектами MediaWiki. [16] В течение года до ноября 2012 года около двухсот разработчиков внесли изменения в ядро или расширения MediaWiki. [17] Основные выпуски MediaWiki создаются примерно каждые шесть месяцев путем создания снимков ветки разработки, которая постоянно поддерживается в работоспособном состоянии; [18] минорные выпуски , или точечные выпуски , выпускаются по мере необходимости для исправления ошибок (особенно проблем безопасности). MediaWiki разрабатывается по модели непрерывной интеграции , при которой изменения программного обеспечения регулярно передаются на сайты Wikimedia. [18] В MediaWiki также есть публичный трекер ошибок phabricator.wikimedia.org , на котором работает Phabricator . Сайт также используется для запросов на добавление функций и улучшений .
Когда Википедия была запущена в январе 2001 года, она работала на существующей программной системе UseModWiki . UseModWiki написан на языке программирования Perl и хранит все вики-страницы в текстовых файлах ( .txt ). Это программное обеспечение вскоре оказалось ограниченным как по функциональности, так и по производительности. В середине 2001 года Магнус Манске — разработчик и студент Кёльнского университета , а также редактор Википедии — начал работу над новым программным обеспечением, которое заменит UseModWiki, специально разработанное для использования Википедией. Это программное обеспечение было написано на языке сценариев PHP и хранило всю свою информацию в базе данных механизма MySQL . Новое программное обеспечение было в основном разработано к 24 августа 2001 года, и вскоре после этого была создана тестовая вики-страница для него.
Первой полной реализацией этого программного обеспечения стала новая Мета Википедия 9 ноября 2001 года. Было желание немедленно реализовать ее в англоязычной Википедии. [19] Однако Манске опасался любых потенциальных ошибок, которые могут нанести вред зарождающемуся веб-сайту в период выпускных экзаменов, которые он должен был сдать непосредственно перед Рождеством; [20] Это привело к тому, что запуск англоязычной Википедии был отложен до 25 января 2002 года. Затем программное обеспечение постепенно было развернуто на всех языковых сайтах Википедии того времени. Это программное обеспечение называлось «скриптом PHP» и «фазой II» с названием «фаза I», задним числом присвоенным использованию UseModWiki.
Увеличение использования вскоре снова привело к возникновению проблем с загрузкой, и вскоре после этого началось еще одно переписывание программного обеспечения; на этот раз это сделал Ли Дэниел Крокер , который стал известен как «фаза III». Это новое программное обеспечение также было написано на PHP с серверной частью MySQL и сохранило базовый интерфейс программного обеспечения фазы II, но с добавленной функциональностью более широкой масштабируемости . Программное обеспечение «фазы III» появилось в Википедии в июле 2002 года.
20 июня 2003 года было объявлено о создании Фонда Викимедиа . В июле участник Википедии Дэниел Майер предложил для программного обеспечения название «MediaWiki», как игру на «Викимедиа». [21] Название MediaWiki вводилось постепенно, начиная с августа 2003 года. Это имя часто вызывало путаницу из-за его (намеренного) сходства с названием «Викимедиа» (которое само по себе похоже на «Википедия»). [22]
Старый логотип продукта был создан Эриком Мёллером с использованием фотографии цветка, сделанной Флоренс Нибар-Девуар , и первоначально был представлен на конкурс логотипов для нового логотипа Википедии, проходивший с 20 июля по 27 августа 2003 года . ] Логотип занял третье место и был выбран для обозначения MediaWiki, а не Википедии, а на втором месте был логотип Wikimedia Foundation. [25] Двойные квадратные скобки ( [[ ]] ) символизируют синтаксис , который MediaWiki использует для создания гиперссылок на другие страницы вики; в то время как подсолнух символизирует разнообразие контента Википедии, ее постоянный рост и дикую природу. [26]
Позже,Брайон Виббер , главный технический директор Wikimedia Foundation , [27] взял на себя роль релиз-менеджера и самого активного разработчика . [28] [29]
Основные вехи в развитии MediaWiki включали: систему категоризации (2004 г.); функции парсера (2006); Помеченные редакции (2008 г.); [30] ResourceLoader , система доставки CSS и JavaScript (2011 г.); [31] и VisualEditor , платформа редактирования «что видишь, то и получаешь» ( WYSIWYG ) (2013). [32]
Конкурс на разработку нового логотипа был инициирован 22 июня 2020 года, поскольку старый логотип представлял собой растровое изображение и имел «высокую детализацию», что приводило к проблемам при рендеринге в высоком и низком разрешении соответственно. После двух раундов голосования новый и текущий логотип MediaWiki, разработанный Серхио Магпи, был выбран 24 октября 2020 г. и официально принят 1 апреля 2021 г. [33]
Первая версия MediaWiki, 1.1, была выпущена в декабре 2003 года.
Наиболее известное использование MediaWiki приходится на Википедию и, в меньшей степени, на другие проекты Фонда Викимедиа. Fandom , служба вики-хостинга, ранее известная как Wikia, работает на MediaWiki. Другие общедоступные вики, работающие на MediaWiki, включают wikiHow и SNPedia . WikiLeaks начинался как сайт на базе MediaWiki, но больше не является вики.
На MediaWiki работает ряд альтернативных Вики-энциклопедий, включая Citizendium , Metapedia , Scholarpedia и Conservapedia . MediaWiki также используется внутри компании большим количеством компаний, включая Novell и Intel . [34] [35]
Известные варианты использования MediaWiki в правительстве включают Intellipedia , используемую разведывательным сообществом США , Diplopedia , используемую Государственным департаментом США , и milWiki, часть milSuite , используемую Министерством обороны США . Учреждения Организации Объединенных Наций, такие как Программа развития Организации Объединенных Наций и МУНИУЖ , решили реализовать свои вики с помощью MediaWiki, потому что «это программное обеспечение запускает Википедию и, следовательно, гарантированно будет тщательно протестировано, будет продолжать развиваться и в будущем, и будущие специалисты по этим вики будут с большей вероятностью иметь доступ к MediaWiki, чем к любому другому программному обеспечению вики». [36]
Фонд свободного программного обеспечения использует MediaWiki для реализации сайта LibrePlanet . [37]
MediaWiki предоставляет богатый набор основных функций и механизм подключения расширений для обеспечения дополнительных функций.
Из-за сильного акцента на многоязычие в проектах Викимедиа, интернационализация и локализация получили значительное внимание разработчиков. Пользовательский интерфейс полностью или частично переведен на более чем 400 языков на сайте Translationwiki.net [9] и может быть дополнительно настроен администраторами сайта (весь интерфейс можно редактировать через вики).
Несколько расширений, в первую очередь те, которые собраны в пакете языковых расширений MediaWiki, предназначены для дальнейшего повышения многоязычности и интернационализации MediaWiki.
Для установки MediaWiki требуется, чтобы у пользователя были права администратора на сервере, на котором работает как PHP, так и база данных SQL совместимого типа. Некоторые пользователи считают, что настройка виртуального хоста полезна, если большая часть сайта работает под управлением платформы (например, Zope или Ruby on Rails ), которая в значительной степени несовместима с MediaWiki. [38] Облачный хостинг может исключить необходимость развертывания нового сервера. [39]
Доступ к установочному PHP-скрипту осуществляется через веб-браузер для инициализации настроек вики. Он запрашивает у пользователя минимальный набор необходимых параметров, оставляя дальнейшие изменения, такие как включение загрузки, [40] добавление логотипа сайта, [41] и установка расширений, которые необходимо внести путем изменения параметров конфигурации, содержащихся в файле с именем LocalSettings.php
. [42] Некоторые аспекты MediaWiki можно настроить с помощью специальных страниц или путем редактирования определенных страниц; например, фильтры злоупотреблений можно настроить на специальной странице [43] , а некоторые гаджеты можно добавить, создав страницы JavaScript в пространстве имен MediaWiki. [44] Сообщество MediaWiki публикует подробное руководство по установке. [45]
Одним из самых ранних различий между MediaWiki (и его предшественником UseModWiki ) и другими движками вики было использование « свободных ссылок » вместо CamelCase . Когда был создан MediaWiki, для вики было типично требовать текст типа «WorldWideWeb» для создания ссылки на страницу о Всемирной паутине ; ссылки в MediaWiki, с другой стороны, создаются путем заключения слов в двойные квадратные скобки, при этом любые пробелы между ними остаются нетронутыми, например [[World Wide Web]]
. Это изменение было логичным с целью создания энциклопедии, где важна точность названий.
MediaWiki использует расширяемую [46] легкую вики-разметку , разработанную так, чтобы ее было легче использовать и изучать, чем HTML . Существуют инструменты для преобразования контента, такого как таблицы, между разметкой MediaWiki и HTML. [47] Были предприняты попытки создать спецификацию разметки MediaWiki, но, похоже, был достигнут консенсус, что Wikicode требует контекстно-зависимых грамматических правил. [48] [49] Следующее параллельное сравнение иллюстрирует различия между вики-разметкой и HTML:
(Цитата из « Приключений Алисы в стране чудес » Льюиса Кэрролла )
Инструменты редактирования страниц MediaWiki по умолчанию были описаны как довольно сложные в освоении. [50] Опрос студентов, которым было поручено использовать вики на базе MediaWiki, показал, что, когда им задавали открытый вопрос об основных проблемах вики, 24% ссылались на технические проблемы с форматированием, например: «Не мог понять, как получить изображение. Не могу понять, как показать ссылку словами, вставляется число». [51]
Чтобы упростить редактирование длинных страниц, MediaWiki позволяет редактировать подраздел страницы (как указано в ее заголовке). Зарегистрированный пользователь также может указать, является ли изменение незначительным. Исправление орфографии, грамматики или пунктуации является примером незначительного редактирования, тогда как добавление абзацев нового текста является примером значительного редактирования.
Иногда, пока один пользователь редактирует, второй пользователь сохраняет изменения в той же части страницы. Затем, когда первый пользователь пытается сохранить страницу, возникает конфликт редактирования . Затем второму пользователю предоставляется возможность объединить свой контент со страницей в том виде, в котором он существует после сохранения страницы первым пользователем.
Пользовательский интерфейс MediaWiki локализован на множество разных языков. Также можно установить язык самого вики-контента, который будет отправляться в HTTP-заголовке «Content-Language» и HTML-атрибуте «lang» .
MediaWiki имеет расширяемый веб-API ( интерфейс прикладного программирования ), который обеспечивает прямой высокоуровневый доступ к данным, содержащимся в базах данных MediaWiki. Клиентские программы могут использовать API для входа в систему, получения данных и публикации изменений. API поддерживает тонкие веб-клиенты JavaScript и приложения для конечных пользователей (например, инструменты для борьбы с вандализмом). Доступ к API может осуществляться через серверную часть другого веб-сайта. [52] Обширная библиотека ботов Python , Pywikibot, [53] и популярный полуавтоматический инструмент AutoWikiBrowser также взаимодействуют с API. [54] Доступ к API осуществляется через URL-адреса, такие как . В этом случае запрос будет запрашивать у Википедии информацию, касающуюся последних 10 изменений на сайте. Одним из очевидных преимуществ API является его независимость от языка; он прослушивает HTTP- соединения от клиентов и может отправлять ответ в различных форматах, таких как XML , сериализованный PHP или JSON . [55] Клиентский код был разработан для обеспечения уровней абстракции API. [56]https://en.wikipedia.org/w/api.php?action=query&list=recentchanges
MediaWiki поддерживает богатый контент , созданный с помощью специального синтаксиса. Например, программное обеспечение поставляется с дополнительной поддержкой рендеринга математических формул с использованием LaTeX и специального синтаксического анализатора, написанного на OCaml . Аналогичная функциональность для другого контента, начиная от графических временных шкал, математических построений и музыкальных партитур и заканчивая египетскими иероглифами , доступна через расширения.
Программное обеспечение стало более мощным при работе с широким спектром загруженных медиафайлов. Его самая богатая функциональность связана с изображениями, где относительно легко можно создавать галереи изображений и миниатюры. Также имеется поддержка метаданных Exif . Использование MediaWiki для управления Wikimedia Commons , одним из крупнейших медиа-архивов бесплатного контента , привело к необходимости расширения функциональности в этой области.
Для редактирования WYSIWYG в MediaWiki доступен VisualEditor , который упрощает процесс редактирования для редакторов и входит в состав пакета начиная с MediaWiki 1.35. [57] Существуют и другие расширения для различной степени редактирования WYSIWYG. [58]
Среди функций MediaWiki, помогающих отслеживать изменения, — функция «Последние изменения», которая предоставляет список последних изменений в вики. Этот список содержит основную информацию об этих изменениях, такую как пользователь, редактирующий, сводка изменений, отредактированная страница, а также любые теги (например, «возможная ссылка на вредоносное ПО ») [59] , добавленные настраиваемыми фильтрами злоупотреблений и другими расширениями, помогающими в борьбе с бесполезные правки. [60] В более активных вики-сайтах происходит так много изменений, что последние изменения сложно отслеживать вручную. Антивандальное программное обеспечение, включая пользовательские инструменты, [61] иногда используется в таких вики для обработки элементов «Последние изменения». Нагрузку сервера можно снизить, отправляя непрерывный поток последних изменений на канал IRC , который могут отслеживать эти инструменты, что устраняет необходимость отправлять запросы на обновленный канал последних изменений в API. [62] [63]
Еще одним важным инструментом является список наблюдения. У каждого вошедшего в систему пользователя есть список наблюдения, в который он может добавлять любые страницы, которые пожелает. Когда на одной из этих страниц вносится изменение, сводка этого изменения появляется в списке наблюдения при следующем его обновлении. [64] Как и на странице последних изменений, последние изменения, которые появляются в списке наблюдения, содержат кликабельные ссылки для удобного просмотра истории статьи и конкретных внесенных изменений.
Существует также возможность просмотреть все изменения, внесенные любым конкретным пользователем. Таким образом, если редактирование определено как проблемное, можно проверить другие правки пользователя на наличие проблем.
MediaWiki позволяет ссылаться на определенные версии статей. Это было полезно научному сообществу, поскольку эксперты-рецензенты могли анализировать статьи, улучшать их и предоставлять ссылки на проверенную версию этой статьи. [65]
Навигация по вики осуществляется в основном через внутренние вики-ссылки. Вики-ссылки MediaWiki реализуют обнаружение существования страницы, при этом ссылка окрашивается синим цветом, если целевая страница существует в локальной вики, и красным, если ее нет. Если пользователь нажмет на красную ссылку, ему будет предложено создать статью с таким названием. Обнаружение существования страницы позволяет пользователям создавать «викифицированные» статьи, то есть статьи, содержащие ссылки на другие соответствующие темы, без того, чтобы эти другие статьи еще не существовали.
Ссылки Interwiki функционируют примерно так же, как пространства имен. Набор интервики-префиксов можно настроить так, чтобы, например, заголовок страницы wikiquote:Jimbo Wales
направлял пользователя на статью Джимбо Уэйлса в Wikiquote . [66] В отличие от внутренних вики-ссылок, в интервики-ссылках отсутствует функция определения существования страницы, и, соответственно, невозможно определить, повреждена синяя интервики-ссылка или нет.
Межъязыковые ссылки — это небольшие навигационные ссылки, которые отображаются на боковой панели в большинстве тем оформления MediaWiki и связывают статью со связанными статьями на других языках в том же семействе Wiki. Это может обеспечить создание языковых сообществ, связанных более широким контекстом, со всеми вики-сайтами на одном сервере или каждый на своем собственном сервере. [67]
Раньше Википедия использовала межъязыковые ссылки для связи статьи с другими статьями по той же теме в других редакциях Википедии. На смену этому пришел запуск Викиданных. [68]
Вкладки страниц отображаются вверху страниц. Эти вкладки позволяют пользователям выполнять действия или просматривать страницы, связанные с текущей страницей. Доступные действия по умолчанию включают просмотр, редактирование и обсуждение текущей страницы. Конкретные отображаемые вкладки зависят от того, вошел ли пользователь в вики и имеет ли он привилегии системного оператора в вики. Например, возможность переместить страницу или добавить ее в свой список наблюдения обычно доступна только вошедшим в систему пользователям. Администратор сайта может добавлять или удалять вкладки, используя JavaScript или устанавливая расширения. [69]
Каждая страница имеет связанную страницу истории, с которой пользователь может получить доступ к каждой когда-либо существовавшей версии страницы и генерировать различия между двумя версиями по своему выбору. Вклады пользователей отображаются не только здесь, но и через опцию «Вклады пользователей» на боковой панели. В статье 2004 года Карл Чаллборн и Тереза Рейманн отметили: «Хотя эта функция может быть небольшим отклонением от духа сотрудничества, «лишенного эго» вики-пуристов, она может быть очень полезна для преподавателей, которым необходимо оценить вклад и участие отдельных пользователей-студентов». [70]
MediaWiki предоставляет множество функций, помимо гиперссылок, для структурирования контента. Одной из первых таких функций являются пространства имен . Одной из первых проблем Википедии было отделение энциклопедического контента от страниц, относящихся к обслуживанию и общественному обсуждению, а также от личных страниц редакторов энциклопедии. Пространства имен — это префиксы перед заголовком страницы (например, « User:
» или « Talk:
»), которые служат дескрипторами назначения страницы и позволяют нескольким страницам с разными функциями существовать под одним и тем же заголовком. Например, страница с названием " [[The Terminator]]
" в пространстве имен по умолчанию может описывать фильм 1984 года с Арнольдом Шварценеггером в главной роли , а страница с названием " [[User:The Terminator]]
" может быть профилем, описывающим пользователя, выбравшего это имя в качестве псевдонима. Чаще всего каждое пространство имен имеет связанное с ним " Talk:
"пространство имен, которое можно использовать для обсуждения его содержимого, например " User talk:
" или " Template talk:
". Цель создания страниц обсуждений — позволить отделить контент от обсуждения, окружающего его. [71] [72]
Пространства имен можно рассматривать как папки , которые разделяют различные основные типы информации или функций. Пользовательские пространства имен могут быть добавлены администраторами сайта. По умолчанию для контента существует 16 пространств имен, причем 2 «псевдопространства имен» используются для динамически генерируемых « Special:
» страниц и ссылок на медиафайлы. Каждое пространство имен в MediaWiki пронумеровано: пространства имен страниц контента имеют четные номера, а связанные с ними пространства имен страниц обсуждения имеют нечетные номера. [73]
Пользователи могут создавать новые категории и добавлять в эти категории страницы и файлы, добавляя один или несколько тегов категорий к тексту содержимого. Добавление этих тегов создает ссылки внизу страницы, которые ведут читателя к списку всех страниц этой категории, что упрощает просмотр связанных статей. [74] Использование категоризации для организации контента описывается как комбинация:
Помимо пространств имен, контент можно упорядочить с помощью подстраниц . Эта простая функция обеспечивает автоматическое перемещение шаблона [[Page title/Subpage title]]
со страницы после косой черты (в данном случае «Заголовок подстраницы») на страницу перед косой чертой (в данном случае «Заголовок страницы»).
Если эта функция включена, пользователи могут настраивать свои таблицы стилей и настраивать клиентский JavaScript для выполнения при каждом просмотре страницы. В Википедии это привело к появлению большого количества дополнительных инструментов и помощников, разработанных через вики и распространяемых среди пользователей. Например, всплывающие окна навигации — это специальный инструмент JavaScript, который показывает предварительный просмотр статей, когда пользователь наводит курсор на ссылки, а также предоставляет ярлыки для общих задач обслуживания. [76]
Весь пользовательский интерфейс MediaWiki может редактироваться через саму вики пользователями с необходимыми разрешениями (обычно называемыми «администраторами»). Это делается через специальное пространство имен с префиксом «MediaWiki:», где каждый заголовок страницы идентифицирует конкретное сообщение пользовательского интерфейса. Используя расширение, [77] пользователь также может создавать личные сценарии и выбирать, следует ли применять к ним определенные сценарии всего сайта, переключая соответствующие параметры на странице пользовательских настроек.
Пространство имен «MediaWiki:» изначально также использовалось для создания пользовательских текстовых блоков, которые затем можно было динамически загружать на другие страницы с использованием специального синтаксиса. Позже этот контент был перенесен в собственное пространство имен «Шаблон:».
Шаблоны — это текстовые блоки, которые можно динамически загружать внутри другой страницы при каждом запросе этой страницы. Шаблон — это специальная ссылка в двойных фигурных скобках (например, " {{Disputed|date=October 2018}}
"), которая вызывает шаблон (в данном случае расположенный по адресу Template:Disputed ) для загрузки вместо вызова шаблона.
Шаблоны — это структурированные документы , содержащие пары атрибут-значение . Они определяются с помощью параметров , которым присваиваются значения при включении на страницу статьи. Имя параметра отделяется от значения знаком равенства . Класс шаблонов, известный как информационные боксы , используется в Википедии для сбора и представления подмножества информации о предмете, обычно в верхнем (мобильное представление) или верхнем правом углу (рабочее представление) документа.
Связанный метод, называемый заменой шаблона (вызывается путем добавления subst:
в начало ссылки на шаблон), вставляет содержимое шаблона в целевую страницу (например, операция копирования и вставки ) вместо динамической загрузки содержимого шаблона при каждой загрузке страницы. . Это может привести к несогласованности при использовании шаблонов, но может быть полезно в определенных случаях и в большинстве случаев требует меньше ресурсов сервера (фактическая сумма экономии может варьироваться в зависимости от конфигурации вики и сложности шаблона).
Шаблоны нашли множество различных применений. Шаблоны позволяют пользователям создавать сложные макеты таблиц, которые последовательно используются на нескольких страницах и где только содержимое таблиц вставляется с использованием параметров шаблона. Шаблоны часто используются для выявления проблем со статьей Википедии путем помещения шаблона в статью. Затем этот шаблон выводит графическое окно, в котором указывается, что содержание статьи является спорным или требует какого-либо другого внимания, а также классифицирует его, чтобы можно было найти статьи такого типа. Шаблоны также используются на страницах пользователей для отправки пользователям стандартных сообщений, приветствующих их на сайте, [78] предоставления им наград за выдающийся вклад, [79] [80] предупреждения их, когда их поведение считается неуместным, [81] уведомления их, когда они заблокированы от редактирования, [82] и так далее.
MediaWiki предлагает гибкость в создании и определении групп пользователей. Например, можно было бы создать произвольную группу «ниндзя», которая могла бы блокировать пользователей и удалять страницы, и чьи изменения по умолчанию скрыты в журнале последних изменений. Также можно создать группу «автоподтвержденных» пользователей, членом которой можно стать после внесения определенного количества изменений и ожидания определенного количества дней. [83] Некоторые группы, включенные по умолчанию, — это бюрократы и системные операторы. Бюрократы имеют право изменять права других пользователей. Системные операторы имеют право контролировать защиту и удаление страниц , а также блокировать их редактирование пользователями. Доступные средства контроля MediaWiki в отношении прав на редактирование были сочтены достаточными для публикации и поддержки важных документов, таких как руководство по стандартным операционным процедурам в больнице. [84]
Если страница состоит только из бесполезного контента, есть несколько способов удалить этот контент. Самый простой способ, доступный всем пользователям, — просто очистить страницу. Однако это мешает обнаружению существования страницы, если только не установлено расширение, позволяющее обрабатывать пустые страницы как несуществующие. [85] Блокировка также оставляет контент доступным через страницу истории, что, хотя и потенциально увеличивает прозрачность, позволяя не-системным операторам легко проверять решение об удалении контента на предмет целесообразности, в некоторых случаях может быть неприемлемым или даже незаконным [86] . Другой вариант — удалить страницу системным оператором и тем самым запретить ее просмотр лицам, не являющимся системными операторами. Другой уровень удаления, называемый RevisionDelete, может использоваться группой (например, «Надзиратели») для предотвращения просмотра страницы лицами, не являющимися членами этой группы. [87] Также возможно, используя определенные расширения, удалить контент из просмотра по любому из обычных каналов вики, [88] или даже полностью удалить версии из базы данных. [89]
MediaWiki поставляется с базовым набором функций, связанных с ограничением доступа, но его первоначальный и постоянный дизайн основан на функциях, которые в основном относятся к контенту, а не к его сегрегации. В результате, за минимальными исключениями (связанными с конкретными инструментами и связанными с ними «специальными» страницами), контроль доступа к страницам никогда не был приоритетом в основной разработке, и разработчики заявили, что пользователям, которым требуется безопасный доступ пользователей и средства контроля авторизации, не следует полагаться на MediaWiki, поскольку он никогда не предназначался для подобных ситуаций. Например, чрезвычайно сложно создать вики, где только определенные пользователи смогут читать и получать доступ к некоторым страницам. [90] В этом случае вики-движки, такие как Foswiki , MoinMoin и Confluence, обеспечивают большую гибкость, поддерживая расширенные механизмы безопасности, такие как списки контроля доступа .
Кодовая база MediaWiki содержит различные перехватчики , использующие функции обратного вызова для добавления дополнительного PHP-кода с возможностью расширения . Это позволяет разработчикам писать расширения без необходимости изменять ядро или отправлять свой код на проверку. Установка расширения обычно состоит из добавления строки в файл конфигурации, хотя в некоторых случаях требуются дополнительные изменения, такие как обновления базы данных или исправления ядра.
Было создано пять основных точек расширения, чтобы позволить разработчикам добавлять функции и возможности в MediaWiki. Хуки запускаются каждый раз, когда происходит определенное событие; например, ArticleSaveComplete
перехват происходит после обработки запроса на сохранение статьи. [91] Это может использоваться, например, расширением, которое уведомляет выбранных пользователей всякий раз, когда в вики происходит редактирование страницы новыми или анонимными пользователями. [92] Для обработки данных можно создавать новые теги с помощью открывающих и закрывающих тегов ( <newtag>...</newtag>
). [93] Функции анализатора можно использовать для создания новой команды ( {{#if:...|...|...}}
). [94] Для выполнения определенной функции могут быть созданы новые специальные страницы. Эти страницы генерируются динамически. Например, на специальной странице могут отображаться все страницы, имеющие одну или несколько ссылок на внешний сайт, или может быть создана форма, предоставляющая отзывы, отправленные пользователем. [95] Скины позволяют пользователям настраивать внешний вид MediaWiki. [96] Небольшая точка расширения позволяет использовать Amazon S3 для размещения файлов изображений. [97]
MediaWiki можно сделать более продвинутым и полезным для различных целей с помощью расширений. Эти расширения сильно различаются по сложности.
Фонд Викимедиа управляет сервером Git , на котором размещены репозитории многих расширений. У большинства из них также есть страница документации на сайте MediaWiki.
Проверка кода MediaWiki сама по себе исторически облегчалась с помощью расширения MediaWiki. [98] По состоянию на март 2012 года это осуществлялось через компанию Gerrit .
Начиная с версии 1.16, MediaWiki использует библиотеку jQuery . [99]
Среди наиболее популярных расширений — расширение функции синтаксического анализатора ParserFunctions, которое позволяет отображать различный контент на основе результатов условных операторов . [100] Эти условные операторы могут выполнять такие функции, как оценка того, является ли параметр пустым, сравнение строк, оценка математических выражений и возврат одного из двух значений в зависимости от того, существует ли страница. Он был разработан как замена заведомо неэффективного шаблона {{Qif}}. [101] Шиндлер рассказывает историю расширения ParserFunctions следующим образом: [30]
В 2006 году некоторые википедисты обнаружили, что посредством сложного взаимодействия функций шаблонов и CSS они могут создавать условный вики-текст, то есть текст, который отображался, если параметр шаблона имел определенное значение. Это включало в себя повторные вызовы шаблонов внутри шаблонов, что снижало производительность всей системы. Разработчики оказались перед выбором: либо запретить распространение явно желательной функции, обнаружив такое использование и явно запретив его в программном обеспечении, либо предложить эффективную альтернативу. Последнее было сделано Тимом Старлингом, который объявил о введении функций синтаксического анализатора, вики-текста, который вызывает функции, реализованные в базовом программном обеспечении. Сначала был реализован только условный текст и вычисление простых математических выражений, но это уже значительно расширило возможности вики-редакторов. Со временем были введены дополнительные функции синтаксического анализа, что, в конечном итоге, привело к созданию структуры, которая позволяла просто писать функции расширения для добавления произвольных функций, таких как, например, службы геокодирования или виджеты. На этот раз разработчики явно реагировали на требование сообщества, будучи вынуждены либо бороться с решением проблемы, которая возникла у сообщества (т.е. с условным текстом), либо предлагать улучшенную техническую реализацию, чтобы заменить предыдущую практику и добиться общего лучшего результата. производительность.
Еще одно расширение функций синтаксического анализатора, StringFunctions, было разработано для оценки длины строки, положения строки и т. д. Сообщества Викимедиа, придумавшие неуклюжие обходные пути для достижения той же функциональности, [102] потребовали включения ее в свои проекты. [103] Большая часть его функциональности в конечном итоге была интегрирована в расширение ParserFunctions, [104] хотя и отключено по умолчанию и сопровождалось предупреждением Тима Старлинга о том, что включение строковых функций позволит пользователям «реализовать свои собственные анализаторы в самом уродливом и неэффективном программировании». язык, известный человеку: викитекст MediaWiki с ParserFunctions». [105]
С 2012 года существует расширение Scribunto, позволяющее создавать «модули» — вики-страницы, написанные на языке сценариев Lua , — которые затем можно запускать в шаблонах и стандартных вики-страницах. Scribunto установлен в Википедии и других сайтах Викимедиа с 2013 года и активно используется на этих сайтах. Код Scribunto работает значительно быстрее, чем соответствующий код викитекста, использующий ParserFunctions. [106]
Еще одно очень популярное расширение — это расширение цитирования, которое позволяет добавлять сноски на страницы с использованием встроенных ссылок. [107] Однако это расширение подверглось критике за то, что оно сложное в использовании и требует от пользователя запоминания сложного синтаксиса. Гаджет под названием RefToolbar призван упростить создание цитат с использованием общих шаблонов. MediaWiki имеет некоторые расширения, которые хорошо подходят для научных кругов, например математические расширения [108] и расширение, позволяющее визуализировать молекулы в 3D . [109]
Существует общее расширение виджетов, которое позволяет MediaWiki интегрироваться практически с чем угодно. Другими примерами расширений, которые могут улучшить вики, являются расширения предложений по категориям [110] и расширения для включения Flash-видео , [111] видеороликов YouTube, [112] и RSS-каналов . [113] Metavid , сайт, на котором архивируются видеозаписи заседаний Сената и Палаты представителей США , был создан с использованием кода, расширяющего MediaWiki в область совместного создания видео. [114]
Существует множество спам-ботов , которые ищут в сети установки MediaWiki и добавляют к ним ссылочный спам , несмотря на то, что MediaWiki использует атрибут nofollow , чтобы препятствовать таким попыткам поисковой оптимизации . [115] Частично проблема заключается в том, что сторонние переиздатели, такие как зеркала , не могут самостоятельно внедрять тег nofollow на своих веб-сайтах, поэтому маркетологи все равно могут получить преимущество PageRank , вставляя ссылки на страницы, когда эти записи появляются на сторонних веб-сайтах. [116] Для борьбы с этой проблемой были разработаны расширения для защиты от спама путем введения CAPTCHA , [117] внесения в черный список определенных URL-адресов, [118] и разрешения массового удаления страниц, недавно добавленных конкретным пользователем. [119]
MediaWiki поставляется с предустановленным стандартным текстовым поиском. Существуют расширения, позволяющие MediaWiki использовать более сложные сторонние поисковые системы, включая Elasticsearch (который с 2014 года используется в Википедии), Lucene [120] и Sphinx . [121]
Также были созданы различные расширения MediaWiki, позволяющие осуществлять более сложный многогранный поиск как по данным, введенным в вики, так и по метаданным, таким как история изменений страниц. [122] [123] Semantic MediaWiki — одно из таких расширений. [124] [125]
MediaWiki может использовать систему управления реляционными базами данных MySQL / MariaDB , PostgreSQL или SQLite . Поддержка базы данных Oracle и Microsoft SQL Server прекращена с версии MediaWiki 1.34. [126] База данных MediaWiki содержит несколько десятков таблиц , в том числе таблицу, содержащую заголовки страниц, идентификаторы страниц и другие метаданные; [127] и таблица, в которую добавляется новая строка каждый раз при внесении редактирования, содержащая идентификатор страницы, краткое текстовое описание выполненного изменения, имя пользователя редактора статьи (или его IP-адрес в случае незарегистрированный пользователь) и метку времени. [128] [129]page
revision
За 4,5 года до 2008 года в базе данных MediaWiki было 170 версий схемы . [130] Вероятно, самое большое изменение схемы было сделано в 2005 году в MediaWiki 1.5, когда хранение метаданных было отделено от хранилища контента, чтобы повысить гибкость производительности. Когда это обновление было применено к Википедии, сайт был заблокирован для редактирования, а схема была преобразована в новую версию примерно за 22 часа. Некоторые предложения по усовершенствованию программного обеспечения, такие как предложение разрешить просмотр разделов статей через список наблюдения, были отклонены, поскольку необходимые изменения схемы потребовали бы чрезмерного простоя Википедии. [131]
Поскольку он используется для управления одним из сайтов с самым высоким трафиком в Интернете, Википедией, производительность и масштабируемость MediaWiki были высоко оптимизированы. [29] MediaWiki поддерживает Squid , репликацию базы данных с балансировкой нагрузки , кэширование на стороне клиента, кэширование memcached или табличное кэширование для часто используемой обработки результатов запросов, простой статический файловый кэш, операции с ограниченным набором функций, сжатие версий и очередь заданий. для операций с базой данных. Разработчики MediaWiki попытались оптимизировать программное обеспечение, избегая дорогостоящих алгоритмов, запросов к базе данных и т. д., кэшируя каждый результат, который требует больших затрат и имеет временную локальность ссылки, и концентрируясь на «горячих точках» кода посредством профилирования . [132]
Код MediaWiki предназначен для записи данных в базу данных для чтения и записи и чтения из баз данных, доступных только для чтения, хотя база данных для чтения и записи может использоваться для некоторых операций чтения, если базы данных, доступные только для чтения, еще не обновлены. . Метаданные , такие как история изменений статьи, связи статей (ссылки, категории и т. д.), учетные записи пользователей и настройки, могут храниться в основных базах данных и кэшироваться; Фактический текст версии, который используется реже, может храниться как BLOB-объекты , доступные только для добавления , во внешнем хранилище. Программное обеспечение подходит для работы крупных вики-ферм, таких как Wikimedia , у которой по состоянию на август 2011 года было около 800 вики. Однако MediaWiki не имеет встроенного графического интерфейса для управления такими установками.
Эмпирические данные показывают, что большинство версий баз данных MediaWiki лишь незначительно отличаются от предыдущих версий. Таким образом, последующие версии статьи можно объединить, а затем сжать, достигая очень высокой степени сжатия данных — до 100x. [132]
Дополнительную информацию об архитектуре, например о том, как она хранит викитекст и собирает страницу, см. в разделе Внешние ссылки.
Синтаксический анализатор служит стандартом де-факто для синтаксиса MediaWiki, поскольку формальный синтаксис не определен. Из-за отсутствия формального определения было сложно создавать редакторы WYSIWYG для MediaWiki, хотя несколько расширений WYSIWYG все же существуют, включая популярный VisualEditor .
MediaWiki не предназначена для того, чтобы стать подходящей заменой специализированного онлайн-форума или программного обеспечения для ведения блогов, [133] хотя существуют расширения, позволяющие реализовать и то, и другое. [134] [135]
Новые пользователи MediaWiki часто допускают определенные ошибки, например, забывают подписывать сообщения четырьмя тильдами (~~~~), [136] или вручную вводить подпись в виде открытого текста, [137] из-за незнания специфических особенностей, связанных с общение на страницах обсуждения MediaWiki. С другой стороны, один преподаватель назвал формат этих дискуссионных страниц преимуществом, заявив, что он обеспечивает более детальные возможности для обсуждения, чем традиционные тематические дискуссионные форумы. Например, вместо того, чтобы «ответить» на все сообщение, участник обсуждения может создать гиперссылку на новую вики-страницу по любому слову исходной страницы. За обсуждениями легче следить, поскольку контент доступен через вики-страницу с гиперссылкой, а не через серию ответных сообщений на традиционном тематическом дискуссионном форуме. Однако, за редким исключением, студенты не использовали эту возможность, возможно, из-за их знакомства с традиционным линейным стилем обсуждения и отсутствия указаний о том, как сделать контент более « насыщенным ссылками ». [138]
MediaWiki по умолчанию мало поддерживает создание динамически собираемых документов или страниц, объединяющих данные с других страниц. Были проведены некоторые исследования по включению таких функций непосредственно в MediaWiki. [139] Расширение Semantic MediaWiki предоставляет эти функции. Он не используется в Википедии, но используется более чем в 1600 других установках MediaWiki. [140] Однако репозиторий Wikibase и клиент репозитория Wikibase реализованы в Викиданных и Википедии соответственно и в некоторой степени обеспечивают функции семантической сети и связывание централизованно хранящихся данных с информационными блоками в различных статьях Википедии.
Обновление MediaWiki обычно полностью автоматизировано и не требует внесения изменений в содержимое сайта или программирование шаблонов. Исторически проблемы возникали при обновлении со значительно более старых версий. [141]
Разработчики MediaWiki ввели стандарты безопасности как для основного кода, так и для расширений. [142] SQL-запросы и вывод HTML обычно выполняются с помощью функций-оболочек, которые обрабатывают проверку, экранирование, фильтрацию для предотвращения межсайтового скриптинга и внедрения SQL . [143] Многие проблемы безопасности пришлось исправлять после выпуска версии MediaWiki, [144] и, соответственно, MediaWiki.org заявляет: «Самый важный шаг в области безопасности, который вы можете предпринять, — это поддерживать свое программное обеспечение в актуальном состоянии», подписавшись на объявление. список рассылки и установку анонсированных обновлений безопасности. [145]
Разработчики MediaWiki разбросаны по всему миру, но большинство из них находятся в США и Европе. Личные встречи и программные сессии для разработчиков MediaWiki проводятся один или несколько раз в год с 2004 года. [146]
Поддержка пользователей MediaWiki состоит из:
Пользователи программного обеспечения для онлайн-сотрудничества знакомы с функциями и макетом MediaWiki благодаря его отмеченному использованию в Википедии. В обзоре социального программного обеспечения в академических кругах за 2006 год было отмечено, что «по сравнению с другими вики-сайтами MediaWiki также довольно эстетичен, хотя и прост, и имеет легко настраиваемое боковое меню и таблицу стилей ». [150] Однако в одной из оценок 2006 года Confluence был признан превосходным продуктом благодаря очень удобному API и способности лучше поддерживать несколько вики. [109]
В исследовании 2009 года, проведенном в Университете Гонконга, TWiki сравнили с MediaWiki. Авторы отметили, что TWiki рассматривается как инструмент для совместной разработки образовательных документов и технических проектов, тогда как наиболее заметное использование MediaWiki приходится на Википедию. Хотя обе платформы позволяют обсуждать и отслеживать прогресс, в TWiki есть часть «Отчет», которой нет в MediaWiki. Студенты считали MediaWiki более простым в использовании и более приятным, чем TWiki. На вопрос, рекомендуют ли они использовать MediaWiki для группового проекта курса по управлению знаниями , 15 из 16 респондентов выразили предпочтение, чтобы MediaWiki давала ответы с большой уверенностью, такие как «конечно», «наверняка». [151] TWiki и MediaWiki имеют гибкую архитектуру подключаемых модулей. [152]
Исследование 2009 года, в котором сравнивался опыт студентов с MediaWiki и Google Docs, показало, что студенты дали последнему гораздо более высокую оценку за удобный макет. [153]
В исследовании 2021 года, проведенном Бразильским институтом ядерной инженерии, система управления знаниями на основе MediaWiki сравнивалась с двумя другими, основанными на DSpace и Open Journal Systems соответственно. [154] Он подчеркнул простоту использования как преимущество системы на основе MediaWiki, отметив, что, поскольку Фонд Wikimedia разрабатывал MediaWiki для сайта, ориентированного на широкую публику (Википедия), «его пользовательский интерфейс был разработан так, чтобы быть более удобным для пользователя». «Дружелюбен с самого начала и получил большое количество отзывов пользователей в течение длительного времени», в отличие от DSpace и OJS, ориентированных на нишевую аудиторию. [154]
488 языков (не включая языки, которые поддерживаются, но не имеют перевода)