Spec-Zone.ru › NumPy 1.20

Управление проектом NumPy и принятие решений

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

Краткое описание

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

Проект

Проект NumPy (Проект) является проектом с открытым исходным кодом, связанным с фондом NumFOCUS 501(c)3. Целью Проекта является разработка программного обеспечения с открытым исходным кодом для вычислений с массивами в Python, и, в частности, пакет numpy, а также связанное программное обеспечение, такое как f2py и расширения NumPy Sphinx. Разрабатываемое Проектом программное обеспечение выпускается под лицензией BSD (или аналогичной) с открытым исходным кодом, разрабатывается открыто и размещается в общедоступных репозиториях GitHub в рамках организации GitHub numpy.

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

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

Проект формально связан с фондом NumFOCUS 501(c)3 (http://numfocus.org), который выступает его финансовым спонсором, может владеть товарными знаками и другой интеллектуальной собственностью проекта, помогает управлять пожертвованиями в проект и выступает в качестве родительской юридической единицы. NumFOCUS является единственной юридической единицей, которая имеет формальные отношения с проектом (см. раздел «Институциональные партнеры» ниже).

Управление

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

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

  • Открытость и прозрачность
  • Активное участие
  • Институциональная нейтральность

Принятие решений по консенсусу сообщества

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

Механизм достижения этой цели может быть не знаком для тех, кто не знаком с культурными нормами разработки программного обеспечения с открытым исходным кодом. Здесь приводится краткое описание, и настоятельно рекомендуется всем участникам дополнительно прочитать главу 4 «Социальная и политическая инфраструктура» из классической книги Карла Фогеля «Производство программного обеспечения с открытым исходным кодом», а также раздел о «Консенсусной демократии», для более подробного обсуждения.

В этом контексте консенсус не требует:

  • ждать, чтобы получить мнение каждого человека по каждому изменению;
  • проводить голосование по чему-либо;
  • чтобы все были довольны или согласны с каждым решением.

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

Как мы можем узнать, когда достигнут консенсус? Теоретически это довольно сложно, так как консенсус определяется отсутствием вето, что требует от нас как-то доказать отрицание. На практике мы используем комбинацию нашего наилучшего суждения (например, простое и бесспорное исправление ошибки, размещенное на GitHub и проверенное основным разработчиком, вероятно, является допустимым) и усилий (например, все существенные изменения API должны быть размещены в списке рассылки, чтобы дать более широкому сообществу возможность выявить любые проблемы и предложить улучшения; мы предполагаем, что любой, кто достаточно заинтересован в NumPy, чтобы наложить своё право вето, должен быть в списке рассылки). Если никто не удосужится прокомментировать в списке рассылки через несколько дней, то, вероятно, всё в порядке. В худшем случае, если изменение более спорно, чем ожидалось, или важная критика задерживается, потому что кто-то был в отпуске, то это не проблема: мы приносим извинения за неправильное суждение ситуации, отступаем и разбираемся.

Если необходимо наложить формальное вето, оно должно включать:

  • чёткое заявление о том, что накладывается вето;
  • объяснение причин его наложения;
  • описание условий (если таковые имеются), которые убедили бы наложившего вето снять его.

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

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

Совет руководителей

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

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

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

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

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

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

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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

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

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

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

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

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

Частные коммуникации Совета

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

Подкомитеты

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

Подкомитет NumFOCUS

Совет будет поддерживать узкоспециализированный подкомитет для управления взаимодействием с NumFOCUS.

  • Подкомитет NumFOCUS состоит из 5 человек, которые управляют финансированием проекта, поступающим через NumFOCUS. Ожидается, что эти средства будут использоваться таким образом, который соответствует миссии некоммерческой организации NumFOCUS и направлению проекта, определенному полным Советом.
  • Этот подкомитет НЕ должен принимать решения о направлении, объеме или техническом направлении проекта.
  • Этот подкомитет будет состоять из 5 членов, 4 из которых будут действующими членами Совета, а 1 — внешним по отношению к Руководящему совету. Не более чем 2 члена подкомитета могут подчиняться одному лицу по найму или контракту (включая подчиненного, т. е. подчиненный + 1 — максимальное значение). Это предотвращает формирование эффективных большинств, основанных на одном человеке.

Текущий состав подкомитета NumFOCUS приведен на странице Текущий руководящий совет и институциональные партнеры.

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

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

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

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

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

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

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

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

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

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

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

https://github.com/numpy/numpy/commits/master/doc/source/dev/governance/governance.rst

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

Существенная часть этого документа была адаптирована из документации по управлению проектом Jupyter/IPython

Лицензия

Насколько это возможно в рамках закона, авторы отказались от всех авторских прав и смежных прав на документ NumPy по управлению проектом и принятию решений, согласно CC-0 лицензии общественное достояние.

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/dev/governance/governance.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API