I don’t think I’ve ever written about it before, but I believe there is an analogy between software development and rock climbing. 🧗‍♂️

I first started thinking about this in terms of source control. You make progress towards implementing a feature, then commit. Make some more progress, and commit again. Then repeat that cycle until you complete your task. Every commit is a safety net, protecting you from going too far from your “last known good” state. It allows you to experiment knowing that you’re never further away from safety than typing git reset --hard.

I’m no rock climber, but if Cliffhanger taught me anything, I know that climbing is a lot like using git! 😂 Every commit is a piton hammered into the rock face, and no matter how tricky your next move is, the rope attached to that last metal spike will catch you if you don’t make it. Eventually, you’ll reach the top of the pitch and look back at the rope looped through all your git history.

If we had thought to write every feature in the Swift Package Index from scratch today, it would have been too big a task to take on, but software releases also act like pitons. So like a rock climber, we put our first foot on the rock face with a system that gathered data from package manifests, then hammered some metal into the rock with a release before adding ingestion of metadata from GitHub. We then added piton after piton until we could create a build system for compatibility testing. Adding documentation generation to that build system wasn’t trivial, but it was possible because of all those previous releases.

There’s a reason I’m talking about this, of course. This week we hammered in our 500th piton and rolled out versioned documentation for the Swift community. There are full details in the launch blog post, but the cliff notes¹ are that if package authors opt in, we’ll permanently host DocC-generated documentation for every released package version.

It would not have been possible without the previous 499 releases.

¹ Yes, this pun is very much intended! 😂

Dave Verwer  






Senior iOS Engineer (Swift) @ GoodNotes – GoodNotes is a top-rated paid-for productivity app, available to use on iPad, iPhone and Mac devices with over 10m MAU. You will own your projects and work alongside a high-calibre cross-functional team to continue delivering a product our users love! – Remote (within European or Asia-Pacific timezones) or on-site (Hong Kong or United Kingdom)

Senior iOS Engineer @ Sendwave – We currently have a 4.6-star rating on Trustpilot — people put their faith in us to deliver their money quickly, securely, and affordably. And we’re pretty darn proud of that. – Remote (within US or European timezones)

MacOS/iOS Developer @ DeepL – DeepL is hiring! Want to join the team behind the internet's most powerful translation engine? We are seeking an experienced MacOS/iOs developer to join our Native Apps team, on a fully remote basis. – Remote (within European timezones)


You know what I'm going to write here by now, so I'll just leave you this link.


And finally...

When a thin blue outline just doesn't say focused enough. 😂