|
@@ -1,4 +1,4 @@
|
|
|
-Все спорные вопросы, пожелания по процессу, фичереквесты можно присылать на [arcadia-wg@](mailto:arcadia-wg@yandex-team.ru)
|
|
|
+Все спорные вопросы, пожелания по процессу, фичереквесты можно присылать на [arcadia-wg@](mailto:arcadia-wg@yandex-team.ru)
|
|
|
|
|
|
## Что такое contrib?
|
|
|
|
|
@@ -16,25 +16,25 @@
|
|
|
|
|
|
## Добавление библиотеки в contrib
|
|
|
|
|
|
-Перед добавлением библиотеки нужно убедиться, что библиотека действительно полезна. См. ниже про то, "Как комитеты согласуют новые библиотеки в contrib". Это те факторы, которые стоит учесть до начала процесса согласования. Возможно, в процессе анализа вы найдете более подходящие альтернативы в Аркадии или внешнем мире.
|
|
|
-
|
|
|
-Добавление новой библиотеки начинается с **[создания тикета в очереди CONTRIB](https://st.yandex-team.ru/createTicket?queue=CONTRIB)**.
|
|
|
+Перед добавлением библиотеки нужно убедиться, что библиотека действительно полезна. См. ниже про то, "Как комитеты согласуют новые библиотеки в contrib". Это те факторы, которые стоит учесть до начала процесса согласования. Возможно, в процессе анализа вы найдете более подходящие альтернативы в Аркадии или внешнем мире.
|
|
|
+
|
|
|
+Добавление новой библиотеки начинается с **[создания тикета в очереди CONTRIB](https://st.yandex-team.ru/createTicket?queue=CONTRIB)**.
|
|
|
|
|
|
## Мне нужна библиотека, написанная в Яндексе, которой нет в Аркадии. Можно ли положить её в contrib?
|
|
|
-
|
|
|
-Нет, `contrib/` — место для внешнего кода, которым мы (компания Яндекс) не владеем.
|
|
|
-
|
|
|
-В случае внутренней разработки, алгоритм следующий:
|
|
|
+
|
|
|
+Нет, `contrib/` — место для внешнего кода, которым мы (компания Яндекс) не владеем.
|
|
|
+
|
|
|
+В случае внутренней разработки, алгоритм следующий:
|
|
|
1. У библиотеки есть команда разработки. В таком случае (при наличии пользователей в Аркадии) разработка библиотеки должна переехать в Аркадию.
|
|
|
Если это невозможно, команда должна обосновать, почему такой переезд невозможен, и наладить регулярную синхронизацию в Аркадию кода библиотеки
|
|
|
(также можно выполнять синхронизацию кода в Аркадию на период переезда). Владельцами кода библиотеки в Аркадии становятся разработчики библиотеки.
|
|
|
2. У библиотеки нет команды разработки. В таком случае автор становится мейнтейнером, либо находит мейнтейнера среди прочих пользователей библиотеки.
|
|
|
Библиотеку следует положить в место для общеупотребимых библиотек (`library/`, `library/python/`) или встроить в проект-пользователь в зависимости от того,
|
|
|
представляет ли она интерес широкому кругу разработчиков.
|
|
|
-
|
|
|
+
|
|
|
Из этого правила есть де-факто исключения для библиотек, которые были помещены в `contrib/` до его введения. Впоследствии они должны быть исключены из contrib.
|
|
|
-Список таких библиотек приведён в тикете: [CONTRIB-396](https://st.yandex-team.ru/CONTRIB-396)
|
|
|
-
|
|
|
+Список таких библиотек приведён в тикете: [CONTRIB-396](https://st.yandex-team.ru/CONTRIB-396)
|
|
|
+
|
|
|
## Обновление библиотеки в Contrib
|
|
|
|
|
|
Если в обновлении библиотеки нужна помощь Devtools и/или это мажорное обновление библиотеки, то это лучше проводить через тикет в очереди CONTRIB.
|
|
@@ -52,19 +52,19 @@
|
|
|
Весь текущий и грядущий workflow работы команд, отвечающих за общие библиотеки, реализован на базе Стартрека и очереди **[Contrib](https://st.yandex-team.ru/contrib)**.
|
|
|
|
|
|
Happy Path для пользователя, которому понадобилась новая библиотека в Аркадии, выглядит следующим образом
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+Основная задача _**Профильного комитета**_ – помочь пользователю, сообщив о наличии уже существующих решений на релевантном или другом ЯП в Аркадии (в util/library/contrib). В профильном комитете необходимо 2 человека, чтобы сделать окончательное решение.
|
|
|
+
|
|
|
+[Arcadia WG](https://abc.yandex-team.ru/services/arcadia-wg/) привлекается профильными комитетами для обсуждения сложных случаев (есть сомнения, проблемы с лицензиями).
|
|
|
|
|
|
-Основная задача _**Профильного комитета**_ – помочь пользователю, сообщив о наличии уже существующих решений на релевантном или другом ЯП в Аркадии (в util/library/contrib). В профильном комитете необходимо 2 человека, чтобы сделать окончательное решение.
|
|
|
-
|
|
|
-[Arcadia WG](https://abc.yandex-team.ru/services/arcadia-wg/) привлекается профильными комитетами для обсуждения сложных случаев (есть сомнения, проблемы с лицензиями).
|
|
|
-
|
|
|
Ограничения использования библиотек контролируется [макросами управления лицензиями](https://docs.yandex-team.ru/ya-make/general/rules#licenzii).
|
|
|
|
|
|
Итого, процесс состоит из этапов:
|
|
|
|
|
|
-* Подтверждение от языкового комитета (1)
|
|
|
-* Подтверждение от языкового комитета (2)
|
|
|
-* Подтверждение от Arcadia WG, при необходимости. Все библиотеки с [запрещенными](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/#zapreshhennyelicenzii) лицензиями требуют ок от Arcadia WG.
|
|
|
+* Подтверждение от языкового комитета (1)
|
|
|
+* Подтверждение от языкового комитета (2)
|
|
|
+* Подтверждение от Arcadia WG, при необходимости. Все библиотеки с [запрещенными](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/#zapreshhennyelicenzii) лицензиями требуют ок от Arcadia WG.
|
|
|
* Импорт библиотеки
|
|
|
* Самостоятельно
|
|
|
* Или с помощью Devtools
|
|
@@ -72,7 +72,7 @@ Happy Path для пользователя, которому понадобил
|
|
|
Процесс импорта кода библиотеки (самостоятельно или с помощью Devtools) описан тут: [Как импортировать код в contrib](https://wiki.yandex-team.ru/devrules/overall/Contrib/how-to-import-contrib/)
|
|
|
|
|
|
Итоговый процесс импорта библиотеки выглядит следующим образом:
|
|
|
-
|
|
|
+
|
|
|
|
|
|
## Java (note)
|
|
|
|
|
@@ -106,47 +106,47 @@ Happy Path для пользователя, которому понадобил
|
|
|
В процессе миграции допускается временно смигрировать библиотеку, у которой есть явные аналоги в Аркадии. Это возможно лишь при наличии коммитментов от команды со сроком на переезд на общеаркадийные компоненты.
|
|
|
|
|
|
В некотором приближении мы будем запрещать для проектов внутри Аркадии зависеть от таких библиотек.
|
|
|
-
|
|
|
+
|
|
|
## Как комитеты согласуют новые библиотеки в contrib
|
|
|
-
|
|
|
-**Зачем нужно согласовывать новые библиотеки.**
|
|
|
-Чтобы сообщить пользователю о наличии уже существующих решений на релевантном или другом ЯП в Аркадии или более подходящих решений из внешнего мира.
|
|
|
-
|
|
|
-Что принимают во внимание комитеты при принятии решения, можно ли разрешать добавлять библиотеку в Аркадию и с какими ограничениями.
|
|
|
-
|
|
|
-**Название проекта и описание потребности**
|
|
|
-Понимая потребность, комитеты в некоторых случаях могут предложить более подходящее решение.
|
|
|
-Наличие кода в junk не может быть аргументом при разрешении контрибов в Аркадии. Если нужно только проверить какую-либо библиотеку, это можно сделать локально, без коммита.
|
|
|
-
|
|
|
-**Лицензия**
|
|
|
-Ознакомьтесь с текстом [про лицензии](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/).
|
|
|
-Если лицензия библиотеки входит в список [запрещенных](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/#zapreshhennyelicenzii), необходимо обсудить возможность использования библиотеки с юристами.
|
|
|
-Если лицензия библиотеки отсутствует в документе, необходимо обратиться в Arcadia WG.
|
|
|
-
|
|
|
-**Альтернативные библиотеки**
|
|
|
-Важно сравнить библиотеку с альтернативными библиотеками (в том числе с нашими внутренними наработками), решающими ту же задачу. Ожидается что автор заявки проделает работу по поиску альтернатив и сравнит новую библиотеку с альтернативами по различным критериям: возможности, популярность, поддержка (дата последнего релиза).
|
|
|
-Если в Аркадии есть похожие библиотеки и новая библиотека не дает заметных преимуществ, это может служить основанием для отказа.
|
|
|
-Наличие более популярных и развитых библиотек во внешнем мире также может служить основанием для отказа.
|
|
|
-
|
|
|
-**Транзитивные зависимости**
|
|
|
-Если библиотека тянет за собой много зависимостей, это может служить плохим сигналом.
|
|
|
-
|
|
|
-**Дата последнего релиза**
|
|
|
-Если библиотека активно не развивается, то чаще всего (но не всегда) это означает то, что библиотека заброшена.
|
|
|
-
|
|
|
-**Собираемость под какие платформы необходима**
|
|
|
-В некоторых случаях это может служить усложняющим фактором. Если библиотека изначально не умеет собираться под требуемую платформу.
|
|
|
-
|
|
|
-**Автор кода**
|
|
|
-Если библиотека написана в Яндексе, то её не нужно класть в contrib. См. подробнее [тут](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/#мне-нужна-библиотека-написанная-в-яндексе-которой-нет-в-аркадии-можно-ли-положить-её-в-contrib).
|
|
|
-
|
|
|
-На данном этапе при полных ответах на вопросы комитеты должны понять, стоит ли добавлять библиотеку в Аркадию и может ли она быть полезна другим проектам. Если библиотеку добавлять не хочется, то следующие уточняющие вопросы могут помочь принять положительное решение, но обычно с [ограничениями](https://wiki.yandex-team.ru/devrules/overall/peerdirprohibition/) к использованию в других проектах.
|
|
|
-
|
|
|
-**Идет ли миграция в Аркадию**
|
|
|
-В процессе миграции допускается временно смигрировать библиотеку, у которой есть явные аналоги в Аркадии. Это возможно лишь при наличии коммитментов от команды со сроком на переезд на общеаркадийные компоненты. Другие проекты при этом [не смогут](https://wiki.yandex-team.ru/devrules/overall/peerdirprohibition/) использовать данную библиотеку.
|
|
|
-
|
|
|
-**Что случится, если будет отказ**
|
|
|
-Сколько стоит переход на альтернативные решения и т.д.
|
|
|
+
|
|
|
+**Зачем нужно согласовывать новые библиотеки.**
|
|
|
+Чтобы сообщить пользователю о наличии уже существующих решений на релевантном или другом ЯП в Аркадии или более подходящих решений из внешнего мира.
|
|
|
+
|
|
|
+Что принимают во внимание комитеты при принятии решения, можно ли разрешать добавлять библиотеку в Аркадию и с какими ограничениями.
|
|
|
+
|
|
|
+**Название проекта и описание потребности**
|
|
|
+Понимая потребность, комитеты в некоторых случаях могут предложить более подходящее решение.
|
|
|
+Наличие кода в junk не может быть аргументом при разрешении контрибов в Аркадии. Если нужно только проверить какую-либо библиотеку, это можно сделать локально, без коммита.
|
|
|
+
|
|
|
+**Лицензия**
|
|
|
+Ознакомьтесь с текстом [про лицензии](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/).
|
|
|
+Если лицензия библиотеки входит в список [запрещенных](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/#zapreshhennyelicenzii), необходимо обсудить возможность использования библиотеки с юристами.
|
|
|
+Если лицензия библиотеки отсутствует в документе, необходимо обратиться в Arcadia WG.
|
|
|
+
|
|
|
+**Альтернативные библиотеки**
|
|
|
+Важно сравнить библиотеку с альтернативными библиотеками (в том числе с нашими внутренними наработками), решающими ту же задачу. Ожидается что автор заявки проделает работу по поиску альтернатив и сравнит новую библиотеку с альтернативами по различным критериям: возможности, популярность, поддержка (дата последнего релиза).
|
|
|
+Если в Аркадии есть похожие библиотеки и новая библиотека не дает заметных преимуществ, это может служить основанием для отказа.
|
|
|
+Наличие более популярных и развитых библиотек во внешнем мире также может служить основанием для отказа.
|
|
|
+
|
|
|
+**Транзитивные зависимости**
|
|
|
+Если библиотека тянет за собой много зависимостей, это может служить плохим сигналом.
|
|
|
+
|
|
|
+**Дата последнего релиза**
|
|
|
+Если библиотека активно не развивается, то чаще всего (но не всегда) это означает то, что библиотека заброшена.
|
|
|
+
|
|
|
+**Собираемость под какие платформы необходима**
|
|
|
+В некоторых случаях это может служить усложняющим фактором. Если библиотека изначально не умеет собираться под требуемую платформу.
|
|
|
+
|
|
|
+**Автор кода**
|
|
|
+Если библиотека написана в Яндексе, то её не нужно класть в contrib. См. подробнее [тут](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/#мне-нужна-библиотека-написанная-в-яндексе-которой-нет-в-аркадии-можно-ли-положить-её-в-contrib).
|
|
|
+
|
|
|
+На данном этапе при полных ответах на вопросы комитеты должны понять, стоит ли добавлять библиотеку в Аркадию и может ли она быть полезна другим проектам. Если библиотеку добавлять не хочется, то следующие уточняющие вопросы могут помочь принять положительное решение, но обычно с [ограничениями](https://wiki.yandex-team.ru/devrules/overall/peerdirprohibition/) к использованию в других проектах.
|
|
|
+
|
|
|
+**Идет ли миграция в Аркадию**
|
|
|
+В процессе миграции допускается временно смигрировать библиотеку, у которой есть явные аналоги в Аркадии. Это возможно лишь при наличии коммитментов от команды со сроком на переезд на общеаркадийные компоненты. Другие проекты при этом [не смогут](https://wiki.yandex-team.ru/devrules/overall/peerdirprohibition/) использовать данную библиотеку.
|
|
|
+
|
|
|
+**Что случится, если будет отказ**
|
|
|
+Сколько стоит переход на альтернативные решения и т.д.
|
|
|
|
|
|
## После импорта
|
|
|
|
|
@@ -168,7 +168,7 @@ Happy Path для пользователя, которому понадобил
|
|
|
|
|
|
Кастомные тесты пишутся точно также, как и обычные аркадийные тесты (см. [документацию](https://docs.yandex-team.ru/arcadia-cpp/cpp_test)).
|
|
|
Такие тесты нужно сложить в директорию [devtools/contrib_tests](https://arcanum.yandex-team.ru/arc/trunk/arcadia/devtools/contrib_tests).
|
|
|
-
|
|
|
-## Как работает контрибная автоматика
|
|
|
-После заведения CONTRIB-тикета приходит автоматика и по языку из компонента выбирает тех, кто будет одобрять библиотеку. Список одобряющих прописан в скрипте.
|
|
|
-Автоматика живёт [тут](https://a.yandex-team.ru/arc/trunk/arcadia/vcs/manage_contrib/find.py). Запускается из Sandbox, Scheduler [тут](https://sandbox.yandex-team.ru/scheduler/21260/view).
|
|
|
+
|
|
|
+## Как работает контрибная автоматика
|
|
|
+После заведения CONTRIB-тикета приходит автоматика и по языку из компонента выбирает тех, кто будет одобрять библиотеку. Список одобряющих прописан в скрипте.
|
|
|
+Автоматика живёт [тут](https://a.yandex-team.ru/arc/trunk/arcadia/vcs/manage_contrib/find.py). Запускается из Sandbox, Scheduler [тут](https://sandbox.yandex-team.ru/scheduler/21260/view).
|