Организация проекта Django¶
Принципы¶
Проект Django управляется командой добровольцев, преследующих три цели:
- Руководство разработкой веб-фреймворка Django,
- Содействие развитию экосистемы программного обеспечения, связанного с Django-технологиями,
- Руководство сообществом Django в соответствии с ценностями, описанными в Кодексе поведения Django.
Проект Django не является юридическим лицом. Некоммерческая организация Django Software Foundation занимается финансовыми и юридическими вопросами, связанными с проектом Django. В остальном, Django Software Foundation позволяет Django Project управлять развитием фреймворка Django, его экосистемы и сообщества.
Слияния¶
Роль¶
Mergers - это небольшое количество людей, которые объединяют запросы на pull request в Django Git repository.
Прерогативы¶
Слияния имеют следующие прерогативы:
- Слияние любого запроса на исправление, который представляет собой minor change (достаточно маленький, чтобы не требовать использования DEP process). Слиятель не должен сливать изменение, автором которого является в первую очередь этот слиятель, если только запрос не был одобрен:
- другое слияние,
- член руководящего совета,
- член triage & review team, или
- член security team.
- Инициировать обсуждение незначительного изменения в соответствующем месте и попросить других слиятелей воздержаться от его слияния, пока идет обсуждение.
- требовать голосования руководящего совета по любому незначительному изменению, если, по мнению слияния, в ходе обсуждения не удалось достичь консенсуса.
- Запрос голосования руководящего совета, когда major change (достаточно значимый, чтобы потребовать использования DEP process) достигает одного из этапов реализации и предназначен для слияния.
Роль в проекте¶
The steering council выбирает Слияния по мере необходимости, чтобы поддерживать их количество на уровне не менее трех, чтобы распределить нагрузку и избежать перегрузки или истощения каждого отдельного Слияния. Верхний предел числа Слияний не установлен.
Это не обязательное условие, чтобы Merger был также Django Fellow, но Django Software Foundation имеет право использовать финансирование позиций Fellow как способ сделать роль Merger устойчивой.
На роль Слияния распространяются следующие ограничения:
- Лицо не может одновременно являться членом руководящего совета. В случае избрания в руководящий совет слияния, оно перестает быть слиянием сразу после вступления в руководящий совет.
- Один человек может одновременно выполнять функции Освободителя и Слияния.
Процесс отбора, когда возникает вакансия или когда руководящий совет считает необходимым выбрать дополнительных лиц на эту роль, происходит следующим образом:
- Любой член с хорошей репутацией на соответствующей дискуссионной площадке или совет Django Software Foundation, действующий с подачи стипендиального комитета DSF, может предложить кандидатуру на рассмотрение.
- Руководящий совет рассматривает поступившие предложения, после чего любой член руководящего совета официально выдвигает кандидата на эту роль.
- Руководящий совет проводит голосование по кандидатурам.
Участники слияния могут отказаться от своей роли в любой момент, но должны постараться уведомить об этом заранее, чтобы можно было подобрать замену. Прекращение контракта Django Fellow со стороны Django Software Foundation временно приостанавливает роль мерджера до того момента, когда руководящий совет сможет проголосовать по его кандидатуре.
В противном случае слияние может быть устранено путем:
- Дисквалификация в связи с избранием в руководящий совет.
- Дисквалификация из-за действий, предпринятых комитетом по соблюдению кодекса поведения Django Software Foundation.
- Голосование руководящего совета.
Релизеры¶
Роль¶
Релизёры - это небольшой круг людей, обладающих полномочиями загружать упакованные релизы Django на сайт Python Package Index и на сайт djangoproject.com.
Прерогативы¶
Releasers build Django releases и загрузите их на Python Package Index и на сайт djangoproject.com.
Роль в проекте¶
The steering council выбирает релизеров по мере необходимости, чтобы их число составляло не менее трех, чтобы распределить нагрузку и избежать перегрузки или истощения отдельного релизера. Верхнего предела числа релизеров не существует.
Не обязательно, чтобы релизер был также Django Fellow, но Django Software Foundation имеет право использовать финансирование позиций Fellow как способ сделать роль релизера устойчивой.
Один человек может одновременно выполнять функции Освободителя и Слияния.
Процесс отбора, когда возникает вакансия или когда руководящий совет считает необходимым выбрать дополнительных лиц на эту роль, происходит следующим образом:
- Любой член с хорошей репутацией на соответствующей дискуссионной площадке или совет Django Software Foundation, действующий с подачи стипендиального комитета DSF, может предложить кандидатуру на рассмотрение.
- Руководящий совет рассматривает поступившие предложения, после чего любой член руководящего совета официально выдвигает кандидата на эту роль.
- Руководящий совет проводит голосование по кандидатурам.
Освободители могут отказаться от своей роли в любое время, но должны постараться уведомить об этом заранее, чтобы можно было подобрать замену. Прекращение контракта Django Fellow со стороны Django Software Foundation временно приостанавливает его роль релизера до того момента, когда руководящий совет сможет проголосовать по его кандидатуре.
В противном случае Освободитель может быть удален путем:
- Дисквалификация из-за действий, предпринятых комитетом по соблюдению кодекса поведения Django Software Foundation.
- Голосование руководящего совета.
Руководящий совет¶
Роль¶
Руководящий совет - это группа опытных специалистов, которые:
- обеспечивать надзор за процессом разработки и выпуска Django,
- помогать в определении направления развития и выпуска функций,
- принимать участие в выполнении определенных ролей, и
- иметь право решающего голоса, когда другие процессы принятия решений не работают.
Их основной задачей является поддержание качества и стабильности Django Web Framework.
Прерогативы¶
Руководящий совет обладает следующими прерогативами:
- Принятие обязательного решения по любому вопросу, касающемуся технических изменений в Django.
- Наложение вето на слияние любого конкретного фрагмента кода в Django или распоряжение об отмене любого конкретного слияния или фиксации.
- Объявляется конкурс предложений и идей для будущего технического направления Django.
- Установление и корректировка графика релизов Django.
- Выбор и удаление слиятелей и освободителей.
- Участие в отстранении членов руководящего совета, если это будет сочтено целесообразным.
- Назначение выборов руководящего совета, помимо тех, которые проводятся автоматически, в тех случаях, когда руководящий совет считает выборы целесообразными.
- Участие в изменении управления Django (см. Изменение организации).
- Отказ от голосования по вопросу, который, по мнению руководящего совета, не созрел для принятия обязательного решения, или который, по мнению руководящего совета, выходит за рамки его полномочий.
- Принятие на себя руководства другими техническими командами в рамках проекта Django с открытым исходным кодом и соответствующее управление этими командами.
Роль в проекте¶
The steering council - это избранная группа из пяти опытных участников, которые демонстрируют:
- История существенного вклада в Django или экосистему Django. Эта история должна начинаться не менее чем за 18 месяцев до выдвижения кандидатуры в Руководящий совет и включать существенный вклад по крайней мере в двух из этих пунктов: - Внесение кода в проекты Django или основные пакеты сторонних разработчиков в экосистеме Django - Рассмотрение запросов на внесение изменений и/или обработка тикетов по проектам Django - Документация, учебники или сообщения в блогах - Обсуждение Django в списке рассылки django-developers или на форуме Django - Проведение мероприятий или групп пользователей, связанных с Django.
- История взаимодействия с направлением и будущим Django. Это не обязательно должно быть недавним, но кандидаты, которые не участвовали в этом в течение последних трех лет, должны продемонстрировать понимание изменений и направления развития Django в течение этих трех лет.
Новый состав совета избирается после каждого цикла выпуска Django. Процесс выборов происходит следующим образом:
- Руководящий совет поручает одному из своих членов письменно уведомить секретаря Django Software Foundation о начале выборов, а также об условиях, вызвавших их. Секретарь публикует в соответствующих местах - в списке рассылки django-developers и в Django forum - объявление о выборах и сроках их проведения.
- Как только объявляются выборы, DSF Board начинают период регистрации избирателей. Все individual members of the DSF автоматически регистрируются и не нуждаются в явной регистрации. Все остальные лица, которые считают себя имеющими право голоса, но еще не зарегистрировались, могут подать заявление в Совет ДФС о предоставлении им избирательных прав. Форма регистрации избирателей и список избирателей хранятся в Правлении DSF. Совет DSF может оспорить и отказать в регистрации избирателям, которые, по его мнению, регистрируются недобросовестно или, по его мнению, фальсифицировали свою квалификацию или иным образом не соответствуют требованиям.
- Регистрация избирателей заканчивается через неделю после объявления выборов. В этот момент начинается регистрация кандидатов. Зарегистрироваться в качестве кандидата может любое квалифицированное лицо. Регистрационная форма и реестр кандидатов хранятся в Правлении ФДБ, и при регистрации кандидаты должны предоставить доказательства своей квалификации. Совет ДСФ может оспорить и отказать в регистрации кандидатам, которые, по его мнению, не соответствуют требованиям, предъявляемым к членам Координационного совета, или которые, по его мнению, регистрируются недобросовестно.
- Регистрация кандидатов заканчивается через неделю после ее открытия. Через неделю после окончания регистрации кандидатов секретарь DSF публикует список кандидатов в списке рассылки django-developers и в Django forum, и начинаются выборы. Совет DSF предоставляет форму для голосования, доступную зарегистрированным избирателям, и является хранителем голосов.
- Голосование проводится путем тайного голосования с использованием списка кандидатов и любых соответствующих материалов, касающихся кандидатов, в случайном порядке. Каждый избиратель может проголосовать не более чем за пять кандидатов в бюллетене.
- Выборы завершаются через неделю после их начала. Затем Совет DSF подсчитывает голоса и составляет сводку, включающую общее количество поданных голосов и количество голосов, полученных каждым кандидатом. Эти итоги утверждаются большинством голосов членов Совета DSF, после чего секретарь DSF публикует их в списке рассылки django-developers и на форуме Django. Пять кандидатов, набравших наибольшее количество голосов, сразу же становятся новым руководящим советом.
Член руководящего совета может быть исключен из его состава путем:
- Дисквалификация из-за действий, предпринятых комитетом по соблюдению кодекса поведения Django Software Foundation.
- Определение о том, что они не обладают квалификацией члена управляющего совета. Это определение должно быть вынесено совместно другими членами управляющего совета и DSF Board. Действительное определение неправомочности требует, чтобы все остальные члены управляющего совета и все члены правления DSF, которые могут голосовать по данному вопросу (пострадавшее лицо, если оно является членом правления DSF, не должно голосовать), проголосовали «за» предложение о том, что данное лицо неправомочно.
Изменение организации¶
Изменения в этом документе требуют использования DEP process, с изменениями, описанными в DEP 0010.