Swift 开源:如何成为贡献者并提升职业生涯

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么开源不仅仅是利他主义?



你是否曾看着 Alamofire、Vapor 或 Swift 本身的仓库,心想:“这对我来说太难了”?或者相反,你想添加自己的功能,但又担心你的代码会被嘲笑?欢迎加入这个俱乐部。

事实上,为 Swift 开源项目做贡献是开发者成长最快的方式之一。你不仅仅是为自己或客户编写代码——你是在学习如何在分布式团队中工作,接受世界顶级工程师的代码审查,并建立能为你代言的个人作品集。

在本文中,我们将分析一个真实的路径:从寻找第一个任务到被接受的 pull request。没有废话——只有 Swift、GitHub 和你的意愿。



第一步:找到“你的”项目

不要试图立即为 Swift 编译器做贡献。从你自己使用的项目开始。打开你应用的 Package.swift——很可能里面有你每天使用的库。以下是一些入门方向:

  • 流行库: Alamofire, Kingfisher, SnapKit, SwiftyJSON。
  • 服务器端 Swift: Vapor, Perfect, Kitura。
  • Apple 框架: SwiftNIO, Swift Collections, Swift Algorithms(Apple 官方仓库)。
  • 工具: SwiftLint, Sourcery, CocoaPods(是的,其中有 Swift)。

在 GitHub 上打开 Issues 标签页,并按标签过滤:good first issue、help wanted、beginner。这些是项目作者认为适合新手的任务。



如何判断任务是否适合你?

阅读描述。如果写着“添加测试”或“修复文档中的拼写错误”——毫不犹豫地接下。如果任务需要深入理解多线程或元编程——最好先放一放。



第二步:阅读代码,而不仅仅是文档

在编写代码之前,学习项目的风格。Swift 社区在格式化方面相当保守。查看 CONTRIBUTING.md(如果没有——这是个不好的迹象,但并非致命)。看看最近几个被接受的 PR——人们如何命名变量,在哪里加空格,使用 guard 还是 if let。

Alamofire 中典型风格的示例:

public func request(    _ convertible: URLConvertible,    method: HTTPMethod = .get,    parameters: Parameters? = nil,    encoding: ParameterEncoding = URLEncoding.default,    headers: HTTPHeaders? = nil) -> DataRequest {    let request = Session.default.request(        convertible,        method: method,        parameters: parameters,        encoding: encoding,        headers: headers    )    return request}

注意:显式的参数标签,仅在需要时使用 public,没有像 req 这样的缩写。尽量以同样的方式编写。



第三步:Fork、clone、branch——基础

Fork 仓库,将其克隆到本地,并创建一个有意义的名称的新分支:

git clone https://github.com/你的用户名/Alamofire.gitcd Alamofiregit checkout -b fix/typo-in-readme

永远不要在 main 分支上工作——这是不礼貌的。分支按模板命名:fix/...、feature/...、docs/...。这有助于维护者快速理解你贡献的实质。



第四步:明智地编写代码

假设你找到了一个 issue:“为 URLRequest 添加带有超时间隔的便捷初始化器”。任务很简单——添加一个新的初始化器。不要过度复杂化。解决方案可能如下所示:

extension URLRequest {    /// 创建一个带有自定义超时间隔的 URLRequest。    /// - 参数:    ///   - ur                

博客

书籍推荐