Skip to content

slf4j-simple ships as a runtime dependency; move logging binding to a dev/test alias #118

@krukow

Description

@krukow

Generated via Copilot on behalf of @krukow

Summary

org.slf4j/slf4j-simple is declared in the main :deps of deps.edn, so it ships as a runtime dependency in the published POM. A library should not force a concrete SLF4J binding on its consumers.

Detail

  • deps.edn main :deps includes org.slf4j/slf4j-simple {:mvn/version "2.0.16"}.
  • The generated POM (verified via clj -T:build jar) lists slf4j-simple as a <dependency>.
  • The SDK logs via clojure.tools.logging (a facade) — correct. But slf4j-simple is a concrete binding.

Why it matters

A published library that ships a binding causes:

  • "Multiple SLF4J bindings" warnings/conflicts when the consuming app already has one.
  • Silent override of the consumer's logging configuration.

The binding belongs in the application, not a library.

Proposed fix

Move slf4j-simple to a dev/test alias (e.g., :test/:dev) so the SDK's own tests and examples keep a binding, but published consumers do not inherit one. Keep tools.logging in main deps.

Severity

ga-nice-to-have — cheap, clearly correct, changes published artifact behavior so wants maintainer sign-off before GA.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ga-nice-to-haveDesirable before 1.0.0 GA, not blocking

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions