SBT’s main drawback, in my personal opinion, is the different ways of building the exact same project with many different styles:
I’ve seen projects wherein there is both a top level and a build.sbt in each directory, on top level build.sbt file, one build.scala file in the top level project file… etc.
The fact two people experienced in sbt that learned different styles and different ways of achieving their projects scripting goals with sbt could go into eachother’s projects and feel completely lost says something about the overly broad way sbt approaches building, when neither way is a
right way, just one more encouraged.
Even if build.scala is being deprecated in favor of the build.sbt file style, I still do believe it could be taken a step further, and deprecate all styles but the one the community converges on the most (ATM, I believe the top level build.sbt file for multi-module projects). The goal being a single, unified way of developing and building projects, therein lowering the barrier of entry and maintenance of docs for so many different styles that all achieve the same thing, while also helping the community pick up abandoned but potentially useful projects in a shorter amount of time build in this singular way.