FANDOM


MediaWiki logo

Логотип

MediaWiki — популярний безкоштовний вікірушій з відкритим вихідним кодом, написаний на мові PHP. Спочатку рушій був розроблений для проєктів Фонду Вікімедіа, але згодом став застосовуватися на багатьох вікіпроєктах і вікіхостінгах, в тому числі і на Фандому.

Історія Редагувати

History of MediaWiki, April 2003 - August 2015

History of MediaWiki, April 2003 - August 2015

Коли Вікіпедія була запущена в січні 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 дозволяє користувачам завантажувати на вікіпроєкт файли, для чого існує спеціальна сторінка Спеціальна: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), однак у розробників є можливість створювати власні.

Скіни Фандому

Примітки Редагувати

  1. Mayer, Daniel. «Phase IV, Wikibooks.org/.com and WikimediaFoundation.org/.com (was Wikis and uniformity)». Wikipedia-L mailing list archives.
  2. «International logo contest/results». Meta-wiki.
  3. Logo history
  4. «File talk:EloquenceSunflowerNew-Small.png». Meta-wiki. Wikimedia Foundation
  5. Everything Is Miscellaneous: The Power of the New Digital Disorder. Times Books. p. 99. ISBN 0-8050-8043-0.
  6. Wikimedia and MediaWiki
  7. Version lifecycle
  8. User blog:TOR/MediaWiki Upgrade
  9. Технічне оновленя від 24 серпня 2017
  10. Оновлення MediaWiki
  11. Фази розгортання єдиної платформи
  12. Авторскі права
  13. Усі розширення
  14. Налаштування конфігурації
  15. Google Summer of Code
  16. Hackathon
  17. Page table
  18. Database schema
  19. Security for developers
  20. Perrin, Chad (April 30, 2008), Five security tips from MediaWiki’s lead developer, Tech Republic
  21. HTTPS для не англійська вікіпроєктів
  22. mw:Lua scripting/Benchmarking
  23. Обговорення локалізації функції Дослідження
  24. Усі скіни
Community content is available under CC-BY-SA unless otherwise noted.