19—21 травня у Відні відбувся Хакатон Вікімедіа, що зібрав разом розробників з усього світу з метою покращити технічну інфраструктуру Вікіпедії, зокрема, платформу MediaWiki, на якій вона побудована, та подальшу розробку програмного коду. Вікімедіа Україна надала стипендію на поїздку до Австрії користувачу Bunyk, активному редактору та програмісту за фахом. Представляємо допис вікіпедиста про пережите. Авторський стиль збережено.
Програмісти — цікаві люди. Вони зі всіх сил працюють з понеділка по п’ятницю, а на вихідних, аби відпочити і розважитись, ще беруть участь у хакатонах. Хакатон — це коли програмісти збираються на деякий короткий час (як от вихідні), аби попрограмувати, і спробувати зробити щось що в голову прийде.
Починається все з того, що кожен протягом короткого часу пояснює свою ідею, записує її на плакаті на стіні, а тоді ті, в кого цікавих ідей не було обирають собі ту, яка найбільше подобається і приєднуються до команди. Далі всі зосереджено працюють, а в кінці — роблять презентації. Так було, наприклад, на Garage48 — сорока восьмигодинному хакатоні, що проводиться в різних містах в подібному форматі.
Відмінністю вікімедійного хакатону є те, що він не зосереджується на тому, аби показати презентацію і розказати як продукт, який ви створюєте. буде продаватись чи іншим чином створювати прибуток. Тут все зосереджується на тому, як ви зможете зробити Вікіпедію і всі інші проекти Вікімедіа кращими.
І, відповідно, явної конкуренції між командами не було, бо ніхто не роздавав місця. Всі знали що працюють над спільною метою (хоч і різними мовами і в різних проектах), тому дух співпраці був ще більшим, ніж навіть у Вікіпедії.
Ще дивовижнішою була концентрація знань і інтелекту на квадратний метр приміщення. Я особисто працював над проектом (github), що допомагатиме перекладати інтерфейс MediaWiki та інших програм з якими працюють проекти Вікімедіа з мобільного телефона через програму Telegram. Ми мали код наявного бота для Telegram, який Амір Аароні (мій ментор) написав на минулому хакатоні в Єрусалимі. Спершу були проблеми з Wikimedia Labs — безкоштовний хмарний сервіс Фонду Вікімедіа, аналог AWS чи DigitalOcean, зроблений на Kubernetes. Амір пішов до когось розбиратись з ним. Тим часом, ми з Джастіном (американський школяр, який займався навіть двома проектами, і знає не тільки JavaScript, а й PHP, і ще купу всього, про що я в його віці поняття не мав), переписали бота так, аби його можна було використовувати з альтернативним інтерфейсом — з консолі.
Наступної ночі я виявив, що це було зайвим, бо бота для Telegram, можна запускати навіть не маючи якогось статичного домену на якому телеграм може викликати веб-хуки, бот може працювати в режимі опитування.
Після того, мені замінили задачу на програмування OAuth логіну, щоб користувачі могли редагувати Translatewiki не з акаунт бота, а зі свого акаунту.
Це виявилось дещо складно, хоча б тому що для OAuth, щоб отримати CLIENT_SECRET і.т.п., потрібно реєструвати свій додаток в MediaWiki, а на сайтах проектів Фонду Вікімедіа це роблять лише стюарди, для яких треба писати заявку (реальність має несподівано багато деталей), але коли перебуваєш в кімнаті, концентрація знань зашкалює і поставити LAMP, MediaWiki, і OAuth plugin — взагалі не становить ніяких проблем.
Тепер в мене на комп’ютері стоїть своя вікі. Виявилось що писати заявку навіть на локальній вікі, де ти «супер-пупер» адмін зі всіма повноваженнями — складно. Бо треба додати собі ті повноваження, заповнити і прийняти заявку, записати CLIENT_SECRET і т.п. Про це напевне варто написати окремим постом.
Далі я знайшов на npm MediaWIki OAuth стратегію для Passport (бібліотека авторизації для Node.js), яка, щоправда, не працювала. Я подивився код, нічого не зрозумів, зітхнув, почав шукати де. Деякий час потому, Амір спитав “як справи і сказав, що автор того пакету знаходиться в сусідній кімнаті, і що він зараз мені його знайде.
Знайшов. Я поговорив з millimetric-ом (автором стратегії), і з’ясувалося, що він писав її три роки тому і тому він не знає, чого вона не працює. Але є один проект, який цю бібліотеку використовує, і десь в сусідній кімнаті є автор того проекту. Це був альтернативний інтерфейс до вікіпедії зроблений на Express.js та React, але там я зайшов в тупик.
Ввечері я вирішив подивитись, що нам в цьому може запропонувати Python, і знайшов на Github mediawiki-utils/mwoauth. З ним теж були проблеми, Амір сказав: «Я знаю автора цієї бібліотеки», дав мені контакт і проблема вирішилась за дві хвилини:
Щоправда, за пів години до того він якраз випустив нову версію пакета, яка виправляла цю проблему. Ну й автором виявився не аби хто, а людина, про яку є стаття: Арон Халфейкер. Він ще, як виявилось, розділяє моє враження про те, що pywikipediabot «зажирний» і дивно інсталюється, тому й працює над mediawiki-utils.
В результаті я написав Flask — застосунок, в який можна залогінитись з медіавікі і записати свій Telegtram username, прив’язавши його до Oauth токена. Правда редагувати ще не пробував, але обіцяв Аміру що це допишу. Тому що перекладати інтерфейс MediaWiki треба оперативно, і чат-бот інтерфейси — це майбутнє мобільних інтерфейсів.
Крім цього, була купа цікавих сесій, більшість з яких я пропустив.
Я чомусь вирішив ще раз піти послухати про SPARQL (що вже було на українському хакатоні). Вперше дізнався як вибрати не тільки “є екземпляром”, але й “є екземпляром довільну кількість разів підкласу”. Потім забув, потім запитав на форумі вікіданих і тепер пам’ятаю. Про це теж треба б було написати окремий пост.
Пропустив пояснення роботи з Phabricator (в Prom.ua її використовував для code review, Фонд Вікімедіа її використовує як багтрекер, а для ревю – [[Gerrit]].
Також пропустив доповідь свого сусіда по кімнаті Zache, про те чому в деяких вікіпедіях, які використовують розширення Flagged revisions такий довгий список редагувань до перевірки. Просто він — фін (фінська Вікіпедія, як виявилось менша за нашу, не плутайте зі шведською), і його акцент я не міг зрозуміти навіть з великим напруженням. В середньому, в українській Вікіпедії редагування чекає на перевірку сто з чимось днів. І це число тільки росте. Це так тому, що нові дописувачі з’являються набагато частіше, ніж нові патрульні, а старі патрульні втрачають активність.
Крім того, навіть зміни зроблені автопатрульованим користувачем, як наприклад ботом, якщо вони зроблені поверх непатрульованої версії, є автоматично непатрульовані.
Я потім запитав Zache на його сторінці обговорення про графіки. які ілюструють цю проблему, він сказав, що для того, аби її вирішити, треба ботом відпатрулювати зміни з використанням системи штучного інтелекту ORES (це офіційний наступник ClueBotNG від фонду Вікімедіа і Аарона Халфейкера).
Далі, завдяки механізму skill-sharing поспілкувався з Timo Tijhof aka @Krinkle, який в фонді займається користувацьким інтерфейсом, щодо того як писати скрипти користувача. Про це теж треба окремий пост, як і про мою мрію переписати такий інструмент як Meld на Vue.js та інтегрувати його в медіавікі.
Ще я ходив на дискотеку в клуб «Арена», але мені не сподобалось, бо ні з ким там не поговорив, і не потанцював, бо вікіпедисти все ж трохи гіки, окрім одного з Індії. От він таки відірвався на повну. Просив ді-джея поставити Falco — той не поставив, або поставив щось таке, що я не знаю.
Тепер думаю, що варто б у Львові провести хакатон на тему покращення інтерфейсу вікіпедії, SPARQL та вікіданих і всіляких інших утиліт та їх положення. Тільки треба визначити місце та час. Може наступного вікічетверга в Пузатій Хаті на Шевченка?