Skip to main content
BoxTech adoption

Box has migrated its large Scala monorepo, containing 360 modules, from the sbt build tool to Gradle, publishing a post-mortem on its engineering blog about the architectural and organizational...

What happened

Box has migrated its large Scala monorepo, containing 360 modules, from the sbt build tool to Gradle, publishing a post-mortem on its engineering blog about the architectural and organizational reasons for the move.

Source

RedditSep 21, 2026By u/FarVesselPizza

r/scala

Migrating a Scala monorepo from sbt to Gradle at Box (Blog post)

upvotes
14
comments
6

Post

Highlighted: the lines this signal was extracted from

Hi there 😌I recently published an article on Box's engineering blog about migrating of the Scala monorepo from sbt to Gradle. This isn't a deep dive into Gradle configuration but more of an architectural and organizational post-mortem ( why the company made the move, what worked, what the trade-offs were ) I thought it might be interesting to the community, especially to see the scale of Scala usage at Box. Link: https://blog.box.com/gradle-scala-monorepo-box-experience-360-modules I'd love to hear any comments, questions. Curious how others here are handling Scala repos of this size today.

Also quoted as evidence

  • [comment u/Torutofu_Raeva] With 360 modules, the hard part seems less the sbt-to-Gradle syntax and more keeping dependency resolution and CI inputs reproducible once teams start changing the build independently.

reddit.com/r/scala/comments/1wmeuck/migrating_a_scala_monorepo_from_s...Read the full source

Comments on the post

4 of 6 comments
  • “The LLM is strong in this, but still an interesting read. Yet I'm wondering: 8 years of engineering effort because "we're just misusing sbt"? Also the whole story smells like a global migration to Bazel / Buck would have been the right move. But I don't know the details of course. So that's just a gut feeling extrapolated from the stated goals. Besides that, this just nicely shows how fucked”

    u/RiceBroad45528 points · Sep 21, 2026View

  • “Always good to see articles like this. I think most monorepos try the Bazel path, but it's good to see a new voice in the discussion.”

    u/weird_executor4 points · Sep 21, 2026View

  • “awesome, now I've got a great article to read tonight”

    u/spatrickwayze2 points · Sep 21, 2026View

  • “With 360 modules, the hard part seems less the sbt-to-Gradle syntax and more keeping dependency resolution and CI inputs reproducible once teams start changing the build independently.”

    u/Torutofu_Raeva2 points · Sep 21, 2026View

Extracted by Autobound

From the Signal API record
Signal
Tech adoption

What this signalsUser posts often show product pain before it reaches reviews or churn.

Subreddit
r/scala
Stage
Switched
Event date
Sep 2026

Companies

  • GradleAlso named
  • sbtAlso named
  • BazelAlso named
  • BuckAlso named

The full record

From the Signal API record

Numbers

Mentions
2

Details

Timing
Completed
Category
Build Tool
Virality
Medium
Post kind
Multi media
Prominence
Core
Company's role
Buyer

Topics and mentions

Topics

  • build tools
  • monorepo
  • migration
  • scala
  • devops

Extraction

Sentiment
Neutral
Detected
Sep 21, 2026
signal_type
reddit-company
signal_subtype
techAdoption

Use this data

Get every Reddit signal for Box and the companies you sell to, in the tools you already use.

  1. Ask Claude about it

    Connect Autobound to Claude, Claude Code or Cursor with MCP. Then ask: “What changed at Box this week?”

  2. Send it to your own tools

    The Signal API returns Reddit signals for any list of companies as JSON, for your CRM, warehouse or app.

  3. Try it free

    Sign up and spend your free credits on the companies you sell to.

    Start Free1,000 free credits

The API returns more than this page shows

This page shows a preview. The full reddit-company record in the Signal API and MCP can also have these 8 fields. Some fields are empty for some signals.

Company

  • linkedin_urlValue in the API
  • industriesValue in the API
  • employee_count_lowValue in the API
  • employee_count_highValue in the API
  • revenueValue in the API
  • descriptionValue in the API

Signal

  • signal_nameValue in the API
  • associationValue in the API
Show the full JSONThe record on this page and the API request

GET /v1/signals/283d706a-7175-5d40-ab8d-a2b4062bc63e returns this record as JSON. POST /v1/companies/enrich returns every signal for box.com.

{
  "signal_id": "283d706a-7175-5d40-ab8d-a2b4062bc63e",
  "signal_type": "reddit-company",
  "signal_subtype": "techAdoption",
  "detected_at": "2026-09-21T14:45:51+00:00",
  "company": {
    "name": "Box",
    "domain": "box.com"
  },
  "data": {
    "nsfw": false,
    "stage": "switched",
    "awards": 0,
    "timing": "completed",
    "topics": [
      "scala",
      "build tools",
      "devops",
      "monorepo",
      "migration"
    ],
    "post_id": "1wmeuck",
    "summary": "Box has migrated its large Scala monorepo, containing 360 modules, from the sbt build tool to Gradle, publishing a post-mortem on its engineering blog about the architectural and organizational reasons for the move.",
    "category": "Build Tool",
    "comments": [
      {
        "url": "https://www.reddit.com/r/scala/comments/1wmeuck/comment/pb6khku/",
        "depth": 0,
        "score": 8,
        "author": "RiceBroad4552",
        "excerpt": "The LLM is strong in this, but still an interesting read.\n\n Yet I'm wondering: 8 years of engineering effort because \"we're just misusing sbt\"?\n\n Also the whole story smells like a global migration to Bazel / Buck would have been the right move. But I don't know the details of course. So that's just a gut feeling extrapolated from the stated goals.\n\n Besides that, this just nicely shows how fucked",
        "posted_at": "2026-09-21T15:38:09.000Z",
        "author_url": "https://www.reddit.com/user/RiceBroad4552/"
      },
      {
        "url": "https://www.reddit.com/r/scala/comments/1wmeuck/comment/pb6g7gc/",
        "depth": 0,
        "score": 4,
        "author": "weird_executor",
        "excerpt": "Always good to see articles like this. I think most monorepos try the Bazel path, but it's good to see a new voice in the discussion.",
        "posted_at": "2026-09-21T15:20:11.000Z",
        "author_url": "https://www.reddit.com/user/weird_executor/"
      },
      {
        "url": "https://www.reddit.com/r/scala/comments/1wmeuck/comment/pb6ilfr/",
        "depth": 0,
        "score": 2,
        "author": "spatrickwayze",
        "excerpt": "awesome, now I've got a great article to read tonight",
        "posted_at": "2026-09-21T15:30:12.000Z",
        "author_url": "https://www.reddit.com/user/spatrickwayze/"
      },
      {
        "url": "https://www.reddit.com/r/scala/comments/1wmeuck/comment/pb85zs1/",
        "depth": 0,
        "score": 2,
        "author": "Torutofu_Raeva",
        "excerpt": "With 360 modules, the hard part seems less the sbt-to-Gradle syntax and more keeping dependency resolution and CI inputs reproducible once teams start changing the build independently.",
        "posted_at": "2026-09-21T19:37:14.000Z",
        "author_url": "https://www.reddit.com/user/Torutofu_Raeva/"
      }
    ],
    "evidence": [
      "[post] Migrating a Scala monorepo from sbt to Gradle at Box (Blog post)",
      "[post] I recently published an article on Box's engineering blog about migrating of the Scala monorepo from sbt to Gradle.",
      "[comment u/Torutofu_Raeva] With 360 modules, the hard part seems less the sbt-to-Gradle syntax and more keeping dependency resolution and CI inputs reproducible once teams start changing the build independently."
    ],
    "virality": "medium",
    "post_date": "2026-09-21T14:45:51.000Z",
    "post_kind": "multi_media",
    "post_text": "Hi there 😌I recently published an article on Box's engineering blog about migrating of the Scala monorepo from sbt to Gradle.\n\nThis isn't a deep dive into Gradle configuration but more of an architectural and organizational post-mortem ( why the company made the move, what worked, what the trade-offs were )\n\nI thought it might be interesting to the community, especially to see the scale of Scala usage at Box.\n\nLink: https://blog.box.com/gradle-scala-monorepo-box-experience-360-modules\n\nI'd love to hear any comments, questions. Curious how others here are handling Scala repos of this size today.",
    "sentiment": "neutral",
    "subreddit": "scala",
    "event_date": "2026-09",
    "post_title": "Migrating a Scala monorepo from sbt to Gradle at Box (Blog post)",
    "prominence": "core",
    "source_url": "https://www.reddit.com/r/scala/comments/1wmeuck/migrating_a_scala_monorepo_from_sbt_to_gradle_at/",
    "entity_role": "buyer",
    "post_author": "FarVesselPizza",
    "upvote_ratio": 1,
    "mention_count": 2,
    "mention_surge": false,
    "subreddit_url": "https://www.reddit.com/r/scala/",
    "total_upvotes": 14,
    "comments_total": 6,
    "total_comments": 6,
    "event_date_text": "recently",
    "other_companies": [
      {
        "name": "Gradle",
        "role": "adopted",
        "domain": "gradle.org"
      },
      {
        "name": "sbt",
        "role": "replaced",
        "domain": "scala-sbt.org"
      },
      {
        "name": "Bazel",
        "role": "alternative",
        "domain": "bazel.build"
      },
      {
        "name": "Buck",
        "role": "alternative"
      }
    ],
    "post_author_url": "https://www.reddit.com/user/FarVesselPizza/",
    "signal_category": "adoption",
    "comments_included": 4
  }
}

Long text fields are shortened on this page.

Looking up one signal by its id is free. Enrich costs 2 credits per signal returned; a call with no results is free.