Код и управление проектами

Мы используем наш GitHub project для управления как кодом django CMS, так и деятельностью по разработке.

Этот документ описывает, как мы управляем тикетами на GitHub. Под «тикетами» мы подразумеваем проблемы и запросы на вытягивание на GitHub (на самом деле, с точки зрения GitHub, запросы на вытягивание - это просто разновидность проблемы).

Вопросы

Поднятие вопроса

Внимание

Если вы считаете, что обнаружили проблему безопасности в нашем коде, пожалуйста, сообщите о ней частным образом, написав нам по адресу security@divio.com.

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

За исключением вопросов безопасности, конечно, вы можете поднимать вопросы любым удобным для вас способом - using Discourse, or the Slack group или лично, если вы случайно встретите другого разработчика django CMS.

Однако очень полезно, если вы не просто поднимаете проблему, упоминая о ней людям, но и действительно подаете ее, а это означает создание new issue on GitHub.

Создание хорошего отчета о выпуске - это целое искусство.

Заголовок Title должен быть кратким и информативным. «show_sub_menu отображает неправильные узлы при использовании с soft_root» полезно, в то время как «Меню сломано» - нет.

В Описании вашего отчета мы хотели бы видеть:

  • как воспроизвести проблему

  • что вы ожидали, что произойдет

  • что произошло (часто полезен трассировочный откат, если вы его получили)

Получение одобрения вашего выпуска

Другие разработчики django CMS увидят ваш вопрос и смогут прокомментировать его. Разработчик ядра может добавить дополнительные комментарии, или label.

На этом этапе важно, чтобы ваша проблема была принята. Это означает, что мы согласились с тем, что это действительно проблема, и она представляет собой что-то, что мы можем или готовы сделать в CMS.

Вас могут попросить предоставить дополнительную информацию, прежде чем вопрос будет принят, и, возможно, состоится обсуждение. Она также может быть отклонена как non-issue (на самом деле это не проблема) или won’t fix (решение вашего вопроса выходит за рамки проекта или несовместимо с другими нашими целями).

Не стесняйтесь объяснить, почему вы считаете решение об отклонении вашего вопроса неверным - очень немногие решения являются окончательными, и мы всегда рады исправить наши ошибки.

Как мы обрабатываем билеты

Билеты должны быть:

  • дано status

  • помечены needs

  • отмеченный добрым

  • отмечены компоненты, к которым они применяются

  • помечены miscellaneous other labels

  • прокомментировал

Самыми важными являются статус и потребности билета. Они говорят нам о двух ключевых вещах:

  • статус: на какой стадии находится билет

  • потребности: какие дальнейшие действия необходимы для продвижения вперед

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

Интерфейс GitHub означает, что у нас нет другого выбора, кроме как использовать цвета для идентификации наших тикетов. Мы сожалеем об этом. Мы старались использовать цвета, которые вызовут меньше всего проблем у дальтоников, поэтому мы не используем зеленые (поскольку мы используем красный) или желтые (поскольку мы используем синий) метки, но мы понимаем, что это не идеально.

Правила системы обработки билетов django CMS

  • один и только один статус должен быть применен к каждому билету

  • здоровый билет (синий) **не может иметь ни одного critical needs (красный)

  • при закрытии билеты должны иметь либо здоровый (синий), либо мертвый (черный) статус

  • билет с меткой critical needs не должен иметь меток non-critical needs или miscellaneous other

  • Метки has patch и on hold подразумевают связанный запрос на притяжение, который **должен быть связан, когда эти метки применяются

  • компонент, метки non-critical need и miscellaneous other должны применяться по мере необходимости

Статус

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

В принципе, хорошо, когда открытые билеты здоровые (синие), потому что это означает, что они куда-то идут.

Важно

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

вопросы

Планка для status: accepted высока. Статус может быть отменен в любое время, и должен быть отменен, когда это необходимо. Если вопрос требует design decision, expert opinion или more info, он не может быть принят.

запросы на поставку

Когда запрос на исправление принимается, он должен стать work in progress или (реже) ready for review или даже ready to be merged, в тех редких случаях, когда к нам попадает идеально сформированный и не подлежащий улучшению запрос на исправление. Что касается проблем, если они требуют design decision, expert opinion или more info, они не могут быть приняты.

Ни один вопрос или запрос на исправление не может иметь одновременно синий (принят) и красный, серый или черный ярлык..

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

Не следует позволять тикетам с критическими (красными) потребностями затягиваться на неопределенное время. Если мнения или информация, необходимые для принятия билета, не поступают, билет должен быть объявлен нездоровым (серым) с marked for rejection и отклонен (черным) в следующем релизе.

Требуется

Критические потребности (красный цвет) влияют на статус.

Пометки Некритические потребности (розовые) могут быть добавлены по мере необходимости (и, конечно, удалены по мере продвижения работы) к запросам на доработку.

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

Виды и компоненты

Разумеется, это несколько непостоянные категории. Например, не всегда абсолютно ясно, представляет ли запрос на исправление или улучшение, а тикеты могут относиться к нескольким частям CMS - так что делайте с ними все, что можете.

Другие метки

Метки backport, blocker, has patch или easy pickings должны быть нанесены, в зависимости от ситуации, только на здоровые (синие) билеты.

Комментарии

Конечно, в любое время люди могут прокомментировать билет. Хотя изменять метки могут только сопровождающие ядра, любой может предложить изменить метку.

Ссылка на этикетку

Компоненты и виды должны быть понятны, но statuses, needs и miscellaneous other labels поясняются ниже.

Статусы

Статус билета - это его положение в конвейере - его точка в нашем рабочем процессе.

У каждого вопроса должен быть статус, и он должен быть присвоен как можно скорее. Каждый вопрос должен иметь только один статус.

Многие из этих статусов одинаково хорошо применимы как к проблемам, так и к запросам, но некоторые имеют смысл только для одного или другого:

принято

(только вопросы) Вопрос принят как реальная проблема, требующая решения. Обратите внимание, что это не обязательно означает, что мы сделаем то, что предлагается в вопросе, если это предложение - просто мы согласны с тем, что существует проблема, которую необходимо решить.

не вопрос

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

При применении этой метки необходимо дать пояснение в комментарии.

не исправит

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

При применении этой метки необходимо дать пояснение в комментарии.

помеченный для отказа

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

При применении этой метки необходимо дать пояснение в комментарии.

незавершённая работа

(только запросы на исправление) Работа продолжается.

Автор заявки должен включить «(work in progress)» в ее заголовок и удалить его, когда посчитает, что она готова к окончательному рассмотрению.

готово к рассмотрению

(только для запросов на объединение) Запрос на объединение должен быть рассмотрен. (Любой может просмотреть его и сделать комментарии, рекомендующие объединить его (или вообще предпринять какие-либо дальнейшие действия), но только сопровождающий ядра может изменить метку).

готовы к объединению

(только для запросов на слияние) Запрос на слияние успешно прошёл проверку. Сопровождающие ядра не должны помечать свой собственный код, за исключением самых простых случаев, как готовый к слиянию, также они не должны помечать какой-либо код как готовый к слиянию и затем сами сливать его - в процессе должен участвовать другой человек.

Когда запрос на исправление будет объединен, метка должна быть удалена.

Требуется

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

Критические потребности

Критические потребности (красный цвет) означает, что билет «нездоров» и не будет accepted (проблемы) или work in progress, ready for review или ready to be merged, пока эти потребности не будут устранены. Другими словами, ни один билет не может иметь как синюю, так и красную метку).

дополнительная информация

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

мнение экспертов

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

проектное решение

Проблема или запрос на вытягивание имеет более глубокие последствия для CMS, которые должны быть тщательно рассмотрены, прежде чем мы сможем продолжить работу.

Некритические потребности

Здоровый (синий) билет может иметь некритические потребности:

патч

(только проблемы) Проблема получила статус: принята, но теперь кто-то должен написать патч для ее решения.

тесты
документы

(только для запросов) Код без документации и тестов?! В django CMS? Ни за что!

Другое

имеет заплату

(только для проблем) Существует исправление, предназначенное для решения проблемы. Это не означает, что патч будет принят, и даже не означает, что он содержит жизнеспособное решение.

Когда применяется эта метка, комментарий должен содержать перекрестную ссылку на запрос(ы), содержащий(ие) исправление.

лёгкая добыча

Проблема, которую легко исправить, или запрос на исправление - новичкам в разработке django CMS рекомендуется заниматься легкодоступными тикетами.

блокиратор

Мы не можем выпустить следующий релиз, не решив эту проблему.

backport

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

в режиме ожидания

(только для заявок на вытягивание) Заявка на вытягивание должна подождать, пока не появится более приоритетная заявка на вытягивание, чтобы избежать сложного слияния или дополнительной работы в дальнейшем. Любой отложенный запрос на вытягивание по определению work in progress.

Когда применяется эта метка, комментарий должен содержать перекрестную ссылку на другой запрос (запросы).

Вернуться на верх