diff options
author | alexeykruglov <alexeykruglov@yandex-team.ru> | 2022-02-10 16:45:38 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:38 +0300 |
commit | 06361c53c4ca58f57007ea73fc399fc25664f13c (patch) | |
tree | f5df3a0e589db8e1e30dca616e6fa2d10bf3c64a /contrib/README.md | |
parent | 94e51c602b555459333b3c6ae92476c424c930bc (diff) | |
download | ydb-06361c53c4ca58f57007ea73fc399fc25664f13c.tar.gz |
Restoring authorship annotation for <alexeykruglov@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/README.md')
-rw-r--r-- | contrib/README.md | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/contrib/README.md b/contrib/README.md index 44863a0baf..30cd3019c0 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -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 для пользователя, которому понадобилась новая библиотека в Аркадии, выглядит следующим образом -![](https://jing.yandex-team.ru/files/alexeykruglov/contrib1.png) - -Основная задача _**Профильного комитета**_ – помочь пользователю, сообщив о наличии уже существующих решений на релевантном или другом ЯП в Аркадии (в util/library/contrib). В профильном комитете необходимо 2 человека, чтобы сделать окончательное решение. - -[Arcadia WG](https://abc.yandex-team.ru/services/arcadia-wg/) привлекается профильными комитетами для обсуждения сложных случаев (есть сомнения, проблемы с лицензиями). +![](https://jing.yandex-team.ru/files/alexeykruglov/contrib1.png) +Основная задача _**Профильного комитета**_ – помочь пользователю, сообщив о наличии уже существующих решений на релевантном или другом ЯП в Аркадии (в 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/) Итоговый процесс импорта библиотеки выглядит следующим образом: -![alt](https://jing.yandex-team.ru/files/alexeykruglov/contrib2.png) +![alt](https://jing.yandex-team.ru/files/alexeykruglov/contrib2.png) ## 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). |