Этот пост посвящен проблемам общения разработчиков в очередях проблем на drupal.org (Issue queues). Если в начале своего пути, друпаллер не так часто там появляется, то, по мере профессионального роста, вам все чаще придется сообщать об ошибках, постить свои патчи и помогать другим.
Далее мы рассмотрим некоторые сценарии и пути их эффективного разрешения.
#1 Я нашел ошибку в ядре!
Друпал не идеален. Каждый новый релиз приносит с собой 2-3 серьезных исправления и до дюжины мелких.
Довольно немногие знают какова процедура исправления ошибок в ядре. Некоторые слышали что код «заморожен» и это навсегда, некоторые считают что они ничем не могут помочь, некоторые считают что ошибки должен исправлять лично Дрис — словом, ходит много мифов об этом.
Цикл разработки Drupal
Все дороги ведут в HEAD
HEAD-веткой ядра называется ветка, которая в данный момент находится в активной разработке. На сегодняшний день это Drupal 7. Для остальных версий выходят сервис-релизы, в которых лишь латаются дыры и ошибки. Исходя из этого, ваш «патч, с улучшением системы кеширования для шестерки» в лучшем случае переназначат в HEAD.
Теперь вернемся к исправлениям. Почти все баги, которые вы можете найти в системе — наследственны. Это означает, что если баг есть в Drupal 6, он наверняка присуствует и в Drupal 7. Вот почему, если вы запостите заплатку для более ранней версии, вас попросят сперва портировать ее для HEAD, а затем уже каскадно спускать это исправление вниз по версиям.
В остальном же, исправление ошибок в ядре сходно с процессом исправления ошибок в модулях.
#2 Я нашел ошибку в стороннем модуле!
По моим наблюдениям, классические варианты поступков людей в данном случае выглядят так:
Действие | Эффективность | Комментарий |
---|---|---|
Отказаться от модуля | 1% |
Плюсы: В некоторых случаях это хорошее решение (см. модуль Gmap). Минусы: Можно оставить за бортом хороший функционал. |
Смириться с ошибкой | 5% |
Плюсы: Если ошибка некритичная, то пусть себе живет, когда-нибудь да исправят. Минусы: Могут никогда и не исправить. |
Запостить баг-репорт на drupal.ru | 5% |
Плюсы: Если с английским вообще туго, то единственная надежда. Минусы: Решение чужих проблем никого не интересует. |
Написать автору модуля об ошибке | 5% |
Плюсы: Очень редко, но можно получить вразумительную и толковую помочь от автора. Минусы: Автору будет лень даже читать такое письмо. Для ошибок есть Issues queue. |
Пропатчить модуль и жить с этим | 10% |
Плюсы: Ошибка исправлена. Минусы: Ошибка будет присутствовать в официальной версии и будоражить вас всякий раз, когда вы захотите проапдейтится. |
Запостить баг-репорт на drupal.org | 75% |
Плюсы: Правильно составленный багрепорт на drupal.org может быть гарантией решения. Минусы: Не панацея, если автор модуля занят/ленив. |
Максимально эффективный способ решения проблем с модулями:
Плюсы:
- 100% решение проблемы.
- Отсутствие проблемы в следующих версиях.
- Помощь сообществу.
Минусы:
- Нужно потратить время на все шаги.
#3 Я отправил bug-репорт, но мне никто не отвечает!
Такое бывает в двух случаях — или ваш bug-репорт составлен неправильно и на него никто не удосужился ответить, или вам просто некому ответить (бывает в случае модулей).
Правильный bug-репорт
Начнем с правильного bug-репорта. Он должен состоять из 4 частей — Описания, Шагов повторения, Ожидаемых результатов, Фактических результатов. Вот пример правильного bug-репорт:
Описание:
В многоязычных сайтах при отображении одноязычных нод, блок переключения языков показывает языки, перевод которых недоступен.Шаги повторения:
1. Настроить многоязычный сайт с двумя языками (en+ru).
2. Вынести блок переключения языков на экран.
3. Создать ноду на английском (без перевода).
4. Зайти в эту надо и посмотреть что отображается в блоке переключения языков.Ожидаемое:
В блоке присутствует ссылка на английскую версию, русский язык отключен.Фактический результат:
В блоке присутствуют обе ссылки.
По мотивам #518364.
Прекрасным дополнением к такому bug-репорту мог бы быть патч, исправляющий проблему.
Если никто не отвечает, а исправить нужно срочно
Вы можете не получать ответы и по другим причинам:
- Баг может быть некритичным, а у автора много других дел.
- Автор может отдыхать на Мальдивах.
- Автор мог возненавидеть Друпал и перейти на руби.
В любом случае, вы можете стать ко-майнтейнером, получить доступ в CVS-ветку этого модуля и исправить все самостоятельно. Для этого нужно создать тему "Co-maintainership" в issue queue модуля, и если в течение двух недель вам никто не ответит, вы сможете перенести эту ветку в раздел Drupal.org webmasters и администрация drupal.org сама одобрит ваше "усыновление" модуля.
#4 Помогайте решать проблемы
Вы можете возвысить себя в глазах автора, если закроете пяток открытых issues его модуля. Кроме того, в процессе вы можете найти большое количество полезных патчей, тем самым, помочь и самому себе.
#5 Будьте вежливыми
И напоследок, главное правило любого общения, будь то на концерте или в issues — будьте вежливыми и учтивыми, обращайтесь к людям по имени, предлагайте свою помощь и вскоре вас начнут узнавать и помогать в ответ.
via drupaldance.com
Комментарии
(Прошу прощения за оффтопик)
Вопрос: картинку с блок-схемой в стандартном графическом редакторе (фотошоп, файрфокс,..) делали или что-то более специфическое именно для этой цели?
Спасибо за четкую и грамотную заметку!
У меня сейчас как раз ситуация с передачей модуля. Ветка "Drupal.org infrastructure" объявлена deprecated (не рекомендуется). Из оставшегося я нашел более-менее подходящую ветку Modules development. Но админы там молчат как рыба об лед. То ли у них объявлено лето, то ли я что-то делаю не так.
Вся графика делалась в Visio.
Ветка форума — да. Но ветка issues жива-здорова — http://drupal.org/project/issues/infrastructure (обратите внимание на активность).
Ага, уже понял сам. По поводу передачи модуля (мой случай) вот эта инструкция рекомендует запросы размещать в issues ветки Drupal.org webmasters.
Как все непросто.
Да, Вадим, вы правы, исправил этот момент.
Вопрос патчи надо делать для последней версии семёрки из CVS?
А если баг только для шестёрки?
И вообще обязательно патч делать, нельзя просто написать исправленный код в сообщении или написать что-то типа "в таком-то файле, в такой-то функции, такая-то переменная никак не проверяется, возможны дыры в безопасности"?
Кстати, а что это за failed testing и вообще что это за сайт http://testing.drupal.org?
ой-ой-ой, что я там не то сделал, нажал "Request re-test" и подвердил, я то думал тест автоматический, а он похоже какой-то запрос на повторное тестирование оставил
и ваш первый патч стал желтым...
Сорри, надеюсь я там ничего не сломал)
Порядок коммита в ядро такой — 7.x, 6.x, 5.x.
Патчи для ядра в реальной жизни делаются в последовательности:
Это не относится к модулям, где все не так строго. В модулях, где ошибку нашли, для той версии патч и делайте (если сделали к остальным версиям — респект и уважуха, но это не обязательно).
Патч делать обязательно, если вам действительно важна судьба проблемы. Говорю это как майнтейнер. Чтобы проверить патч мне надо кликнуть мышкой два раза. Еще один клик — и исправление уже в CVS. С другой стороны, смотреть что и где вы там поменяли занимает время. К тому же, буквально со второго раза, вам самим быстрее делать патчи, чем объяснять на словах. Тем более, я уже делал мануал процесса патчинга, хотя судя по всему, его надо будет переснять по-человечески.
Статья по тестам — comming soon.
Эх, в случае с adminrole как раз имеем дело с "пропавшим автором"... А там есть достаточно важный баг: http://drupal.org/node/375954
А что,с gmap всё так плохо?
Я имел с ним опыт полгода назад. Опыт закончился самостоятельной реализацией. На сколько я знаю, это довольно популярное решение в отношении GMap. Может быть сейчас что-нибудь уже поменялось.
Здорово, я этого не знал. Спасибо.
Любо! В летописи!
Статья дельная, спасибо. Думаю нужно еще раз прочитать мануалы по патч мейкингу.
Вы писали модуль с нуля или по образу и подобию GMap? В моём случае, после долгих мучений при исправлении модуля была предпринята попытка написать с нуля. Получилось без глючно, но менее функционально. Например, так и не получилось добавить возможность загрузки в ShadowBox.
Спасибо за полезную статью!
Добавьте, пожалуйста, ссылки на drupal.org, где размещается самая свежая информация о правилах участия в разработке.
Как иногда приятно читать профессионала. Спасибо.
Мне понравилась фраза: "Убедитесь, что проблема действительно имеет место".
Это не баг, это фича