The role of vision documents in Swift evolution

This post brought me back. Ages ago, in the olden days when swift-evolution was a mailing list and dinosaurs roamed the earth — i.e 2017 — I expressed concern about the strictly incremental nature of the SE process:

(Ted Kremenek agreed in response that “some of the proposals have felt like steps of a hill-climbing algorithm”, which I thought was wall said.)

It’s satisfying to reflect on how far the process has come since then.

I was worried about the “proposals must have implementations” requirement, but that has borne tremendous fruit: sharper, better-written proposals with a better understanding of quirks, corner cases, and tradeoffs, and far less backtracking in the evolution process.

And contrary to my concerns about the evolution process tending toward “greedy optimization,” Swift has successfully undertaken large-scale evolutions that require holistic design thinking about many interlocking proposals: concurrency, bringing much-needed generality to the generic type system, and now ownership control…the list goes on.

Manifestos played a crucial role in all of that work. Officially bringing them into the fold as vision documents feels like closing the loop on my 2017 concerns. Both my concerns in that old post are well addressed. We have not only a better language than we did 5 years ago, but a better process for evolving it.

No concerns or criticism here, just appreciation for the people who’ve brought Swift so far over the years. It has been a true community effort, and it’s heartening to see a community effort succeed.

36 Likes