Lessons Learned Building a Build Tool
summary
Built an alternative build system called Kobalt written in Kotlin that prioritizes valid Kotlin build files so IDE auto-completion works, a plugin model based on extension points (Hollywood principle), and features like Maven repo uploads via Aether, flavors, wrapper and version checks. Implements incremental tasks via input/output hashes and speeds up multi-module builds with parallel scheduling by repeatedly launching free nodes (topological sort + dynamic eligibility), and reaches the original design goals — production-ready but open for contributions.
AI-written summary · about
chapters (23)
- 0:00Intro
- 1:51What led to Kobalt?
- 5:45What is Kobalt?
- 7:29Design goals
- 9:27Auto completion
- 10:00Incremental tasks
- 11:08Parallel builds
- 11:55Profiles
- 13:25Easy project dependencies
- 14:56Plug-in architecture
- 17:27Other features
- 21:07Example project (ktor)
- 22:16Topological sort
- 24:35Single threaded
- 25:01Multithreaded (naive)
- 25:45Multithreaded (DynamicGraph)
- 26:51Dynamic Graph algorithm
- 27:21DynamicGraph in action
- 29:04The problem
- 31:05Example: a JSON library
- 34:50Example: persistence
- 40:02Ad hoc polymorphism in a nutshell
- 40:53Wrapping up
related talks
38mKSP and Plugins. Optimizing Kotlin Multiplatform common code
40mFull-Stack Kotlin
22mIntegrating Kotlin Code into the Gradle Build Process
26mBuild your own compiler with KSP
29mCompile, Deploy and Manage Your CI in Kotlin
38mMultiplatfom projects with Kotlin
40mBetter Android Development with Kotlin & Gradle
49mStreamlining Configuration With Kotlin: Harnessing Inheritance, Variables, and More!
