Управление проектом SciPy#

Цель этого документа — формализовать процесс управления, используемый проектом SciPy как в обычных, так и в чрезвычайных ситуациях, и прояснить, как принимаются решения и как взаимодействуют различные элементы нашего сообщества, включая взаимосвязь между открытой совместной разработкой и работой, которая может финансироваться коммерческими или некоммерческими организациями.

Проект#

Проект SciPy (Проект) — это проект программного обеспечения с открытым исходным кодом. Целью Проекта является разработка программного обеспечения с открытым исходным кодом для научных вычислений на Python, и, в частности, scipy пакет. Программное обеспечение, разработанное Проектом, выпускается под лицензией BSD (или аналогичной) с открытым исходным кодом, разрабатывается открыто и размещается в публичных репозиториях GitHub под scipy Организация GitHub.

Проект разрабатывается командой распределенных разработчиков, называемых Участниками. Участники — это лица, внесшие код, документацию, дизайн или другую работу в Проект. Любой может стать Участником. Участники могут быть связаны с любым юридическим лицом или не быть связаны ни с одним. Участники участвуют в проекте, отправляя, рецензируя и обсуждая Pull Requests и Issues на GitHub, а также участвуя в открытых и публичных обсуждениях Проекта на GitHub, форумах и других каналах. Основой участия в Проекте являются открытость и прозрачность.

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

Проект не является юридическим лицом и в настоящее время не имеет формальных отношений с юридическими лицами.

Управление#

В этом разделе описывается модель управления и руководства Проектом.

Основы управления проектом:

  • открытость и прозрачность

  • активный вклад

  • институциональный нейтралитет

Традиционно руководство проектом осуществлялось подмножеством участников, называемых основными разработчиками, чьи активные и последовательные вклады были признаны предоставлением им «прав на коммит» в репозитории проекта на GitHub. В целом, все решения по проекту принимаются на основе консенсуса среди основных разработчиков с учётом мнения сообщества.

Хотя этот подход хорошо служил нам, по мере роста Проекта мы видим необходимость в более формальной модели управления. Основные разработчики SciPy выразили предпочтение модели лидерства, включающей BDFL (Bлагожелательного Диктатора на всю Жизнь). Поэтому, двигаясь вперёд, руководство Проекта будет состоять из BDFL и Руководящего совета.

BDFL#

Проект будет иметь BDFL (Benevolent Dictator for Life), которым в настоящее время является Паули Виртанен. Как Диктатор, BDFL имеет право принимать все окончательные решения для Проекта. Как Благожелательный, BDFL на практике предпочитает делегировать это право консенсусу каналов обсуждения сообщества и Совету управляющих (см. ниже). Ожидается, и в прошлом так и было, что BDFL будет редко использовать свое окончательное право. Поскольку оно используется редко, мы называем окончательное право BDFL «особым» или «переопределяющим» голосом. Когда это происходит, переопределение BDFL обычно происходит в ситуациях, когда в Совете управляющих возникает тупик или если Совет управляющих просит BDFL принять решение по конкретному вопросу. Чтобы обеспечить благожелательность BDFL, Проект поощряет других форкать проект, если они не согласны с общим направлением, которое выбирает BDFL. BDFL может делегировать свое право на конкретное решение или набор решений любому другому члену Совета по своему усмотрению.

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

Обратите внимание, что BDFL может уйти в любой момент и, действуя добросовестно, также прислушается к серьёзным призывам сделать это. Также обратите внимание, что BDFL — это скорее роль для принятия резервных решений, а не роль директора/генерального директора.

Руководящий совет#

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

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

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

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

  • Принимайте решения об общем объеме, видении и направлении проекта.

  • Принимать решения о стратегических сотрудничествах с другими организациями или частными лицами.

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

  • Принимать решения о Сервисах, управляемых Проектом, и управлять этими Сервисами на благо Проекта и Сообщества.

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

  • Обновить политические документы, такие как этот.

Членство в совете#

Чтобы стать кандидатом в члены Руководящего совета, человек должен быть Участником проекта, который внес вклад, существенный по качеству и количеству, и поддерживаемый в течение как минимум одного года. Потенциальные члены Совета номинируются существующими членами Совета и голосуются существующим Советом после выяснения, заинтересован ли потенциальный член и готов ли служить в этой роли. Совет будет первоначально сформирован из числа существующих основных разработчиков, которые, по состоянию на январь 2017 года, были значительно активны в течение последних двух лет.

При рассмотрении потенциальных членов Совет будет оценивать кандидатов с комплексным учетом их вклада. Это будет включать, но не ограничиваться, кодом, ревью кода, работой с инфраструктурой, участием на форумах и в чатах, помощью сообществу/развитием сообщества, образованием и просвещением, дизайнерской работой и т.д. Мы сознательно не устанавливаем произвольные количественные метрики (например, «100 коммитов в этом репозитории»), чтобы избежать поощрения поведения, ориентированного на метрики, а не на общее благополучие проекта. Мы хотим поощрять разнообразие происхождения, взглядов и талантов в нашей команде, поэтому мы явно не определяем код как единственную метрику для оценки членства в совете.

Если член Совета становится неактивным в проекте в течение одного года, он будет рассматриваться для удаления из Совета. Перед удалением неактивный член будет опрошен, чтобы узнать, планирует ли он вернуться к активному участию. Если нет, он будет немедленно удален после голосования Совета. Если он планирует вернуться к активному участию в ближайшее время, ему будет предоставлен льготный период в один год. Если он не вернется к активному участию в течение этого периода, он будет удален голосованием Совета без дальнейшего льготного периода. Все бывшие члены Совета могут быть рассмотрены для членства снова в любое время в будущем, как и любой другой участник проекта. Ушедшие члены Совета будут перечислены на веб-сайте проекта с указанием периода, в течение которого они были активны в Совете.

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

Список текущих членов Совета по управлению поддерживается на странице О нас.

Председатель совета#

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

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

  • В то же время года, подводя итоги любых соответствующих организационных обновлений и проблем за предыдущий период, и запрашивая обратную связь/предложения на форуме.

  • Обеспечение актуальности состава Руководящего совета.

  • Обеспечение того, чтобы вопросы, обсуждаемые в частном порядке Руководящим советом, резюмировались на форуме для информирования сообщества.

  • Обеспечение актуальности других важных организационных документов (например, Кодекса поведения, Соглашения о финансовом спонсорстве) после их добавления.

Менеджер релизов#

Менеджер выпуска несет окончательную ответственность за создание выпуска. Это включает:

  • Предложение и решение о времени выпуска.

  • Определение содержания релиза в случае отсутствия консенсуса по конкретному изменению или функции.

  • Создание релиза и его анонсирование на соответствующих публичных каналах.

Для получения более подробной информации о том, как эти обязанности выглядят на практике, см. Создание релиза SciPy.

Конфликт интересов#

Ожидается, что BDFL и члены Совета будут работать в широком диапазоне компаний, университетов и некоммерческих организаций. Из-за этого возможно, что у членов возникнет конфликт интересов. Такие конфликты интересов включают, но не ограничиваются:

  • Финансовый интерес, такой как инвестиции, трудоустройство или контрактная работа, вне Проекта, который может повлиять на их работу в Проекте.

  • Доступ к проприетарной информации их работодателя, которая потенциально может просочиться в их работу с Проектом.

Все члены Совета, включая BDFL, должны раскрывать остальным членам Совета любой конфликт интересов, который у них может быть. Члены с конфликтом интересов по конкретному вопросу могут участвовать в обсуждениях Совета по этому вопросу, но должны воздерживаться от голосования по нему. Если BDFL отстранился от конкретного решения, Совет назначит заместителя BDFL для этого решения.

Частные сообщения Совета#

Если не требуется иное, все обсуждения и действия Совета будут публичными и проводиться в сотрудничестве и обсуждении с участниками проекта и сообществом. У Совета будет приватный список рассылки, который будет использоваться экономно и только когда конкретный вопрос требует конфиденциальности. Когда необходимы приватные коммуникации и решения, Совет постарается обобщить их для сообщества после удаления личной/приватной/конфиденциальной информации, которую не следует публиковать в открытом доступе в интернете.

Принятие решений советом#

Если Совету по управлению потребуется принять формальное решение, то они будут использовать форму Процесс голосования Apache Foundation. Это формализованная версия консенсуса, в которой голоса +1 означают согласие, -1 — вето (и должны сопровождаться обоснованием, как указано выше), а также можно голосовать дробно (например, -0.5, +0.5), если нужно выразить мнение без полного вето. Эти числовые голоса также часто используются неформально для получения общего представления о чувствах людей по какому-либо вопросу и обычно не должны считаться формальными голосами. Формальное голосование происходит только при явном объявлении, и если это происходит, то голосование должно оставаться открытым достаточно долго, чтобы все заинтересованные члены Совета имели возможность ответить — не менее одной недели.

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

Институциональные партнёры и финансирование#

Руководящий совет является основным руководящим органом проекта. Никакое внешнее учреждение, физическое лицо или юридическое лицо не имеет возможности владеть, контролировать, узурпировать или влиять на проект, кроме как участвуя в проекте в качестве участников и членов совета. Однако, поскольку учреждения могут быть важным механизмом финансирования проекта, важно официально признать участие учреждений в проекте. Это институциональные партнеры.

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

С этими определениями, Институциональный партнёр — это любое признанное юридическое лицо в любой стране, которое нанимает как минимум 1 Институционального участника или члена Институционального совета. Институциональные партнёры могут быть коммерческими или некоммерческими организациями.

Учреждения становятся подходящими для статуса Институционального Партнера, если в них работают лица, которые активно вносят вклад в Проект в рамках своих служебных обязанностей. Другими словами, единственный способ для Партнера влиять на проект — это активно участвовать в открытой разработке проекта на равных условиях с любым другим членом сообщества Участников и Членов Совета. Простое использование Программного Обеспечения Проекта в институциональном контексте не позволяет организации стать Институциональным Партнером. Финансовые пожертвования не дают организации права стать Институциональным Партнером. Как только учреждение становится подходящим для Институционального Партнерства, Руководящий Совет должен номинировать и утвердить Партнерство.

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

Институциональный партнер может свободно искать финансирование для своей работы над Проектом любыми законными способами. Это может включать некоммерческую организацию, собирающую средства от частных фондов и доноров, или коммерческую компанию, создающую проприетарные продукты и услуги, которые используют Программное обеспечение и Услуги Проекта. Финансирование, полученное Институциональными партнерами для работы над Проектом, называется Институциональным Финансированием. Однако никакое финансирование, полученное Институциональным партнером, не может переопределить Руководящий совет. Если у партнера есть финансирование для работы над SciPy и Совет решает не заниматься этой работой как проектом, партнер может продолжить ее самостоятельно. Однако в этой ситуации эта часть работы партнера не будет под эгидой SciPy и не может использовать товарные знаки Проекта любым способом, предполагающим формальные отношения.

Преимущества институционального партнера:

  • упоминание на сайте SciPy и в докладах

  • возможность указать свои источники финансирования на сайте SciPy и в докладах

  • возможность влиять на проект через участие своего члена Совета

  • приглашение членов Совета на встречи разработчиков SciPy

Список текущих институциональных партнёров поддерживается на странице О нас.

История документации#

scipy/scipy

Благодарности#

Значительные части этого документа были адаптированы из Документ управления проектом Jupyter/IPython и Документ управления NumPy.

Лицензия#

В максимально возможной степени, разрешённой законом, авторы отказались от всех авторских и смежных прав на документ управления проектом SciPy, в соответствии с Лицензия CC-0 (общественное достояние).