Як вирішити всі ваші проблеми

24.09.2017

Оригінал статті: How To Solve All Your Problems

Від перекладача: як тільки побачив цю статтю, одразу ж виникло непереборне бажання перекласти її на українську мову. Але варто було приступити безпосередньо до перекладу, мій пил десь пропав. Причиною стала велика кількість термінів, при перекладі яких важко було зберігати суть сказаного авторкою статті. От наприклад, поняття "issue queue" якщо перекладати дослівно, то вийде "черга питань", хоча по суті, це не питання, а звіти про помилки. Назвати це поняття "чергою звітів" рука теж не підіймається. Тому я прийняв рішення далі в тексті не перекладати це словосполучення.

Як користуватися Drupal issue queue (чергою проблем) з найбільшою користю

Зображення видалено.

Гаразд, можливо не всі ваші проблеми... Але принаймі всі Друпал проблеми. Екосистема друпал складається з тисячі контрібних модулів, кожний з яких підтримується одним або декількома добровольцями. Коли щось не так (що буває доволі часто) ви маєте знати як вирішити вашу проблему, і як отримати максимальну користь від issue queue на Друпал.орг.

Перед тим як відзвітувати

Перед тим як відзвітувати про баг, сперше спробуйте останній код ('Latest Code'), щоб знати, чи це вирішить вашу проблему (далі буде пояснено, в якій версії (релізі) шукати так званий останній код). Доволі часто люди звітують про проблеми, які вже вирішені в останньому коді. Користувачі одразу ж можуть користуватися робочою версією замість того, щоб безглуздо чекати що хтось відгукнеться на його проблему.

Ідіть до issue queue проекту

Кожний проект на Drupal.org має власний issue queue. Ви можете знайти його на сторінці проекту, наприклад http://drupal.org/project/cck чи http://drupal.org/project/views. Обов"язково перечитайте опис проекту. Іноді там є інформація про відомі проблеми.

Під останнім кодом ('Latest Code') мається на увазі версія розробників ('Development')

Сторінка проекту має список релізів.

Зображення видалено.

Як правило вам варто користуватися офіційними релізами (тими, які на зеленому тлі), але якщо у вас є баг, слід спробувати реліз розробників (той, який на червоному тлі) щоб взяти виправлення (або перевірити, чи цей код виправляє вашу помилку). Якщо ви не бачите версію розробників на сторінці проекту - перейдіть за посиланням "View all releases" та подивитися, чи існує реліз розробників (реліз для вашої версії, до імені цього релізу в кінці додається "-dev") взагалі. Тільки не тестуйте реліз розробників на робочій версії сайту! Вам слід протестувати його в локальному середовищі розробки.

Офіційні релізи являються знімками коду на якийсь момент часу. Після релізу код в ньому більше не змінюється. Тому коли помилки виправлені, вони виправлені і у версії розробників. В офіційний реліз зміни вже не увійдуть. Коли ви бажаєте перевірити чи виправлена помилка, вам потрібний останній код. Під "останнім кодом" завжди мається на увазі версія у розробці ("Development").

Навіть релізи у розробці можуть бути застарілими. Архіви коду в розробці на сторінках проектів на Drupal.org оновлюються кожних 12 годин, тому вони містять у собі патчі, що були закомічені в час до моменту оновлення архіва коду. Якщо новий патч закомічений сьогодні, його, ймовірно, ще немає в архіві проекту, навіть якщо цей архів має сьогоднішню дату. Єдиний спосіб переконатися, що архів містить потрібний патч - чекати на архів, що буде створений на слідуючий день після комміту патчу. Git-репозиторій - це єдине місце, де можна взяти останній код негайно.

Перевірте, чи ваша проблема вже вирішена

Кожного разу під час взяття нової версії коду, робіть наступне:

1. Негайно запустіть update.php. Переконайтесь, чи немає ніяких повідомлень, які вимагають від вас перезапустити скрипт або сповіщують вас, що щось пішло не так.
2. Очистіть весь кеш.
3. Якщо проблема має відношення до CCK-поля (в Drupal 6) чи поля Fields (в Drupal 7), перейдіть до 'Manage Fields' (управління полями) сторінку до будь-якого поля, з яким у вас проблеми, перепровірте дані на адекватність, та перезапишіть поле, навіть якщо ви нічого не змінювали. Також перейдіть до "Display Fields" (Відображення полів) сторінки, перевірте всі налаштування, перезапишіть форму.
4. Якщо проблема має відношення до Views, переконайтесь, що ви почистили кеш натиснувши кнопку 'Clear cache' на закладці "Tools" вьюсів. Відредагуйте проблемний вид, перегляньте кожне поле, аргументи, фільтри, сортування. Переконайтесь у адекватності значень та перезбережіть поля та сам вьюс.

Ну а потім перегляньте, чи досі існує ваша проблема в останньому коді.

Знайдіть issue queue

Якщо ваша проблема досі не вирішена, вам слід взнати, чи не доповідав вже хтось про цю проблему. В правій колонці на сторінці проекту ви побачите блок, схожий на наступний:

Зображення видалено.

Введіть пошуковий термін в поле, або просто натисніть кнопу 'Search' ("пошук") щоб перейти в повний перелік проблем (звітів). Потім відфільтруйте пошук до версії Drupal, яку ви використовуєте. Ви ж не маєте бажання переглядати проблеми D6 версії у той час, коли ви користуєтесь D7 версією? Не забувайте, що тут можуть бути закриті звіти, які можуть стосуватися вашої проблеми, тому перегляньте всі звіти, закриті в тому числі (звіт закривається в тому випадку, коли проблема в ньому вирішена).

Пошукайте вашу проблему, можливо про неї хтось вже доповідав. Наприклад, якщо ви бачите помилку, скористайтесь розширеним пошуком, ввівши ключові фрази з вашого повідомлення про помилку.

Якщо вам не вдається знайти схожу проблему, створіть звіт про свою проблему та обов"язково вкажіть, які кроки ви намагались зробити, аби вирішити її.

На кожну проблему окремий звіт

Іноді здається, що можна створити звіт і навалити туди всі проблеми, які ви знаєте.

Але issue queue на Drupal.org не працює таким чином. Ми доповідаємо про кожну проблему окремим звітом. Таким чином іншим користувачам, у кого та ж сама проблема, легше знайти її і взнати, як вирішити помилку, або додати більше інформації про проблему.

Це дуже важливо для супроводжуючих проект людей (далі мейнтейнери). Їм не потрібно бачити багато нерелевантної інформації, їм потрібно знати лише те, що стосується однієї окремої проблеми. І коли проблема вирішена, вони можуть закрити звіт чи перенести питання в інший.

Пишіть інформативний заголовок

Заголовок звіту дуже важливий. Мейнтейнери часто сканують заголовки для того, щоб визначитись, що робити з цим. Інші користувачі сканують заголовки щоб подивитися, чи хто-небудь вже доповів про їх проблему.

Заголовок типу "Нічого не працює!!!!" - невдалий заголовок. В такому випадку існує єдиний спосіб взнати в чому проблема - перечитати опис проблеми повністю. Правильний заголовок має нести короткий опис проблеми, наприклад "Множинне значення nodereference поля бите в деяких views". Такий заголовок дозволяє одразу зрозуміти, чи має ця проблема відношення до вашої.

Не пишіть замало та забагато

Так, це здається неможливим, але тим не менш. "Замало" значить короткі звіти типу "Нічого не працює" або просто вставка тексту повідомлення про помилку без жодної інформації про те, де ви її побачили і за яких обставин.

Пам"ятайте, що є сотні, а то й і тисячі можливих комбінацій дій, які могли б вплинути на поля чи views'и. Кажучи "Я створив view та додав поле для відображення, і воно не працює" - це дуже мало інформації.

Під словом "Забагато" мається наувазі надання повної історії всього на сайті і всього того, що ви бажали зробити. В такому випадку слід перечитати багато абзаців/тексту щоб дістатися того місця, де, власне, описується проблема.

Основна задача - надати ДОСТАТНЬО інформації для того, щоб мейнтейнери могли розпочати з чистого аркуша (в них немає вашого сайту чи ваших даних, в кінці кінців) і дістатися до місця, де можна побачити вашу проблему. Добрий звіт має бути схожим на таке:

  1. Створити поле типу "number" з використанням віджету "textfield". Встановити, що поле буде мати лише одне значення та зробити його обов"язковим.
  2. Створити новий view з наступними параметрами: Рядковий стиль - Поля, Стиль - Неформатоване. Додайте новостворене поле до виду, з використанням форматтера по замовчанню.
  3. При відображенні виду ви побачите помилку "ХХХХ".

Не змінюйте версії

Прикріпляйте звіт про проблему до основної версії яку ви використовуєте. Якщо ви використовуєте Drupal 7 версію і ви бачите схожу проблему, але для Drupal 6, не слід додавати коментарій типу "Підписуюсь" та одночасно змінювати версію звіту. Дуже малоймовірно, що проблема однакова в обох версіях, і зміни версій забруднюють звіт, роблячи його незрозумілим для мейнтейнерів.

В вищезгаданому випадку, якщо ви бачите схожу проблему в іншій версії, але не бачите в своїй, створіть новий звіт, вказавши в ньому версію, яку ви використовуєте. В цьому звіті ви можете вказати посилання на звіт про таку ж проблему в іншій версії. Якщо вони ж дійсно однакові, мейнтейнер може погодитись і відмітити якусь з них як дуплікат, в іншому випадку вони можуть залишити окремі звіти, що можуть мати (а можливо мають) різні підтексти та рішення.

Не перевідкривайте закриті звіти

Якщо ви знайшли старий закритий звіт про помилку, що виглядає схожою на вашу, вам не слід перевідкривати цей звіт. Особливо якщо він дуже старий та з довгою історією. Винятком може бути ситуація, коли звіт тільки-но закрили, і ви визначили, що те, що було запропоновано як рішення, насправді досі не працює в останній версії коду. В такому випадку ви можете перевідкрити звіт з поясненням, що ви протестували це в останній версії коду і досі бачите цю проблему. Переконайтесь у тому, що ви описали як саме вам вдалося вияснити, що проблема досі невирішена.

Тому вам не слід задавати питання в закритому звіті про помилку. Всі звіти з позначкою "closed", "fixed" або "duplicate" залишаються поза увагою мейнтейнерів. Вони, як правило, більше не дивляться в їх бік. Задавайте питання в нових або відкритих звітах.

Користь!

Якщо ви будете дотримуватись вищезгаданих порад, ви або:

  • виявите, що ваша проблема вже вирішена
  • знайдете існуючий звіт про помилку, підписавшись на який зможете відслідковувати той момент, коли проблема буде вирішена
  • створите новий звіт про помилку призначений для надання достовірної інформації щоб допомогти мейнтейнерам проекту вирішити проблему.

Вітання! Тепер ви готові правильно користуватися issue queue на Drupal.org. Очевидно рішень проблем значно більше аніж звітів про ці проблеми та патчів. Використовуючи цей інструмент, доступний на Drupal.org, ви зможете користуватися роботою тисячі інших розробників та веб-майстрів. І хтось скористається вашою роботою також.