The project is a monorepo with hundreds of developers contributing to a single branch with a full compilation time of well over an hour and a complete test run that takes more than 20 hours. Such a project requires dedicated tools that are stable, simple to use and focused on solving the main problem: validating and shipping this software product in a reasonable amount of time. For almost 5 years now our team has provided solutions aimed at mitigating the problems that come with scale.
Tooling that makes a difference
Satisfying these needs involved creating a single tool entry point to the IDE, a build tool and SCM, and providing convenient shortcuts and abstraction tied to the software development methodology (Kanban). Our next goal was to increase the performance of various aspects of the project, such as compilation or test execution time, as well as create missing parts in the Scala toolchain.
This work resulted in many open-source contributions, including the Scala compiler itself, IntelliJ, Scala IDE and Zinc (Scala’s incremental compiler). Our team continues to improve the developer experience and overcome new problems introduced as the codebase grows. From the beginning, our team has provided support to users that built trust in our solution and, more importantly, allowed us to react quickly.
Currently, developers can enjoy shorter compilation times (full builds are usually below 6 mins), tests run remotely on multiple machines, and a variety of tools to improve code review and release processes.
Krzysztof, Head of the Team