Before developing Tuist, I had to develop
XcodeProj, a Swift library for reading, updating and writing Xcode projects, workspaces and schemes. I debated between developing
XcodeProj as an internal component of
Tuist, or rather, implement it on its own repository and make it distributable through CocoaPods, Carthage and the Swift Package Manager. I opted for the latter.
XcodeProj is powering several other tools like XcodeGen or Accio. I'm glad that other developers found in XcodeProj the opportunity to develop their own tooling and it's exciting to see all the ideas they come up with.
I started building Tuist back when I was at SoundCloud. We embarked on the journey of modularizing the codebase to speed up builds and make the teams atomic. Maintaining a modular Xcode project is cumbersome so Tuist was my answer to make the work more convenient.
One of project's main principles is enforcing conventions over configuration. We are taking the opportunity to make simple what it's not straightforward in Xcode, like configuring dependencies and their transitives. The goal is to remove all the maintenance burden from the developers and let them focus on building great apps.
Despite it's not a project widely adopted, nor have I had the opportunity to use it myself (because I don't do much development with Xcode these days), we continue to move steadily with the help of talented maintainers and contributors.
It's one of the open source project that I'm most proud of because of the value it provides, the quality of the code and the tests suite, and the people around it.