Posts Tagged ‘MatisLazdins’
[KotlinConf2025] Blueprints for Scale: What AWS Learned Building a Massive Multiplatform Project (2nd version)
In a talk on building large-scale, multiplatform projects, Ian Botsford and Matis Lazdins of Amazon Web Services (AWS) shared their experiences creating the AWS SDK for Kotlin. This project is colossal, spanning over 300 services and targeting eight different platforms, with its code distributed across four repositories and nearly 500 Gradle modules. The talk provided a blueprint for managing a codebase with over 8.6 million lines of code, 98% of which is auto-generated. The key to their success, they claimed, was a set of five core principles that kept their maintainers sane and productive.
A Principled Approach to Development
Botsford and Lazdins detailed five tenets for managing a project of this scale: owning your dependencies, structuring the project for growth, designing for Kotlin Multiplatform (KMP) from the beginning, maintaining backward compatibility, and optimizing the maintainer experience. They provided a practical example of owning dependencies by discussing their choice of HTTP clients. Instead of exposing third-party library types directly, which could lead to inconsistent configurations and vulnerability to unexpected API changes, they created a common, abstract interface to maintain consistency and shield users from underlying implementation details.
Automating for Maintainer Sanity
A significant part of their strategy focused on the maintainer experience. Lazdins explained the importance of automating repetitive and mundane tasks to free up time for more complex work. They developed broad checks to catch issues before they are merged, which helps prevent regressions and enforce project standards. The speakers stressed that these checks should be highly informative but also overridable, giving developers autonomy while providing valuable feedback. This focus on a positive maintainer experience is crucial for the health of any large open-source project and is a key factor in the daily releases that happen sometimes multiple times a day.
Links:
[KotlinConf2025] Blueprints for Scale: What AWS Learned Building a Massive Multiplatform Project
Ian Botsford and Matis Lazdins from Amazon Web Services (AWS) shared their experiences and insights from developing the AWS SDK for Kotlin, a truly massive multiplatform project. This session provided a practical blueprint for managing the complexities of a large-scale Kotlin Multiplatform (KMP) project, offering firsthand lessons on design, development, and scaling. The speakers detailed the strategies they adopted to maintain sanity while dealing with a codebase that spans over 300 services and targets eight distinct platforms.
Architectural and Development Strategies
Botsford and Lazdins began by breaking down the project’s immense scale, explaining that it is distributed across four different repositories and consists of nearly 500 Gradle projects. They emphasized the importance of a well-defined project structure and the strategic use of Gradle to manage dependencies and build processes. A key lesson they shared was the necessity of designing for Kotlin Multiplatform from the very beginning, rather than attempting to retrofit it later. They also highlighted the critical role of maintaining backward compatibility, a practice that is essential for a project with such a large user base. The speakers explained the various design trade-offs they had to make and how these decisions ultimately shaped the project’s architecture and long-term sustainability.
The Maintainer Experience
The discussion moved beyond technical architecture to focus on the human element of maintaining such a vast project. Lazdins spoke about the importance of automating repetitive and mundane processes to free up maintainers’ time for more complex tasks. He detailed the implementation of broad checks to catch issues before they are merged, a proactive approach that prevents regressions and ensures code quality. These checks are designed to be highly informative while remaining overridable, giving developers the autonomy to make informed decisions. The presenters stressed that a positive maintainer experience is crucial for the health of any large open-source project, as it encourages contributions and fosters a collaborative environment.
Lessons for the Community
In their concluding remarks, Botsford and Lazdins offered a summary of the most valuable lessons they learned. They reiterated the importance of owning your own dependencies, structuring projects for scale, and designing for KMP from the outset. By sharing their experiences with a real-world, large-scale project, they provided the Kotlin community with actionable insights that can be applied to projects of any size. The session served as a powerful testament to the capabilities of Kotlin Multiplatform and the importance of a thoughtful, strategic approach to software development at scale.