This module groups all different output writers. Different output writers have different dependencies. To ensure that those dependencies do not leak to other output writer, or that we can limit to number of dependencies at runtime, output writers are split into separate modules based on the dependencies they use. For example, the CloudWatch output writers depends on the AWS SDK, which is quite large and not used by any other output writer. If you only want to send metrics to Graphite, there should be no need to have the AWS SDK in your classpath at runtime. Some dependencies are also problematic. They can introduce incompatibilities. For example, a few writers are based directly on log4j or logback. This direct dependence breaks the use of SLF4J. By isolating those output writers to a specific module, we can ensure this has minimal impact.