May 10, 2021·4 min read·engineeringswiftcommunitymentorship

Swift mentorship makes contributor support an explicit commitment

Swift's new mentorship program pairs prospective contributors with experienced developers for twelve weeks. Its contribution-focused design addresses the gap between using a language and participating in its maintenance.

Knowing a programming language does not automatically explain how to contribute to the project that maintains it. A developer can understand application code and still lack the context needed to choose a suitable change or interpret review feedback. The Swift Mentorship Program announced on May 10 addresses that transition through a defined relationship with an experienced contributor.

The Diversity in Swift workgroup describes twelve weeks of mentorship, with matching based on a mentee's learning goals and a mentor's experience. Prior contributions are not required. The announcement welcomes applicants aged eighteen and above and explicitly includes people who are not students. Contributions can target an open-source project written in Swift or the compiler itself, depending on the participant's goals.

I find Swift's language design consistently thoughtful. A contribution program deserves a similarly precise account of what it is trying to make easier. The useful promise here is access to someone who can help turn an interest in the language into work on a particular open-source project. That is a different learning problem from becoming fluent in syntax.

Mentorship connects learning to an actual change

The announcement makes contributing code the goal of the pairing. This gives the relationship a concrete subject. A participant needs to understand a proposed change, the project accepting it and the evidence that the change is appropriate. Questions about implementation then arise in a context where the answers affect a real contribution.

A defined contribution also gives a mentor a way to calibrate scope. Some changes require substantial background before their correctness can be assessed. Others expose a narrower part of a project and let a newcomer build understanding incrementally. Matching learning goals with experience is useful because choosing between those kinds of work is itself a task that benefits from project knowledge.

This does not mean a small patch is inherently a better learning experience. A narrowly scoped change can be mechanical, while a larger investigation can teach an important design constraint. The relevant question is whether the participant can understand and explain the result within the available support. A mentor can help connect the visible diff to the reasoning that makes it acceptable.

For a language project, that reasoning matters beyond the immediate code. Changing behavior can affect programs that the contributor has never seen. A review can ask for compatibility evidence or an explanation of why a simpler alternative fails. Learning to answer those questions is part of learning to maintain software with users outside one's own application.

A fixed period makes the support obligation visible

Twelve weeks gives both participants a stated period in which to work together. That boundary does not establish how quickly any particular contribution will be accepted. It does make the support relationship more concrete than an open invitation to ask questions whenever a maintainer happens to be available.

The distinction matters to mentors as well as mentees. Helping someone reason through an unfamiliar codebase takes attention. Explaining why an approach is unsuitable can take longer than making the change directly. A program that names the period of participation gives experienced contributors an obligation they can consider before volunteering.

The announcement presents mentoring as a leadership opportunity for maintainers and frequent contributors. That description fits the work involved. A mentor needs to explain decisions in a form another developer can use, including decisions that have become routine through familiarity. The resulting explanation can reveal assumptions that are absent from a short issue description or review comment.

I value that kind of explanation because readable code still has a surrounding decision history. A contributor can follow the implementation and miss the reason a behavior must remain unchanged. Mentorship is useful when it makes those constraints available without treating familiarity with the project's history as a prerequisite for participating.

The program extends an existing community initiative

The earlier Diversity in Swift announcement, published on December 16, 2020, describes improving participation and helping developers establish technical expertise and leadership. Its initial efforts include Women in Swift and Black in Swift, with private moderated spaces on the Swift Forums. It also introduces community-focused writing on Swift.org.

Mentorship adds a contribution-oriented relationship to that work. A discussion space can help developers meet peers and ask questions. A mentor pairing can attach that support to the particular decisions involved in producing a change. Those activities can serve the same participation goal while meeting different needs.

The announcement also permits work outside the compiler. That scope recognizes that contributing to the Swift ecosystem need not begin with changing the language implementation. A participant interested in a library can work on software whose domain matches their learning goals. The program's stated matching criteria leave room for that distinction.

At launch, there are no results to assess. The workgroup plans to publish participant contributions and learning on the Swift.org blog after the program. Those accounts can explain what the pairings actually helped participants do. For now, the specific commitment is a supported period of work aimed at an open-source contribution, with eligibility that does not depend on already belonging to the contributor community.