If you develop for Apple platforms and use a third-party testing framework, you are very likely using Quick and Nimble. Otherwise, you have probably at least heard of them. I don’t use any third-party testing frameworks in my personal projects, but I have worked on teams that do. And I currently work on a team that uses Quick and Nimble, which is why it was important for me to get a recent critical bug fixed in Quick.

A severe regression was introduced with Xcode 13.3 that caused tests to fail to be discovered. This meant that none of the tests in your entire test suite were being run while Xcode reported they all successfully passed. The bug also meant that you could not make any tests fail. I’m not entirely sure of the underlying issue or “who’s to blame” — did Xcode 13.3 fix incorrect behavior that Quick was unknowingly exploiting and thus the issue in Quick was just now exposed, or did Xcode introduce an actual bug? In any case, the good news is that this is fixed in the Quick 5.0 release.

My team discovered the problem after switching our CI over to Xcode 13.3 and promptly found an open issue for the bug on GitHub. Someone even had a pull request already opened to fix the issue. (I would credit them, but they have since deleted their GitHub account, which is bizarre. No idea what’s going on there.) The problem then was that the Quick project was suffering from a bit of neglect. Many of the original authors and maintainers have not been involved with the project for years, and the last release was almost 1 year ago. Sho Ikeda was the most active recent maintainer, but also unavailable. No one was immediately available to review and merge the PR.

Luckily, I know a few of the original core maintainers and I reached out to them for help to resolve the immediate issue, as well as get access to the project so I could help maintain it and get an official release tagged with the fix. Many thanks to Ash Furrow and Jeff Hui for stepping up, despite not being involved with this project for many years! And many thanks to Sho Ikeda for the years of maintenance leading up to this most recent release.

Anyway, I spent a couple hours each day last week to track down all the changes since the 4.0 release, organize them into the 5.0 milestone, get as many pull requests merged as possible, close stale issues and PRs, and generally get the project cleaned up and organized. I also did the same with Nimble and will be helping finish its 10.0 release. I do not plan to contribute code to these two projects, but I am able to help with project management, code review, and releases.

My primary concern when getting involved was merely to unblock my own team and not have to manage a fork of the project, but I decided to go above and beyond that and volunteer to help the rest of the community and help get the project into better shape. Thousands of people rely on this project, and I know exactly how they felt being blocked by this bug. I also recognize that I’m in a position of privilege — I have had the opportunity to build an extensive history of experience in maintaining open source projects, as well as get deeply involved with and build relationships with folks in the iOS community. If I hadn’t been able to leverage my relationships with Ash and Jeff, none of this would have happened. I’m glad I could use that privilege to help everyone else.

The Quick 5.0 release was substantial. It did not only include the critical bug fix mentioned above, but a few new features as well. You can view the complete release notes here. It was absolutely a community effort. While your thanks is appreciated, the best way to show gratitude in open source is with money. That’s capitalism, baby! It’s a terrible system that no one asked for, but here we are with no choice but to participate. It is a privilege to have the ability and capacity to work for free on open source, but that doesn’t mean contributors don’t deserve compensation. If you use Quick and Nimble, cannot contribute your time, and have money to spare — then consider sponsoring me on GitHub or sending me money another way. You should also send your love — and by love, I mean money, baby! — to all the other contributors to the 5.0 release, which are listed at the bottom of the release notes.