# Common Signatures for Modules

## Introduction

Modules for the same task should implement a common signature, so that module consumers can easily exchange them and find the best one for their problem.

This directory collects specifications of common signatures. We expect it to grow over time, as modules are created for a wider variety of tasks.

In the best case, the specification of a common signature provides strong enough guarantees such that consumers can call just output = module(inputs) without knowing anything about the module's internals. If some adaptation is unavoidable, we propose to supply library functions to encapsulate it, and document them along the signature.

In any case, the goal is to make exchanging different modules for the same task as simple as switching a string-valued hyperparameter.