mill icon indicating copy to clipboard operation
mill copied to clipboard

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

Open lihaoyi opened this issue 1 year ago • 6 comments


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:

  • Mockito https://github.com/com-lihaoyi/mill/tree/main/example/thirdparty/mockito
  • Netty https://github.com/com-lihaoyi/mill/tree/main/example/thirdparty/netty
  • Gatling https://github.com/com-lihaoyi/mill/tree/main/example/thirdparty/gatling

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)

lihaoyi avatar Oct 05 '24 13:10 lihaoyi

@lihaoyi I would like to give this a shot.

chaitanyawaikar avatar Oct 06 '24 08:10 chaitanyawaikar

@chaitanyawaikar go for it

lihaoyi avatar Oct 11 '24 07:10 lihaoyi

PS - @chaitanyawaikar, are you doing this? or can I?

rahat2134 avatar Oct 12 '24 21:10 rahat2134

Just directly raise PRs. Bounties remain up for grabs until they are closed

On Sat, 12 Oct 2024 at 11:44 PM, Rahat @.***> wrote:

@lihaoyi https://github.com/lihaoyi Do you assign these issues, or can someone directly raise the PRs? Asking because I want to give it a try...

— Reply to this email directly, view it on GitHub https://github.com/com-lihaoyi/mill/issues/3670#issuecomment-2408708023, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE5HBDAYOO6YOOJAJIGV6E3Z3GJ4RAVCNFSM6AAAAABPNKR3KWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBYG4YDQMBSGM . You are receiving this because you are subscribed to this thread.Message ID: @.***>

Ammonite-Bot avatar Oct 12 '24 22:10 Ammonite-Bot

PR in progress - https://github.com/com-lihaoyi/mill/pull/3726

chaitanyawaikar avatar Oct 13 '24 06:10 chaitanyawaikar

PS - @chaitanyawaikar, are you doing this? or can I?

@rahat2134 I would require one more week and would let you know if I am not able to proceed. Thanks

chaitanyawaikar avatar Oct 13 '24 08:10 chaitanyawaikar