3 ms·
Well... * It's slow * There's little sense of its overall abstraction (or how the abstractions you find fit together) * Its configuration language is undecip
by allengeorge 9y ago
Well...
* It's slow
* There's little sense of its overall abstraction (or how the abstractions you find fit together)
* Its configuration language is undecipherable (if you want to use operators liberally consider the hoops people who need to search up `<++=` have to go through)
* It's hard to work through the documentation. I can't put my finger on it, but I think because the abstraction(s) are hazy it's hard to work out how the documentation fits together
* Writing plugins is non-trivial
* Speeding up compilation is a non-trivial exercise in futility
* It's too clever by half...
Did I mention it invokes the compiler on its own project definition? :)
- dtech 9y agoAll fairly reasonable critiques, but a few are actively being addressed or have been addressed > if you want to use operators liberally consider the hoops people who need to search up `<++=` have to go through To be fair, the SBT maintainers have realized this for a while and deprecated them all in 2013, and removed them in the 1.0 release from 2017. > Speeding up compilation is a non-trivial exercise in futility Do you mean for the developer? It's more of a critique of scala then of SBT, but incremental compilation has gotten a huge speed up in the new Zinc compiler of SBT 1.0, and Lightbend has started actively benchmarking and improving compiler speeds.
- aphexairlines 9y agoThe intro docs still mention some custom operators: := in http://www.scala-sbt.org/1.x/docs/Basic-Def.html http://www.scala-sbt.org/1.x/docs/Basic-Def.html / in http://www.scala-sbt.org/1.x/docs/Task-Graph.html http://www.scala-sbt.org/1.x/docs/Task-Graph.html % in http://www.scala-sbt.org/1.x/docs/Library-Dependencies.html http://www.scala-sbt.org/1.x/docs/Library-Dependencies.html %% in http://www.scala-sbt.org/1.x/docs/Library-Dependencies.html http://www.scala-sbt.org/1.x/docs/Library-Dependencies.html I don't know if they're useful or not, but they're there.
- vvillena 9y agoSome quick explanation: := is the standard SBT assignment operator. You see it everywhere, so its use is clear. / is used for directory traversal. This is not SBT-specific, it comes from the File class in the Scala standard library. This is not as common, but it is sometimes used to setup custom source directories. % and %% are used all the time for declaring dependencies. % is the standard separator, and %% is used to automatically choose the library version compatible with the Scala version used in the project. There is also %%%, used in ScalaJS. You can use only % if you want to, the only thing the other two do is add a suffix to the dependency name. So yeah, useful. Still, they could probably have done without these custom symbols.