#4 - Feb 21, 2025
You can't rebuild Apple's ecosystem
Welcome to issue 4!
A few days ago, I came across this write-up by Gordon Brander, which sparked some thoughts about Apple's app development environment and the broader challenges of ecosystem evolution. When Apple laid the foundation for Xcode, they couldn't have anticipated its future needs—supporting multiple platforms or accommodating Swift, their own programming language. Like any growing system, these early decisions created inefficiencies and required workarounds. As Brander astutely notes: Software can be rebuilt because software is a machine. But a software ecosystem is not a machine. It is a living system. When we attempt to rebuild the ecosystem, we're making a category error. We're confusing the software for the ecological process unfolding around it.
These inefficiencies often tempt developers to create alternative solutions—to fork the ecosystem. We've seen this pattern repeatedly with CocoaPods emerging to handle dependency management, Fastlane introducing new automation approaches, and Tuist proposing generated projects as a new abstraction. Even Apple itself created forks with SwiftPM, introducing another build graph and system, and with structured concurrency where they forked the concurrency paradigm by building a technical layer upon existing frameworks. These forks serve a vital purpose: they push ecosystems to explore new ideas and challenge established assumptions. However, they must respect the ecosystem's natural flow and work toward integration rather than isolation. CocoaPods exemplified this by demonstrating that dependency management was a widespread need, while maintaining an exceptional level of engineering excellence in guiding their innovation back into the ecosystem. Forking an ecosystem means fighting against its natural flow. As Brander references from Lewis Carroll's Through the Looking-Glass: Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!
This reality is evident in Xcode's current challenges with AI-driven development. While tools like Cursor and GitHub Copilot for VSCode embrace these new paradigms, Apple's slower adaptation demonstrates the difficulty of keeping pace with evolving ecosystem demands. At Tuist, we learned this lesson the hard way. Our initial approach of generating project structures created features that served only a subset of developers, making our solution seem impractical for the broader ecosystem. For those building apps or developer tools, the path forward is clear: work with the ecosystem, not against it; embrace the platform's imperfections; build upon existing foundations rather than replacing them; shape through influence instead of intervention; and be patient—ecosystem evolution takes time. As Brander concludes: So, when a living ecosystem does emerge, we have to cherish it, foster it, despite shortcomings, inelegance, ugliness. All living systems are ugly and a little bit eldritch… squishy. That's how it is.
Tools & sites
Sushitrain
Securely synchronize files on-demand
|
If you're a mobile developer, you're probably already using Proxyman and for a good reason. Its intuitive interface makes it an essential tool for mocking requests, analyzing network traffic, and much more. Maybe I’ve just gotten too used to it, but I can’t imagine working without it!
|
hk
A tool for running hooks on files in a git repository
|
The creator of Mise surprised us again with a new CLI to run hooks on files in a git repository. With a single command, hk install , you can install hooks for various events such as pre-commit, post-commit, pre-push, and more.
|
Nominate
macOS app for renaming PDFs based on their contents
|
Another inspiring developer who's back with great craft is @matt (creator of Alamofire). He open sourced an app to rename PDFs based on the content using AI, and wrote about it in a blog post.
|
MachOKit
A Swift library for parsing mach-o files to obtain various information.
|
If you ever need to parse a Mach-O file, even on Linux (e.g. in a server environment), MachOKit is a great library to use. It provides a simple API to read and write Mach-O files, and it's easy to use.
|
Lume
Virtualize macOS environments
|
If you need to virtualize macOS environments, Lume is a great tool to use. It's a Docker-like CLI tool that allows you to pull images and create containers that you can connect to via VNC or SSH.
|
Worthy Five: Vera Dias
Vera Dias is the creator of Coding With Vera, a blog and podcast dedicated to iOS development and Swift. Her articles break down complex technical topics into fun and accessible content anyone can understand.
|
An app worth installing:
I struggle with managing my time on my phone. Even after cutting out social media, my brain still seeks a dopamine hit in other ways. That’s why AppBlock has been a game-changer for me. It enforces screen limits effectively—without the temptation of a "snooze" button to override them.
An open-source project worth checking out:
An open-source project worth exploring is Bruno, an alternative to Postman. Beyond its excellent usability, the project itself is fascinating—its unique approach to building an API client is worth checking out. If you have time, consider contributing!
A developer tool worth using:
If you're a mobile developer, you're probably already using Proxyman and for a good reason. Its intuitive interface makes it an essential tool for mocking requests, analyzing network traffic, and much more. Maybe I’ve just gotten too used to it, but I can’t imagine working without it!
A developer worth following:
If you're not following Natalia Panferova yet, you’re missing out! She shares tons of valuable insights on SwiftUI and iOS development. Lately, she’s been making big strides in the community, so if you’re into iOS development, make sure to check out her content!
A book worth reading:
Not tech-related, but blew my mind: Dark Matter by Blake Crouch. This sci-fi novel explores the concept of the multiverse, diving into the possibilities of traveling between different realities and the what ifs of life—a theme I personally love. If you’re into mind-bending thrillers, this one’s a must-read!
|
Food for thought
A Brief History of Code Signing at Mozilla
Read
|
If you think signing of Apple bundles is painful, imagine having to sign all the binaries that every Firefox release comes with. In this blog post Mozilla shares the history of code signing at the company, and how signing of Apple bundles forced them to have signing servers running on macOS.
|
Obsidian is now free for work
Check out
|
Obsidian stands out in today's tech landscape by putting users first. Their recent enterprise license changes demonstrate a refreshing commitment to preserving individual freedom and privacy in an era when most companies prioritize lock-in and data collection.
|
Resigning as Asahi Linux project lead
Read
|
Leading a successful open-source project is no small feat—it demands immense effort and, at times, exposes maintainers to the worst sides of the community. Hector Martin knows this all too well. After years of dedication to Asahi Linux, the groundbreaking Linux distribution for Apple Silicon Macs, he made the difficult decision to step down as its lead, prioritizing his well-being over the relentless pressures of the role.
|
Trot
Read
|
Ever wondered what it’s like to transition from web development to building apps for Apple’s ecosystem? Robin Rendle shares his candid insights, detailing the challenges, surprises, and lessons learned along the way.
|
|