Contributing guide

Before you start

Choosing a task

  • Check out our Kanban board. You can work on one of the existing issues or create a new one.

  • Start the conversation under the issue you picked. We will discuss the design and content of the pull request, and then you can start working on it.

Contributing in general

  • Fork the repository.

  • Clone it locally.

  • Create a branch with a name that speaks for itself.

  • Set up the environment. You can install the library in dev mode via pip install -e . or build / pull docker image.

  • Implement the discussed functionality, docstrings, and tests for it.

  • Run tests locally using commands from Makefile.

  • Push the code to your forked repository.

  • Create a pull request to OpenMetricLearning.

Contributing to documentation

  • If you want to change README.md you should go to docs/readme, change the desired section and then build readme via make build_readme. So, don’t change the main readme file directly, otherwise tests will fail.

  • Don’t forget to update the documentation if needed. Its source is located in docs/source. To inspect it locally, you should run make html (from docs folder) and then open docs/build/html/index.html in your browser.

Contributing to models ZOO

  • Add the model’s implementation under oml/models.

  • Implement from_pretrained() and add the corresponding transforms.

  • Add the model to oml/registry and oml/configs.

  • Evaluate model on 4 benchmarks and add the results into ZOO table in the main Readme.

Contributing to pipelines

  • Implement your changes in one of the pipelines (extractor_training_pipeline, extractor_validation_pipeline or others).

  • Add a new test or modify an existing one under tests/test_runs/test_pipelines.

  • If adding a new test:

    • Add config file: tests/test_runs/test_pipelines/configs/train_or_validate_new_feature.yaml

    • Add python script: tests/test_runs/test_pipelines/train_or_validate_new_feature.py

    • Add test: tests/test_runs/test_pipelines/test_pipelines.py

Don’t forget to update Registry

  • If you want to add some new criterion, miner, model, optimizer, sampler, lr scheduler or transforms, don’t forget to add it to the corresponding registry (see oml.registry) and also add a config file (see oml.configs).