Skip to content
This repository has been archived by the owner on Mar 25, 2019. It is now read-only.

Правила и стандарты ведения проекта Drupal.ru

avakorin edited this page Jul 1, 2018 · 15 revisions

Секции*:


Свод**:

  • Перед подачей 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.
  • Запрещается производить автоматическую стилизацию кода в существующей кодовой базе (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, копирайтеры и пр.) осуществляется по предпочтению тимлидов и администрации направления.
  • Голоса, отданные при помощи эмоджи 👍 и 👎 без размещения комментария, не учитываются.

  • * Предложить свои секции и подсекции можно в ISSUE.
  • ** Предложить свои правила и принципы можно в ISSUE
Clone this wiki locally