Scala 3 Migration: Report from the field

Migration Experience & Difficulty

  • Many readers found the report valuable and realistic, especially for projects using advanced Scala 2 features (macros, type projections, experiments).
  • Consensus: if a codebase avoids experimental features and custom macros, migration is usually manageable, especially with Scala 3 compatibility flags and rewrite tools.
  • Some teams have already migrated even very old Scala 2.8 code, citing macros and abstract type projections as the main pain points.
  • Others perceive migration as daunting, with no strong business incentive until Scala 2 becomes unsustainable (e.g., libraries dropping support). A few argue a formal Scala 2 “sunset” would spur action.

Ecosystem Readiness & Binary Compatibility

  • Several commenters say “most of the ecosystem” now has Scala 3 releases; Spark is repeatedly mentioned as the big holdout, with Databricks’ choices seen as dragging the ecosystem.
  • Scala 3’s binary compatibility story (within 3.x and back to 2.13, excluding experimental features/macros) is highlighted as a major improvement over historic 2.x breakage.
  • Interop with Scala 2.13 binaries reduces urgency but also reduces migration pressure.

Tooling & Build Systems

  • Tooling remains a recurring complaint: IDE support is described as improved but still frustrating; some blame “academic” priorities for ignoring tooling.
  • sbt has detractors but is said to be much better than it used to be; alternatives like Maven, Gradle (with recent Scala 3 fixes), Mill, and particularly scala-cli get positive mentions.

Community, Governance & Politics

  • Some commenters strongly criticize governance and community behavior around the Scala Center, referencing offensive conference language and a defamation case.
  • Others downplay this as personal or organizational drama with little relevance to technical decisions like upgrading from Scala 2 to 3.
  • There is no consensus: some see toxicity as a serious deterrent; others say the real ecosystem mostly lives outside these institutions.

Language Design, Libraries & Competing Options

  • Deep split on Scala 3: some call it “what Scala was supposed to be” with a near‑ideal type system; others see unnecessary syntax churn and overcomplexity that hurts maintainability.
  • Debate over FP-heavy stacks (Cats, ZIO, Typelevel) vs “just Java libraries”; some teams refuse advanced type tricks, others treat them as standard practice.
  • In data engineering, Scala is reported to be losing ground to Python and Java as Spark usage shifts and managed platforms grow.
  • For people leaving Scala, Rust, Kotlin, and Java are the most cited destinations; Rust praised for momentum but seen by some as less suited to typical backend workloads than JVM languages.