Maikel van den Hurk is a Principal Software Engineer at TomTom, responsible for the developer experience of the company's navigation software stack. Representing the largest product unit in the organization of over 4,500 employees, Maikel must design systems that enable developers to easily build their software in a predominantly C++ environment.
TomTom's applications are wide-ranging; the same software stack targets many different platforms, from embedded software to web applications. "It makes it quite a challenging exercise in the domain we're operating in," says Maikel.
In making location technology for automated driving, navigation software for top car brands, and more, Maikel is excited by how, "We try to make it possible for everybody to navigate and find a way within the world."
Developers at TomTom Navigation support their wide range of products from a monolithic C++ software stack that must be explicitly configured and built to run on each target platform. Each developer has to compile from this stack – often daily – in order to introduce new features or fix bugs reported by customers, some of which apply only to specific target hardware.
TomTom developers had created their own proprietary solution based on Ivy to manage these variations, but found it was unable to fulfill their growing need to manage and trace build context.
The lack of these abilities forced TomTom's developers to perform a full rebuild through CMake for every change, no matter how small. "The compilation times were too lengthy, to actually make it so that the developers could in the fastest possible time frame deliver any value to our products." Maikel recalled. This requirement also slowed Jenkins CI builds, making it impossible to sustain a continuous delivery cycle.
The TomTom team has the opportunity to learn more about Conan's internal workings which empowers them to contribute extensions to the rest of C++ community. Once the TomTom Navigation team adopted Conan for C++, they could use the package manager's settings system to better target their builds for their many target platform environments. Using package IDs and other Conan settings features made it possible to create and manage binaries that developers and delivery managers could both share.
"The flexibility with all the settings and options, that explored a whole new world for us," Maikel said. "That's the key thing which really brought us over the line."
Conan enabled Maikel's navigation product unit to modernize from a mono repo to multi repo approach, working with "nicely isolated packages which can be iterated upon quite fast." Developers can now quickly rebuild their own components while fetching dependencies as compiled binaries through Artifactory.
With this shift to a binaries-centric approach powered by Artifactory, Maikel quickly saw how CI builds through Jenkin, accelerated. "Lead times are actually going down as well in that regard," he noted. "That is, I think, one of the key things that we have achieved by adopting Conan."
"We started to see that we could speed up our development chain by producing binary artifacts that could be shared across developers - we could actually shorten the build times because they don't have to be built over again."
- Maikel van den Hurk, TomTom Principal Software Engineer
Conan is a free open source tool, get started using Conan today. If C++ is one of the many languages you leverage at your organization, Artifactory can help you manage all the packages in a single solution. Get started with Artifactory for free today.About TomTom
At TomTom we're mapmakers, providing geolocation technology for drivers, carmakers, enterprises and developers.
Our highly accurate maps, navigation software, real-time traffic information and APIs enable smart mobility on a global scale, making the roads safer, the drive easier and the air cleaner.
Headquartered in Amsterdam with offices worldwide, TomTom's technologies are trusted by hundreds of millions of drivers, businesses and governments worldwide.INDUSTRY
- Monolithic software stack
- Need to support multiple platforms
- Limited ability to manage platform variations
- Excessive build times
- Unable to trace build context
- Poor developer productivity
- Unable to sustain a continuous delivery cycle
- Modernized for multiple repositories
- Manage many platform variations through properties
- Able to share binaries across teams
- Shortened build times
- Improved developer productivity
- Accelerated release times for continuous delivery