Designing the API

Options, conventions, escape hatches and documentation for a module, and the equivalent public surface for a layer.