Организация проекта 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 с открытым исходным кодом и соответствующее управление этими командами.
Роль в проекте¶
The steering council - это избранная группа из пяти опытных участников, которые демонстрируют:
- История существенного вклада в Django или экосистему Django. Эта история должна начинаться как минимум за 18 месяцев до выдвижения кандидатуры в Руководящий совет и включать существенный вклад, по крайней мере, в два из этих пунктов:
- Добавление кода в проекты Django или основные сторонние пакеты в экосистеме Django
- Просмотр запросов на извлечение и/или сортировка заявок на проект Django
- Документация, учебные пособия или записи в блоге
- Обсуждения о Django на форуме Django
- Запуск событий или групп пользователей, связанных с Django
- История взаимодействия с направлением и будущим Django. Это не обязательно должно быть недавним, но кандидаты, которые не участвовали в этом в течение последних трех лет, должны продемонстрировать понимание изменений и направления развития Django в течение этих трех лет.
Новый состав совета избирается после каждого цикла выпуска Django. Процесс выборов происходит следующим образом:
- Руководящий совет поручает одному из своих членов письменно уведомить секретаря Django Software Foundation о проведении выборов и условиях, которые их инициировали. Секретарь должен отправить сообщение в соответствующее место - Django Forum, чтобы объявить о проведении выборов и сроках их проведения.
- Как только объявляются выборы, DSF Board начинают период регистрации избирателей. Все individual members of the DSF автоматически регистрируются и не нуждаются в явной регистрации. Все остальные лица, которые считают себя имеющими право голоса, но еще не зарегистрировались, могут подать заявление в Совет ДФС о предоставлении им избирательных прав. Форма регистрации избирателей и список избирателей хранятся в Правлении DSF. Совет DSF может оспорить и отказать в регистрации избирателям, которые, по его мнению, регистрируются недобросовестно или, по его мнению, фальсифицировали свою квалификацию или иным образом не соответствуют требованиям.
- Регистрация избирателей заканчивается через неделю после объявления выборов. В этот момент начинается регистрация кандидатов. Зарегистрироваться в качестве кандидата может любое квалифицированное лицо. Регистрационная форма и реестр кандидатов хранятся в Правлении ФДБ, и при регистрации кандидаты должны предоставить доказательства своей квалификации. Совет ДСФ может оспорить и отказать в регистрации кандидатам, которые, по его мнению, не соответствуют требованиям, предъявляемым к членам Координационного совета, или которые, по его мнению, регистрируются недобросовестно.
- Регистрация кандидатов завершается через неделю после ее начала. Через неделю после завершения регистрации кандидатов секретарь DSF публикует список кандидатов в Django Forum, и выборы начинаются. Правление DSF предоставляет форму для голосования, доступную зарегистрированным избирателям, и является хранителем голосов.
- Голосование проводится путем тайного голосования с использованием списка кандидатов и любых соответствующих материалов, касающихся кандидатов, в случайном порядке. Каждый избиратель может проголосовать не более чем за пять кандидатов в бюллетене.
- Выборы завершаются через неделю после их начала. Затем правление DSF подсчитывает голоса и составляет итоговый документ, включающий общее количество поданных голосов и количество, полученное каждым кандидатом. Это резюме утверждается большинством голосов Правления DSF, а затем публикуется секретарем DSF на странице Django Forum. Пять кандидатов, набравших наибольшее количество голосов, немедленно становятся членами нового руководящего совета.
Член руководящего совета может быть исключен из его состава путем:
- Дисквалификация из-за действий, предпринятых комитетом по соблюдению кодекса поведения Django Software Foundation.
- Определение о том, что они не обладают квалификацией члена управляющего совета. Это определение должно быть вынесено совместно другими членами управляющего совета и DSF Board. Действительное определение неправомочности требует, чтобы все остальные члены управляющего совета и все члены правления DSF, которые могут голосовать по данному вопросу (пострадавшее лицо, если оно является членом правления DSF, не должно голосовать), проголосовали «за» предложение о том, что данное лицо неправомочно.
Изменение организации¶
Изменения в этом документе требуют использования DEP process, с изменениями, описанными в DEP 0010.