KotlinConf 2018

KotlinConf 2018 - Atlas and Peon: Dependency Visualization & Management with Kotlin/JS by Neil Power

3rd October 2018

Recording brought to you by American Express https://americanexpress.io/kotlin-jobs
When I spoke at KotlinConf '17, I presented on how we have adopted Kotlin at Hootsuite, the culture that facilitated that adoption as well as the details of our journey.

A side story from that presentation that ended up generating many questions from the audience both after the talk, and since returning from the conference were our tools, Atlas and Peon.

Atlas is a tool which we use at Hootsuite to visualize dependency graphs for our Kotlin/Java Android codebase, our ObjectiveC/Swift iOS codebase, and our Scala backend codebase. Originally written in Ruby, it has been rewritten in Kotlin/JS. Atlas scrapes Github for build files for Gradle, Carthage, and SBT. It then parses the build files and generates a dependency graph from them. The dependency graph can then be visualized as a PNG using graphviz or it can feed the graph to our Peon tool. Atlas is built to be extensible, each build system implements a generic worker interface.

Atlas has been indispensable in development at Hootsuite, assisting in onboarding new developers, diagnosing bugs, and much more. I am very excited to finally Open Source the tool as a Kotlin/JS project and to dive deep into it for KotlinConf attendees so that they can use it in their own projects or even extend it to new build systems.

Peon was written because the Android team at Hootsuite was tired of bumping versions of libraries, both internal and external, and then cascading those changes up a dependency graph. Peon takes the dependency graph output of Atlas and then makes changes to the graph in an intelligent, and topologically aware, manner. Peon was also originally implemented in Ruby but is currently being rewritten in Kotlin/JS.

Peon takes in a list of libraries to be updated in the graph. You can use it to update the version of Kotlin in all our projects or to bump a version of an external library. You can also use it to propagate changes to an internal library to the rest of the graph.

Since deploying it at Hootsuite, Peon has saved hundred of developer hours. Peon will be released as an Open Source Kotlin/JS project prior to KotlinConf so that we can dive deep into this tool and attendees can integrate it with their own workflows.

I am very excited to lead this talk, diving deep into both of these tools which are used daily at Hootsuite. I am especially interested in sharing the project with others so that they can save time on their own projects and teams.

I am also interested in sharing my experience with Kotlin/JS, especially converting a Ruby project to Kotlin/JS. The benefits of the Kotlin type system for example, were immediately apparent, both within the project and when integrating with other Javascript libraries.

About the Presenter:
Neil Power is a Software Developer at Hootsuite, building out Hootsuite's Platform. He was previously an Android Developer working on Hootsuite's Android application. Originally from Newfoundland, he now calls Vancouver home. On the Hootsuite Android team, he made the switch to Kotlin early in 2016 and hasn't looked back.