Replies: 8 comments 18 replies
-
@eed3si9n what about
What would be your recommendation to approach both these use-cases without new configuration scopes? |
Beta Was this translation helpful? Give feedback.
-
At the risk of diverging away from the general point and rocking the boat a bit, I am getting an increasingly nagging feeling that the problem with tasks seem to stem from the fact that sbt doesn't really support inheritance. While it is definitely a true point that standard style inheritance is generally ill advised, as was shown by https://github.com/cvogt/cbt and https://www.youtube.com/watch?v=J0DrSaAqPSY, in essence build tools like sbt form a DAG where you can patch arbitrary nodes and this is one of the few cases where inheritance (and custom overriding of nodes) are useful, cbt just happened to embrace this fully using Scala's natural constructs ( It would be a very radical change, but maybe we should consider some inheritance style concept so you don't have to redefine tasks in a custom config? And maybe we should provide a mechanism so we can actually hide internals? |
Beta Was this translation helpful? Give feedback.
-
remove |
Beta Was this translation helpful? Give feedback.
-
could we rename to |
Beta Was this translation helpful? Give feedback.
-
Mill doesn't have configs for testing, and uses submodules. It works great, as not every module will have the same auxiliary submodules, and using submodules let you be precise in what kind of testing you need for each module:
One thing that is worth considering is how cheap modules are. In Mill, it's quite common to have dozens or hundreds of modules: e.g. Mill's own build has 84, while Ammonite's build has 440. But that's partly due to the fact that they are cheap to define (just an SBT modules tend to be more heavyweight than that:
But if they could be made more lightweight that would make it easier to use modules and sub-modules as a tool to replace a wide range of different bespoke build tool features |
Beta Was this translation helpful? Give feedback.
-
What about |
Beta Was this translation helpful? Give feedback.
-
There are in fact 2 very different things that Clearly, there are good reasons to limit to
On the other hand, for the second use case, there are plenty of known and lesser-known valid use cases:
All of these use cases are very relevant. They allow all those different namespaces to be resolved by I believe—and some colleagues at the Scala Center as well—that we should deprecate custom configs for task scoping, but keep them for namespacing library dependencies. Concretely, that would mean:
|
Beta Was this translation helpful? Give feedback.
-
Hi everyone. Thanks everyone for the feedback. After some pause (prepping ScalaMatsuri etc), I am back with fresh eyes, and wrote up feedback and outcome section in https://eed3si9n.com/sbt-drop-custom-config/, which I'll paste below: feedbackI created a discussion thread #7189. In there, there were some interesting inputs (reminder: The goal of the RFC is to collectively explore the space of tradeoffs, and not everyone's opinion gets the same weight). In the thread Sébastien Doeraene wrote:
The library dependency use cases listed in the threads are:
These are interesting observations. Per Sébastien's suggestion, we would deprecate the scoping usage (for example To this Sébastien pointed out that creating synthetic subproject might incur overhead. Since the main goal of RFC-3 proposal is to simplify the scoping, we could achieve that by limiting settings and task scoping to There was also a side suggestion to rename outcome
|
Beta Was this translation helpful? Give feedback.
-
https://eed3si9n.com/sbt-drop-custom-config/
Beta Was this translation helpful? Give feedback.
All reactions