Why Clojure?

Clojure’s core appeal

  • Seen as the “third big Lisp” alongside Common Lisp and Scheme, but with a distinct philosophy: immutable data, simple core, functions over objects, and strong host interop (mainly JVM).
  • REPL-driven, interactive development is repeatedly cited as the killer feature: change a small function, eval it into a long‑running system, and see effects immediately without full rebuilds.
  • Immutability and simple data structures (maps, vectors, sets) are praised for reducing accidental complexity, easing reasoning, testing, and concurrency.

Immutability vs Static Typing

  • Many argue they’ll “take immutability over types”: static types are seen as verbose, tightly coupling code to syntax and slowing expert developers.
  • Others counter that static types are invaluable for reading and maintaining large, long‑lived codebases, especially when inheriting decade‑old systems.
  • Clojure is strongly but dynamically typed; protocols, records, and types offer structure, but do not provide the same compile‑time guarantees as Java/Haskell/OCaml.
  • Spec and Malli are used for runtime validation at boundaries; Typed Clojure exists but has not become mainstream. Some find the dynamic approach empowering, others find it fragile.

JVM, Performance, and REPL Tooling

  • Fans praise the JVM as a fast, mature runtime with powerful stacktraces (“caused by” chains), huge library ecosystem, and good performance vs other dynamic languages.
  • Critics dislike startup time (especially for scripts and serverless) and Java‑style stacktrace “barf” when errors occur, though tools like CIDER, clj‑kondo, FlowStorm, and Babashka mitigate this.
  • Recent Clojure releases improved Java lambda interop, addressing a long‑standing friction point.

Ecosystem, Stability, and Datomic

  • The core language is intentionally small and very stable; many libraries “just work” for years without changes. This stability is valued by long‑running businesses.
  • Some perceive stagnation: clojure.spec remains alpha; Schema withered; Malli has become the de facto alternative.
  • Datomic (and Datomic‑like DBs such as Datascript, Datalevin, XTDB, Rama) are seen by some as a natural extension of Clojure’s data philosophy; others view them as niche or unnecessary.

Tooling, Onboarding, and Frontend

  • Historical churn in build tools (classpath, Leiningen, Boot, deps.edn, various CLJS stacks) confuses newcomers; many wish for a single, “boring” default like Cargo/Mix.
  • ClojureScript + React has multiple viable stacks (re-frame, Fulcro, etc.), but the variety and documentation gaps make it hard to know the “right” modern path.

Community, Culture, and Jobs

  • Multiple comments praise Clojure for enabling high‑leverage solo/very small teams and successful bootstrapped businesses.
  • At the same time, there’s repeated concern about scarce job opportunities and rewrites to Go/Python/Java when key Clojure experts leave.
  • Some perceive elitism, defensiveness, and “true believer” culture around Clojure and its leadership, which they believe harms broader adoption despite the language’s technical strengths.