Planning for breaking changes in 0.12.x / 0.13.x ? #3209
Replies: 31 comments 30 replies
-
I wanted to change the way Mill environment variables to not propagate the Environment anymore. |
Beta Was this translation helpful? Give feedback.
-
All these points sound good to me. Although in this summer I will probably not have so much time to implement anything of this. Some of these changes are probably not necessarily breaking compatibility, e.g. making More on I'd also like to see some native Mill launcher, so that repeated |
Beta Was this translation helpful? Give feedback.
-
SBT and Bazel both have similar TUIs for displaying the concurrent tasks going on; we could build something similar
This is what Bazel does. Sounds reasonable to me |
Beta Was this translation helpful? Give feedback.
-
My first wish is removing absolute Path dependency(maybe change to |
Beta Was this translation helpful? Give feedback.
-
That's fine, I have some bandwidth, I can maybe put up some bounties, and we might not achieve everything in the list. As long as we have general agreement on the general direction we can move forward at whatever speed is feasible
It doesn't break binary compatibility, but it does break semantic compatibility. There historically hasn't been a requirement that |
Beta Was this translation helpful? Give feedback.
-
@lefou what do you think of targeting non-Scala deveopers with Mill? e.g. mainlining Kotlin support, breaking out a dedicated That would be following the Gradle playbook: nobody uses Groovy or Grails these days, but they use Gradle anyway since it's better than Maven sometimes. Maybe Mill could find traction in Java/Kotlin land too; it's not like people there are in love with Maven/Gradle/Bazel. I think there's a space for a build tool somewhere between those three: more scalable and flexible than Maven, more simple than Gradle or Bazel, even if a bit less scalable. e.g. Maybe targeting codebases up to 1-1000 developers with 1-1000 modules, but not for monorepos with >1000 developers which probably need Bazel anyway. Currently a lot of projects get started using Maven or Gradle and switch to Bazel later, and if they get started using Mill they could have a better experience up front and also delay the inevitable Bazel migration since Mill works fine with hundreds of modules (e.g. com-lihaoyi/mill has around 500 modules and still works great) This would open up Mill to some avenues for growth beyond the small Scala community, while also giving folks in the broader JVM community a taste of Scala if Mill manages to become popular Again, ignoring the work hours necessary. That's orthogonal and maybe can be sorted out later |
Beta Was this translation helpful? Give feedback.
-
I think this is a good opportunity to migrate to using directives. Pros:
|
Beta Was this translation helpful? Give feedback.
-
To add to this list, bumping uPickle to 4.x can be part of Mill 0.12.x as well |
Beta Was this translation helpful? Give feedback.
-
Remove default value from |
Beta Was this translation helpful? Give feedback.
-
Remove all methods deprecated before Mill |
Beta Was this translation helpful? Give feedback.
-
@lefou just to bring the 0.12.x branching/timeline back here, what do you think of the following dates to aim for:
Forking off After 31 July, PRs targeting both We might not be able to exactly meet those dates, but it would be good to have dates to work towards just so we're all on the same page @bishabosha will likely be helping us with the Scala 3 upgrade from 1 August to 31 Oct. This will definitely be a big breaking change (syntax, bincompat, upstream dependency versions, etc.) so it definitely needs to go into 0.12.0 |
Beta Was this translation helpful? Give feedback.
-
Honestly, to my perception the move to a Scala 3 API isn't even on the horizon. And I fear, if we commit to include it in a final How about switching to a binary but not behavior compatible With some productivity features already out, we can focus on Scala 3 and breaking stuff in So here is the adapted timeframe:
If a |
Beta Was this translation helpful? Give feedback.
-
@lefou Your proposed timeframe and branching strategy works for me. Let's do it! |
Beta Was this translation helpful? Give feedback.
-
I wish that Mill had a Moreover, it would be nice if had proper log levels instead of a |
Beta Was this translation helpful? Give feedback.
-
@lefou @lolgab The build and publishing is green again, so I'm planning to start with merging the 0.12.0 pull requests into master over the next few days so we can prepare a 0.12.0-RC release |
Beta Was this translation helpful? Give feedback.
-
I opened a discussion reflecting the merged changes of Mill |
Beta Was this translation helpful? Give feedback.
-
How about changing Then, we could make the |
Beta Was this translation helpful? Give feedback.
-
It's now mid August, so a bit behind the discussed timeline of cutting |
Beta Was this translation helpful? Give feedback.
-
Has anybody tried out GitHub projects? Is it suitable to managing/planning our next releases? |
Beta Was this translation helpful? Give feedback.
-
Just an update here as end of August approaches. The last two things I want to get done before cutting 0.12.0-RC1 are:
Might take more than the next two days for these two things to happen, but hopefully should be able to complete all this in the next week or so. We can continue making changes even after |
Beta Was this translation helpful? Give feedback.
-
Both tasks above are complete, and Mill is re-bootstrapped on latest master with the I'm planning on cutting |
Beta Was this translation helpful? Give feedback.
-
Some updates:
There's still work going on in |
Beta Was this translation helpful? Give feedback.
-
Tagged |
Beta Was this translation helpful? Give feedback.
-
Just an update here, the last major change I'd like to get into 0.12.0-RC3 is an overhaul of the terminal UI #3577. This is a pretty major addition to making Mill 0.12.x's parallel-evaluation-by-default usable, so I'd like to get it into 0.12.0-RC3 so it has a chance to bake and dogfood a bit before 0.12.0 final. I estimate it will take another week or so to land that PR, so that pushes back our timeline slightly:
|
Beta Was this translation helpful? Give feedback.
-
We just cut 0.12.0-RC3, a few days late, but it's out for people to try out. Given the current cadence between RCs, I think it's most reasonable to expect that 0.12.0 final will land 15-16 Oct or so |
Beta Was this translation helpful? Give feedback.
-
All the major changes for 0.12.0 have landed, the last PR I want to get in is an upstream fix in Zinc that would allow incremental compilation of multi-file builds (sbt/zinc#1462), that hopefully @eed3si9n will be able to publish in the next few days. Apart from that, ongoing work is just documentation reviews and testing, so hopefully 0.12.0 can go out smoothly |
Beta Was this translation helpful? Give feedback.
-
I'm aiming to cut 0.12.0 final on Wednesday 23 Oct 2024. Tomorrow (tuesday) I'll be rolling out the latest unstable release 0.12.0-RC3-102-b8217f across all the com-lihaoyi repositories; that will get us a bit more experience using it in the wild and help surface any issues. If all goes well, Wednesday I'll tidy up the changelog and cut the release |
Beta Was this translation helpful? Give feedback.
-
0.12.0 is out https://mill-build.org/mill/0.12.0/reference/changelog.html#0-12-0 Approximate timeline for 0.13.0 remains end-of-year/early-next-year, but there's a lot of uncertainty around that depending on how much follow up work there is in 0.12.x. For now, my plan is to keep @bishabosha's Scala 3 PR open, but I'll be taking over maintenance responsibilities for that PR as Jamie's engagement ends. This will allow us an easier job doing occasionally merging |
Beta Was this translation helpful? Give feedback.
-
It's been a bit over a year since 0.11.0 was released (June 2023), and I'd like to start thinking about what breaking changes we'd like to do so we can bundle them into a 0.12.0 release. Exact timeline isn't set, but I'm thinking end-2024 or so. We can continue maintaining a
0.11.x
branch if we wish, but at some point we'll need to break compat and it would be good to consolidate the breakage so it happens as few times as possibleSome off the top of my head:
Migrate
build.sc
to Scala 3 #3152 will be a major change in the Scala version used by thebuild.sc
files. Any OSS libraries you use in your build.sc files may need to be updated, any internal libraries you use may need to be migrated (e.g. if they use macros). Scala 3.x is not source compatible with 2.13.x, sobuild.sc
files may need to be adjusted to satisfy the new syntax. Scala 3 also introduces new capabilities that could change how we want to implement some things, e.g. some modules that are currently modelled as nested traits could be better modelled as traits taking parameters instead.Make per-folder
build.sc
files a first-class feature to support large projects #2637 will likely require changes in thebuild.sc
file desugaring. Not sure exact details, but e.g. we would want to moveRootModule
from target-resolution-time to codegen-time so that it would apply not just to CLI invocations but also to in-code programmatic references betweenbuild.sc
files as well (these do not exist today because only onebuild.sc
is supported)Should we get rid of
Agg
in user-facing APIs, or just make it a type alias forSeq
? It felt like a good idea at the time, and it's definitely a handy abstraction, but at this point I'm not sure it's worth the complexity and novelty cost v.s. just usingSeq
everywhereWould Make
CompilationResult
more generic #2781 be a breaking change?Redesign tasks that get an evaluator instance #502 does not have any plan or design ready to go yet, but if we do come up with something it would probably be breaking
Should we make
-j0
the default so parallelism becomes opt-out rather than opt-in? That would match the behavior of other tools like SBT or Bazel, and I think at this point parallelism is battle-tested enough we can turn it on by defaultRework handling of
mill-launcher
inMillBuildModule
#2703 would be a breaking change if we decided to expose the minimal classpathFirst class support for Java and Kotlin: bring mill-kotoin plugin into main repo, and split out a mill.javalib package for java projects to use
If we don't expect to continue making major change in Mill 0.11.0, we could resolve Complete versioned documentation generation process for dynamic pages since 0.11.0-M8 #2455 by just generating it manually as manually saving the output as a sub-folder in the gh-pages branch that we link to from the main docs
We might not get to all of these, but it's definitely worth thinking about. Any other things that people may want to change that would involve breakage? @lefou @lolgab
Beta Was this translation helpful? Give feedback.
All reactions