Как подготовить проект для публикации на drupal.org

Спустя долгих 6 месяцев, мой модуль все-таки пропустили на Drupal.org и с сегодняшнего дня я могу беспрепятственно публиковать модули без песочницы.

К сожалению, информации по данному опыту я в свое время не нашел в рунете. На одну все же я наткнулся, но там был под Drupal 6, а с тех пор все перелопатили. Проще говоря, это был какой-то локальный ад и я его совсем не ожидал. Поэтому решил написать рекомендательную статью наполненную советами о решение проблем, с которыми я лично столкнулся за время прохождения из песочницы в Full Project.

1. Отладьте проект перед подачей заявки

Прежде чем открывать Issue на проверку, отладьте модуль у себя на локальной машине, либо в песочнице, либо на гитхабе, где вам удобнее. Тем меньше проблем вы наберетесь в будущем. Создавайте Issue только тогда, когда считаете что все сделали правильно.

2. Не торопитесь, времени просто немерено

Если раньше запостите запрос на проверку, то быстрее получите подтверждение — это совершенно не так. У некоторых модули проверяют по несколько лет, будьте готовы к тому, что модуль может получить подтверждение спустя длительное время. И тут очень много влияющих на это факторов, многие которые от вас вообще не зависят. Я последние 2 месяца вообще ничего с модулем не делал, не коммитил, никто ничего не писал и тут бац, сообщение, что нужно кое-что заменить и я получу разрешение на финальную проверку. После выполнения данного требования я сразу же получил статус «reviewed & tested by the community». Считайте его «мини победой» и что вы уже поймали удачу за хвост.

3. Готовьтесь морально к худшему

Многих, вполне могут расстроить сообщения о необходимости перелопатить пол модуля. Готовьтесь заранее. Маловероятно что вы сможете написать свой первый модуль для Drupal.org с первого дыхания. Вы будите фиксить, другие находить новые баги, вы будите фиксить их, а в них еще и т. д. по кругу, и все это будет продолжаться до идеала.

4. Будьте на шаг впереди проверяющих

Изначально пишите код в соответствии со всеми стандартами Drupal. Элементарно лишний пробел может стать причиной заставить вас править его, а затем опять ждать неведомое количество времени следующей проверки. Проверка кода на стандарты происходит при помощи онлайн-парсера. Чтобы проверить им необходимо иметь песочницу и после каждого коммита или вашего запроса на проверку происходит проверка на сайте. Если он выдает ошибки — считайте не пройдете. Я писал гайд как проверять этим парсером у себя локально, так что вооружитесь им, быстрее, меньше возни с коммитами где надо сдвинуть всего пробел.

5. Код, код и еще раз код

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

По началу могут и не докапываться, но перед финишной прямой докапаются 100% до пространства имен (namespaces). Они должны совпадать с названием модуля.

Пример на себе. Изначально я думал запилить модуль по адресу project/gb. Модуль назвал Geo Block, и соответственно файлы были названы gb.info, gb.module и функции соотвественно. Оказывается надо чтобы все это было идентично, а адрес можно задать какой хотите перед релизом. В итоге пришлось все gb менять на geo_block. Ввиду того что модуль не большой, то проблем не вызвало, а если вы делаете его большим и навороченным изначально, это добавит гемора однозначно.
Также все публичные переменные должны быть с приставкой модуля. Все также на моем модуле, я передавал в JS параметр города в переменную user_city, пришлось переделывать на geo_block_user_city. Я не думаю что стоит объяснять почему, но почему-то это для меня не было очевидным во время написания модуля, а уже прошаренные ребята быстро заметили ошибку.

Ваш модуль проверяют в первую очередь на код. Соответственно его читают, в прямом смысле слова, и проверяют его именно чтением, а уже затем практическим применением. Из этого следует вывод, что делайте комментарии так, как бы вы хотели читать комментарии чужого кода. Ибо человек совершенно не знает как у вас все работает и понимание приходит только из комментариев.

А также...

Это лишь минимум с чем я столкнулся во время проверки. А там еще куча подводных камней. Во-первых, существует всего пара человек которые могут реально выдать права на полный проект, поэтому до их прихода необходимо вычистить код до идеала.

Получение прав на публикацию модуля производиться единоразово. Если вы уже пропихнули свой модуль или тему ранее, дальше вы можете публиковать сколько хотите других модулей и тем без этой адовой проверки.

Вам будут предлагать, и скорее всего первое что вы увидите, это предложение поучаствовать в добровольной программе по помощи в проверке. Если вы проверите чужие три модуля, то придет один из самых главных и проверит ваш. И если он найдет у вас ошибки, вам надо будет их исправить и сделать еще 3 код ревью чужих модулей чтобы он вернулся. Но я этого не делал. Делайте если есть желание, хотя я уже пару дней назад начал подумывать насчет этого.

Данные проверки нацелены на отсеивание «слабаков» и говнокодеров, и это хорошо проглядывается так как у всех докапываются до смешных ошибок, но зато если человек выдержит и дойдет до конца, он получит ценный опыт в написании модулей, который не получить просто катая модули на досуге, ну а подарок — возможность публикации модулей на офф ресурсе. Я могу с уверенностью сказать по себе, что я очень много узнал нового и полезного из проверки, а также настолько привык, что я теперь уже машинально пишу код по всем стандартам.

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

И небольшой секрет

А секрет этой проверки я открыл для себя лишь сегодня, когда мой статус проверки перевели на финишную прямую. Пользуйтесь IRC! Заходите на официальный друпаловский irc, а там в канал #drupal-contribute. Там сидят те самые шишки которые дают одобрение на фул проект.

После того как мой проект перевели в финальный статус, я не мог понять что делать дальше. Кнопки публикации не появилось, ничего не ясно, зашел туда и спросил, и мне сначала отписал один человек что вроде у меня все ок, много проверок и код в поряде, а потом еще один, буквально через минуту, отписал что поздравляет с получением прав на пубилкацию проектов. Я не понял сначала что он пишет, так как я буквально секунд за 10-15 до этого перезагрузил страницу и все было по прежнему, а перезагрузив еще раз, увидел что отписался он и статус перевели в «fixed» (это финиш) и я увидел кнопку публикации проекта.

Так что делайте шумиху о своем модуле в IRC, просите там помочь в проверке, а учитывая что этот чат прочесывают те, от кого все зависит, это только вам на руку что вы светитесь, и возможно, вы получите подтверждение быстрее. По крайней мере вы получите дельные советы.

Ну и удачи вам с публикацией первых модулей.

Комментарии

Андрей
пн, 28/01/2019 - 19:40

Никита, добрый день! Я портировал модуль christmas_lights под Drupal 8. Хочу отправить его на Drupal.org, но не догоняю как это сделать. Вычитал, что надо открыть issue и вложить туда patch с моими доработками. Нет ли обычного способа это сделать - чтоб я склонировал репозиторий проекта, сделал свою ветку и отправил pull request, как на github? Ведь я же вижу, что много разработчиков пушат свои коммиты в разные модули. Неужели они это делают через patch-вложение к issue?

Niklan
пн, 28/01/2019 - 20:06

Всё верно, открывается ишью и вкладывается патч. Это и есть обычный способ, гитхабы и прочее уже надстраивают свой интерфейс над этим, но по факту оно так и работает под капотом. Просто на drupal.org нету такого понятия как форки, пул-реквесты и т.д. Всё это, скорее всего, появится с переездом на GitLab, но когда это случится неизвестно. И первое время точно не будет работать.

Андрей
вт, 29/01/2019 - 10:16

Thanks a lot, bro! Прочитал/проглядел весь твой блог, как книгу. Затратил, скорее, инвестировал - 12ч55мин. Видосы не смотрел - слишком дорого. Делай уже книжку из него)

Добавить комментарий

Поддерживается Markdown
Поделиться