At ScalaItaly I met with @dotta and we discussed a bit over SBT, at the end we decided that it will be worth to bring the attention of the community on the topic, and here I am.
What happened recently during the transition from 0.13 to 1.X was a great success and many things dramatically improved breaking minimally the end user API.
This resulted in having most of the ecosystem seamlessly following with a tiny effort and guidance.
Now, I would like to think ahead, and focus on the key pain points that anyone is facing while using Sbt (specially Sbt plugins maintainers), to pave the road to Sbt 2 maybe
We identified two major issue categories:
We still pay long waiting times while waiting for sbt to start and caching doesn’t help in many cases.
- API simplification
The most common reaction after teaching Sbt beginner stuffs to people has been so far: “Now I understand why I did X in the past”, I do believe that we can do better by analyzing the current situation and finding out a minimal subset that will make builds easier to understand (now we also have cbt and mill experience to teach us).
Into these categories I would at first try to collect in no particular order specific items from the community, I start:
dependencies lookup looks to happen more frequently than expected even in presence of fully formed caches
ivy2 is used as default, but tools like ‘coursier’ demonstrated the tech gap
Scopes on 3 axes, it’s extremely hard to identify a Key in a 3 axes space
Configurations / Projects they are both “folders” for isolating Keys, files etc., (i.e. the root concept overlap) if we use a Occam razor only one has to survive (I’m in favor of Projects since Configurations seems to be a direct translation of Ivy2 concepts)
TaskKey is both an axis and a value, this is extremely confusing
Static lookup instead of dynamic dispatch of ‘.value’, this is antithetic to what we normally use in a program workflow
I’m not arguing to have answers to the point I listed and I respect and love the work done specially by @eed3si9n @dwijnand @jvican (and many more) I’m just pushing for an even more awesome future, Sbt is still the first tool anyone coming into Scala has to touch, and we should take special care of it IMO.