library/
is a directory with reusable libraries. Common ideas (with key words):
Libraries are categorized by the languages in which they will be used.
Bindings MUST be put in <language>
directory.
Grouping by any other criteria SHOULD be defined by the language committee in <language>
directory.
The library SHOULD be in use in at least two projects.
If you are not sure if you should put some library in library/
, please contact <language>
committee or arcadia-wg@yandex-team.ru.
The library SHOULD be portable.
Please contact <language>
committee if you cannot provide usage on all platforms: linux
, darwin
, windows
.
The library MUST depend only on a limited list of external components
(currently it is util/
, contrib/
, vendor/
, library/
).
Any code in Arcadia (except contrib/
, vendor/
and util/
) MAY depend on the library/
.
The library MUST be accompanied by README.md
file and a brief description of the project.
The library MUST be accompanied by unit-tests.
CPU- or/and RAM-bound algorithms SHOULD provide benchmarks.
There MUST be no trade secrets of Yandex in library/
: anything that can cause harm on publishing as OpenSource. For example:
All OSS (OpenSource Software) ready code MUST be accompanied by macro LICENCE in ya.make
.
All language specific aspects are defined by <language>
committee: see library/<language>/README.md
.
The library MUST satisfy <language>
style-guide.
The existing library SHOULD be improved instead of creating a new one - if it is possible.
Please do not create yet another library for the same thing: just improve existing one.
If you have any language-specific questions, please contact <language>
committee.
If you have any other question about library/
, please contact arcadia-wg@yandex-team.ru.