com-lihaoyi / mill

Mill is a fast JVM build tool that supports Java and Scala. 2-3x faster than Gradle and 5-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
https://mill-build.org/
MIT License
2.04k stars 331 forks source link

Write an example Mill build for `arrow-kt/arrow` (1500USD Bounty) #3670

Open lihaoyi opened 1 day ago

lihaoyi commented 1 day ago

From the maintainer Li Haoyi: I'm putting a 1500USD bounty on this issue, payable by bank transfer on a merged PR implementing this.


The goal of this ticket is to write an example Mill build for https://github.com/arrow-kt/arrow, in the spirit of the other example Mill builds for:

The other three examples cover Java and Scala for Gradle/Maven/SBT, the end goal of writing an example for arrow-kt is to have a reference example for Kotlin and Gradle-Kotlin

The goal of the example build isn't to reach 100% compatibility as a drop-in replacement for the original build. Rather, it is to be able to demonstrate a "representative" build: able to do most of the core, interesting functionality, without necessarily reproducing every quirk of the original.

In particular, the example build should be able to compile, package, and run most existing tests. The only exception would be functionality not supported by Mill: e.g. using different JVM versions (at least until https://github.com/com-lihaoyi/mill/issues/3480 lands), Kotlin-JS (until https://github.com/com-lihaoyi/mill/issues/3611 lands), or android stuff (until https://github.com/com-lihaoyi/mill/issues/3550 lands).

Arrow's gradle build has 1 root build.gradle.kts and 20 sub-folder build.gradle.kts files, which should translate into 1 Mill RootModule and 20 nested modules.

Once the build is complete, and all modules compile and pass tests, the pull request should come with an ad-hoc performance comparison between the old Gradle build and the new example Mill build, in the spirit of the existing comparisons with Maven https://mill-build.org/mill/comparisons/maven.html Gradle https://mill-build.org/mill/comparisons/gradle.html and SBT https://mill-build.org/mill/comparisons/sbt.html. It should also contain a writeup of what parts of the build were not covered in the example, and why (e.g. due to features not supported in Mill)

chaitanyawaikar commented 16 hours ago

@lihaoyi I would like to give this a shot.