Exploring contribution opportunities around Swift Testing [feedback on GSoC proposal]

Hello Swift Community ! :)

My name is Demian Yoo. I’m a student from South Korea who studied at Apple Developer Academy @ POSTECH, and I’m currently studying to become an iOS developer. Along the way, I’ve become more interested in Swift, testing, and open-source contribution.

While building apps with AI features, I often ran into the cost and variability of calling external APIs repeatedly. That made me think more seriously about testing with mocks and validating behavior without depending on live API responses. This is what first led me to become interested in testing frameworks, and Swift Testing’s trait-based design caught my attention.

For this year’s GSoC, I wrote a proposal titled “Globally Scoped Traits for Swift Testing” and built a working prototype around it.

Here is my Proposal : [Proposal Link]

While working on the proposal, I spent a lot of time reading through Swift Testing’s internals and trying to understand its configuration flow, Runner planning, trait lifecycle, override semantics, and SwiftPM integration points.

I was not selected for GSoC this year, but the process made me want to keep contributing to Swift Testing even more. I learned a lot from exploring the codebase, trying different implementation paths, and validating the idea with a prototype. After spending this much time with the project, I realized I do not want to stop here.

If you have time, I would really appreciate feedback on a few things:

1. From a GSoC proposal perspective
I would like to understand which parts of my proposal were weaker in terms of scope, framing, technical direction, or impact, and what could have made it more compelling.

2. From a Swift Testing perspective
I would appreciate feedback on whether the direction I proposed — package-wide runtime configuration for Swift Testing traits — fits Swift Testing’s direction, or whether there are concerns around complexity, precedence, or API surface.

3. From a contribution perspective
Rather than trying to push the prototype as one large feature, I would like to break what I learned into smaller reviewable issues or pull requests. If there are existing issues or areas where I could be helpful, I would be grateful for guidance on where I might start.

If the proposal document does not explain some parts of the implementation or design intent clearly enough, I would be happy to explain the implementation flow and the reasoning behind specific design decisions.

Even if it starts with a small issue or pull request, I’d love to keep contributing to Swift Testing.

Thank you for taking the time to read this.

3 Likes

See my response here: [Pitch] Introduction of Globally Scoped Traits and Runtime Configuration - #5 by jerryjrchen

1 Like

Thanks Jerry, that makes sense.

I understand that the hard part here is not only implementing global traits, but figuring out how they should work with existing tools like Xcode test plans and SwiftPM.

I’ll step back from trying to push this as one big proposal for now, and instead try to break down the issues I ran into while prototyping into smaller discussion posts.

I’d also like to start contributing to Swift Testing in a smaller way first, maybe through documentation, tests, or diagnostics. I noticed there aren’t many open good first issue items right now, and the current one seems to already have work in progress. Are there any small tasks or areas that would be good for a new contributor, even if they aren’t currently labeled as good first issue?

Thanks again for the feedback.

At this time in the 6.4 release schedule, we don't have a lot of "good first issue" or "low-hanging fruit" work to do, but keep an eye on our issue list.

And if there's an issue you notice, you can always file it on GitHub!

1 Like

@grynspan Thank you for reading

I understand that there may not be many good first issues at this point in the 6.4 release schedule. I’ll keep an eye on the issue list, and if I notice anything that could be improved or filed, I’ll open an issue on GitHub.

Thanks again for your time!