One of the most fun parts of working on Tuist is pushing the boundaries of what’s possible in the area of developer tooling for app developers. We are not afraid of challenging established conventions or innovating because we remain as independent as the day we wrote the first line of code in the project.
One the spaces within app development that we noticed has been disregarded for years is automation. Looking around, I see that challenges and problems that existed years ago remain today. In particular…
- Automation is done in Ruby through Fastlane, even though developers would love to write Swift instead.
- CI platforms continue to vendor-lock companies through proprietary YAML formats and ecosystems of reusable steps bound to their platforms (e.g., GitHub Actions).
- Terrible debugging experience of those workflows, which can only be triggered due to an event in the Git forge.
CI companies struggle to innovate and develop terms like Mobile DevOps, which are made-up stories to make companies believe and depend on their services. We can do better than that! Imagine there weren’t YAML pipelines, an ecosystem of Fastlane lanes, or even CI providers. What would that world look like? But Pedro… this is too romantic. I know… but let’s think about it for a second. I imagine that world this way:
- Swift is the language for automation.
- Automation is CI-provider agnostic.
- Reusable steps can be written in any language.
- I can trigger workflows in remote environments from my local environment.
- I can pause the execution to debug it.
Why isn’t it like that? Because we’ve built a red ocean of companies that copy each other in a crowded space. Many struggle to justify investing in uncovering new markets because that’s uncomfortable for their investors.
But Tuist is not like that. We are here to challenge ourselves, try new things, and solve the challenges that the team faces, so we should do something about it.
Like Mise, a technology that I came across and decided to make the default for installing Tuist, I recently came across a technology that could help us address the above challenges, Dagger. For the first time in the history of automation, the creator of Docker dared to challenge the status quo and is creating a narrow waist for automation. You heard it right: a CI-provider agnostic solution that allows you to write your automation in your language of choice. Exciting, isn’t it?
So we are going to bring Dagger to Tuist! You heard it, and this is how we are going to make it happen:
- New projects will come with
dagger
as a dependency in their.mise.toml
file. - They’ll have a
Tuist/Pipelines
directory where they can declare their pipelines in Swift. - You can invoke them directly through the
dagger
CLI, or throughtuist workflows run
.
We’ll develop the SDK for Swift and develop some steps (equivalent to Fastlane lanes) that are common across all the apps. We want to take the lead on helping developers and organizations move on to a more advance and powerful automation system that embraces developers’ freedom to choose their CI provider and meets them where they are by allowing them to use Swift.
Down the road, we’d like people to be able to run them remotely… Imagine something like:
tuist workflows run workflow-id --remote xcode-16
Amazing. It’s time to revolutionize automation in Apple development, so stay tuned because we are now fully focused on enabling this vision.