Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Caupain

 Caupain

Avatar for Valentin Rocher

Valentin Rocher

September 12, 2025

Other Decks in Programming

Transcript

  1. Valentin Rocher Android developer since 2010 Deezer since 2024 Frequent

    Open Source contributor Loves tinkering and CLI tools!
  2. What’s Caupain? • It’s an open source tool that generates

    dependency updates reports from a Gradle version catalog • Available both as a Gradle Plugin and as a CLI tool for all major platforms • It directly queries Maven repositories
  3. What’s Caupain? • Intended for Java and Android developers •

    Quick and e ff i cient • Can output in a variety of formats • Easily available
  4. How does it work? Parse version catalog to get versions

    maven-metadata.xml Repository dependency-version.pom Repository maven-metadata.xml Repository maven-metadata.xml Forma tt er
  5. How did it start? • First dra ft was a

    snippet of code in an internal plugin because other solutions weren’t matching our needs (too slow, too opinionated,…) • Talked about it with Martin Bonnin at Android Makers • A few beers later…The hype is here!
  6. Let’s build it! • It needs to work fl awlessly

    on all platforms • It has to be easily installable • I’m too old and lazy to learn a new language Solution: use KMP !
  7. What do we need ? The usual suspects • KotlinX

    serialization for serialization, with all its formats ! • Ktor for network operations • Okio for all fi le-based operations
  8. What do we need ? HTML forma tt ing •

    kotlinx.html • DSL to write HTML directly in Kotlin • Replicates the syntax of HTML
  9. What do we need ? CLI interactions • Clikt for

    writing command-lines interfaces • Easy option handling • Takes care of help pages and errors • Mordant for rendering styled text in the terminal • Progress bars • Text colors • Tables
  10. Let’s make it available! MacOS • Brew via an external

    tap • Easy to install • Easy to update • Just needs a Github Repository and some Github actions
  11. Let’s make it available! Debian • APT repository • Uses

    Net fl ix Nebula Plugins for easy DEB build • Published on GitHub Pages via a speci fi c action • Just a single line to add on client side
  12. Let’s make it available! Maven • Gradle plugin portal for

    plugin • Integrated plugin from Gradle • Maven Central for core library • Using Vanniktech’s plugin • Simple steps: • Register to Maven Central • Claim namespace
  13. Let’s make it available! Making it known • Send it

    to newsle tt ers • Use communication channels from your org • Do a lot of conferences
  14. Make it Open Source! Make the code usable and readable

    • A lot of unit tests • Binary compatibility check • Transitive dependency check via dependency-guard • Style check (via Detekt) • Explicit API • All checks done via Github Actions
  15. Make it Open Source! Stay clear with your org •

    Choose the right licence • Consult legal team in your company • It’s great (and free) publicity for them !
  16. Open source is never done ! • We’re currently at

    version 1.9.1 • 140 stars, around 80 issues or PRs, people are using it and liking it • Mainly maintained by me, but you’re free to help • Idea is to keep maintaining it as long as people use it • Come look at it at h tt p://github.com/deezer/caupain !
  17. Now it’s your turn ! Why should you go Open

    Source too • It’s a great way to discover KMP and show your skills • It shows how you tackle problems internally in your company • There’s a lot of available resources • We all rely on Open Source, so let’s share !