Библиотека сайта rus-linux.net
MediaWiki
Глава 12 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: MediaWiki
Автор: Sumana Harihareswara, Guillaume Paumier
Дата публикации: 1 Мая 2012 г.
Перевод: А.Панин
Дата перевода: 24 Мая 2013 г.
С самого начала приложение MediaWiki разрабатывалось как специфический программный продукт для проекта Wikipedia. Деятельность разработчиков была направлена на упрощение возможности его повторного применения сторонними пользователями, но процесс разработки и предназначение для работы в рамках проекта Wikipedia значительным образом повлияли на архитектуру приложения MediaWiki в течение истории его развития.
Wikipedia является одним из десяти наиболее популярных вебсайтов в мире, на данный момент обслуживающим около 400 миллионов уникальных посетителей в месяц. Этот вебсайт обрабатывает более 100000 обращений в секунду. Вебсайт Wikipedia не использует коммерческие рекламные объявления для финансирования своей деятельности; он поддерживается в полном объеме некоммерческой организацией Wikimedia Foundation, основным источником финансирования которой являются пожертвования. Это значит, что программный продукт MediaWiki должен не только работать на находящемся в первой десятке по популярности вебсайте, но также делать это в условиях ограниченного бюджета. Для удовлетворения этих требований приложение MediaWiki должно было быть разработано с большим вниманием к производительности, возможностям кэширования и оптимизациям. Ресурсоемкие возможности, которые не могут быть включены в Wikipedia либо удаляются, либо отключаются с помощью переменных конфигурации; в ходе разработки осуществляется бесконечное балансирование между производительностью и возможностями приложения.
Влияние проекта Wikipedia на архитектуру системы MediaWiki не ограничивается производительностью. В отличие от систем управления содержимым вебсайта (CMS) общего назначения, приложение MediaWiki изначально разрабатывалось со специфической целью: для поддержки сообщества, которое создает и курирует свободно распространяемые знания в рамках открытой платформы. Это значит, например, что MediaWiki не поддерживает такие возможности, реализуемые в рамках корпоративных систем управления содержимым вебсайта, как поток обработки публикаций или списки контроля доступа, но предоставляет множество различных инструментов для борьбы со спамом и вандализмом.
Таким образом, с самого начала требования и действия постоянно растущего сообщества участников проекта Wikipedia повлияли на процесс разработки приложения MediaWiki и наоборот. Архитектура приложения MediaWiki множество раз претерпевала изменения благодаря таким начатым или предложенным сообществом инициативам, как создание проекта Wikimedia Commons или функция флагов для изменений (Flagged Revisions). Разработчики реализовывали основные архитектурные изменения при появлении их необходимости в процессе использования приложения MediaWiki участниками проекта Wikipedia.
Приложение MediaWiki также приобрело обширный круг сторонних пользователей благодаря изначальному развитию в форме программного обеспечения с открытым исходным кодом. Сторонние пользователи знают о том, что пока такой популярный вебсайт, как Wikipedia, использует приложение MediaWiki, это программное обеспечение будет поддерживаться в рабочем состоянии и совершенствоваться. Приложение MediaWiki на самом деле в первую очередь предназначалось для сайтов организации Wikimedia, но были предприняты усилия для того, чтобы расширить область его применения и сделать его более подходящим для удовлетворения потребностей сторонних пользователей. Например, в данный момент в составе приложения MediaWiki поставляется замечательный веб-установщик, упрощающий процесс установки по сравнению с процессом, в ходе которого все действия должны выполняться с помощью командной оболочки и программное обеспечение содержит жестко заданные пути к файлам, специфичные для проекта Wikipedia.
Все же, приложение MediaWiki остается программным обеспечением проекта Wikipedia, что видно при рассмотрении его истории развития и архитектуры.
- Раздел "Исторический обзор" содержит краткое описание истории приложения MediaWiki или, точнее, его предыстории и условий создания.
- Раздел "Кодовая база и практика разработки приложения MediaWiki" объясняет причины выбора языка PHP, важность и принципы создания безопасного кода, а также то, как обрабатываются стандартные настройки.
- Раздел "База данных и хранилище текста" подробно описывает систему распределенного хранения данных, а также то, как структура этой системы адаптируется к росту объема данных.
- Раздел "Запросы, кэширование и доставка данных" прослеживает выполнение веб-запроса в тесной связи с активируемыми компонентами системы MediaWiki. Раздел также включает в себя описание различных уровней кэширования и системы доставки данных.
- Раздел "Языки" в подробностях описывает всеобъемлющую систему интернационализации и локализации, а также причины, по которым она нужна и способ ее реализации.
- Раздел "Пользователи" содержит описание способа программного представления пользователей и принципа функционирования пользовательских прав доступа.
- Раздел "Содержимое страниц" подробно описывает способы структурирования содержимого, форматируемого и обрабатываемого для генерации конечного документа HTML. Подраздел посвящен обработке мультимедийных файлов средствами приложения MediaWiki.
- Раздел "Модификации и расширение возможностей MediaWiki" описывает то, как сценарии JavaScript, таблицы стилей CSS, расширения и оболочки могут использоваться для модификации wiki, а также как они модифицируют внешний вид и поведение системы. Подраздел посвящен веб-API с возможностью программного чтения данных.
Далее: 12.1. Исторический обзор