-
Notifications
You must be signed in to change notification settings - Fork 22
Правила и стандарты ведения проекта Drupal.ru
- Ведение задач (ISSUES)
- Стандарты реализации / кодирования
- Отправка / Прием Pull Request'ов
- Реализация локальных задач
- Модерация
-
Прочее
- описание методов и принципов сотрудничества с участниками не касающихся коддинга (дизайнеры, SEO, копирайтеры и пр.)
- Перед подачей ISSUE необходимо ознакомится с уже существующими, возможно такое (или косвенное) уже есть.
- ISSUE обязательно должно касаться функционирования программной части проекта Drupal.ru! Любые обсуждения, напрямую не касающиеся вопроса могут быть расценены как флуд.
- В одном ISSUE следует обсуждать только один функциональный момент, или несколько разных моментов завязанных на 1 функционал. Не нужно составлять мультизадачи по решению всего!
- ISSUE должно содержать точное описание проблемы и перечень шагов, в соответствии с которыми проблему возможно воспроизвести. По возможности, должны быть приложены скриншоты / схемы. Старайтесь описать максимально понятными терминами, не стесняйтесь расписывать в мельчайших деталях "как детям" - то что понятно одному человеку, может быть совершенно непонятно другому.
- Желательно, прилагать к ISSUE варианты решения проблемы. Это могут быть PR'ы, патчи, фрагменты кода, описание алгоритма решения проблемы, предположения о причинах проблемы и т.п. Если Вы не уверены, или не обладаете навыками для решения проблемы - укажите это в ISSUE, чтоб другие участники могли предлагать свои решения.
- Будьте вежливыми. Не используйте "нецензурную" лексику, не высказывайте свои недовольства и не пишите ISSUE в формате претензии. Здесь все трудятся исключительно на добровольных началах.
- Если автор ISSUE не является автором идеи - обязательно необходимо указать автора, ссылаясь на его профиль (на аккаунт GitHub, Drupal.ru, Drupal.org или любой другой, с помощью которого можно идентифицировать автора).
- Заголовок ISSUE должен:
- отражать суть задачи.
- содержать призыв к действию (начинаться с побудительного глагола):
- Добавить ...
- Исследовать ...
- Решить ...
- Внедрить ...
- ...
- Заголовок ISSUE не может содержать ругательств и оскорблений.
- Рекомендуемая длина заголовка - не более 60ти символов.
- На основании данных данных рекомендаций, команда разработчиков имеет право переименовать любой ISSUE для приведения в соответствие с данными рекомендациями.
- Оставляйте комментарии по делу. Если Ваш комментарий не касается вопроса напрямую - он может быть расценен как флуд.
- Пункт о вежливости при составлении ISSUE касается и комментирования, в той же степени.
- Для внедрения нового или отключения старого функционала, а так же для сбора среза мнений по поводу любых функций ресурса - можно разворачивать небольшие опросы (голосования) в ISSUE.
- Голосование ЗА и ПРОТИВ осуществляется путем оставления реакций на топ или комментарий. 👍 == ЗА | 👎 == ПРОТИВ.
- Голосование можно развернуть в любом ISSUE. Оно должно напрямую относиться к текущему ISSUE и вопросам связанным с ним.
- В топе / комментарии с опросом допускается предложение о голосовании только единого вопроса, трактовка которого может иметь только одно значение! Вопрос должен быть поставлен корректно, ответ на вопрос должен четко выражать позицию голосующих (ДА / НЕТ | ЗА / ПРОТИВ и т.п.)
- Любое подобное голосование не может считаться высшей инстанцией и быть решающим моментом в принятии решении. Это всего лишь сбор мнений на счет конкретного момента.
- Итоговое решение о принятии или отклонении функционала заявленного в опросе принимает тимлид. Тимлид не может отклонить решение, набравшее большинство голосов, без детального описания причин отклонения (проблемы архитектуры, конфликт с другим issue, потенциальная уязвимость и т.п.).
- Срок в две недели, по истечении которого, перевес голосования в 60% считается достаточным основанием для принятия решения обсуждаемой задачи.
- Реализация функционала представленного в ISSUE распределяется на добровольных основах. Каждый может взяться за реализацию любого открытого ISSUE, у которого нет исполнителя или исполнитель которого просрочил реализацию.
- Для назначения на исполнение ISSUE необходимо выразить свою инициативу, например в комментарии к ISSUE, или связавшись с администраторами проекта любым удобным способом.
- Сроки реализации ISSUE обговариваются с их реализаторами и отображаются (помечаются) на текущих линейках проекта.
- При написании дополнительного функционала (модулей, тем оформления, библиотек и прочего кодового актива) следует руководствоваться стандартами кодирования PSR. В частности PSR-2 и PSR-4.
- Дополнительно, нужно учитывать общепринятые стандарты кодирования Друпал, описанные на Drupal.org.
- Запрещается производить автоматическую стилизацию кода в существующей кодовой базе (
Shift
+Ctrl
+L
в PHPStorm и аналоги в других IDE, автолинтерах и системах CI). Например, в случае доработки функционала существующих темы или модуля. У всех могут быть различные настройки автостилизации кода. Этот пункт позволяет не отображать 90% изменений в оформлении кода, при реально правленной 1й строке. - Предпочтительно, использовать краткий способ объявления массивов.
- Использование символов отличных от латиницы в переводимых строках - запрещено.
- Комментарии классов, методов и функций - обязательно.
- Запрещено комментирование на языках отличных от английского.
- Спорные моменты не вошедшие в текущие правила, можно решить с координаторами проекта.
- При наименовании коммитов следует придерживаться следующего шаблона:
issue #{id}: {title}
, где:-
{id}
- ID (номер) Issue в рамках которого реализуется задача -
{title}
- Заголовок Issue в рамках которого реализуется задача
-
- Прием и принятие Pull Request'ов осуществляется группой тимлидов проекта.
- Сроки рассмотрения PR'ов не должны превышать одну неделю.
- Причиной отказа и основанием для отправки PR на доработку может служить не соответствие любому из текущих правил.
- Ревьюинг и проверку кода может осуществить любой участник сообщества, с обязательной перепроверкой ответственных тимлидов.
Под "локальными задачами" стоит понимать функционал имеющий отношение исключительно к проекту DrupalRu.
Также, с их помощью можно решать следующие задачи:
- Локальное обновление БД
- Установка и отключение модулей
- Внедрение локального функционала (не заслуживающего отдельного модуля)
- Добавление и редакции переводов
Локальные задачи могут быть реализованы в специализированном модуле drurum, текущей теме оформления druru, или в установочном профиле drupalru.
При определении необходимости реализации функционала как локальной задачи, следует руководствоваться следующими пунктами:
- Добавление/обновление функционала для локальных модулей (1, 2) должны быть реализованы в них.
- Если функционал возможно инкапсулировать - он должен быть вынесен в отдельный модуль.
- Если функционал касается исключительно оформления - он должен быть реализован в теме.
- Крайне рекомендуется выносить на обсуждение добавление нового функционала (не касающегося обовлений/инсталлов/деинсталлов).
Перед коммитами и подачей Pull Request'а, в обязательном порядке, необходимо актуализировать текущую версию репозитория и разрабатываемой ветки!
Это связанно с текущей моделью ведения проекта (стратегия Rebase & Merge
).
Так же, это позволит предотвратить конфликты вызванные использованием одинаковых хуков обновления (hook_update_N
).
- Issue и комментарии не о функционировании программной части проекта (включая флуд, флейм, обсуждение модерации, действий и личных/профессиональных качеств контрибьюторов, тимлидов и координатора) будут удалены без предупреждения.
- Авторы issue и комментариев (не контрибьюторы), нарушившие правила, будут забанены бессрочно без предупреждения.
- Контрибьюторы и участники команды, нарушившие правила более трех раз, будут забанены бессрочно.
- В случае трехкратного нарушения тимлидом/координатором, ему будет предложено добровольно сложить свои полномочия. В случае отказа на drupal.ru должен быть размещен пост с публичным обсуждением действий тимлида/координатора с голосованием за отставку.
- Сотрудничество с участниками не касающимися коддинга (дизайнеры, SEO, копирайтеры и пр.) осуществляется по предпочтению тимлидов и администрации направления.
- Голоса, отданные при помощи эмоджи 👍 и 👎 без размещения комментария, не учитываются.