2024 年 Kotlin 的 Google 编程之夏
本文包含了 2024 年 Kotlin Google 编程之夏的 项目构想列表,以及 贡献者指南。
Kotlin 资源:
- Kotlin GitHub 仓库
- Kotlin Slack 以及 #gsoc Slack 频道
如果您有任何疑问,请通过 [email protected] 联系我们
Google 编程之夏 (GSoC) Kotlin 贡献者指南
入门指南
查看 GSoC 常见问题解答 和 项目公告。
熟悉 Kotlin 语言:
- 官方 Kotlin 网站 是一个很好的起点。
- 阅读官方 文档 以更好地了解该语言。
- 查看 JetBrains Academy 上的 Kotlin 课程或 Android 团队的 培训选项。
- 关注 Kotlin X 或 Kotlin Bluesky 账号,了解最新消息和动态。
- 访问 Kotlin YouTube 频道 获取教程、提示和最新更新。
了解 Kotlin 开源社区:
- 探索通用的 Kotlin 贡献准则。
- 加入 Kotlin Slack 频道 与其他开发者交流,并就您可能遇到的任何问题寻求帮助。
- 加入 #gsoc 频道 提问并获得 GSoC 团队的支持。
如何申请
- 查看 项目构想 并选择您想要参与的项目。
- 如果您不熟悉 Kotlin,请 阅读 Kotlin 网站上的入门信息。
- 参考 GSoC 贡献者指南。
- 通过 GSoC 网站 进行申请。
- 我们建议您编写一个与所提议项目相关的可用代码示例。您也可以向我们展示任何让您特别自豪的代码示例。
- 描述您对 Kotlin 感兴趣的原因以及您的使用经验。
- 如果您参与过开源项目,请列出您的贡献历史。
- 如果您有 GitHub、Twitter 账号、博客或技术/科学出版物作品集,也请一并提供。
- 说明任何因其他安排(如考试和假期)而与 GSoC 时间线产生的冲突。
谢谢!我们期待阅读您的申请!
项目构想
Kotlin-to-WebAssembly 编译器的增量编译 [困难,350 小时]
增量编译是一种通过仅重新编译更改的文件而不是整个程序(也称为执行全量构建)来提高编译速度的技术。Kotlin-to-Wasm 编译器目前仅支持全量构建,但在该项目中,我们将对其进行增强,使其也支持增量编译。
预期成果
在 Kotlin-to-WebAssembly 编译器中实现增量编译功能,助力提升开发工作流效率。
所需技能(优先)
Kotlin
可能的导师
Artem Kobzar, JetBrains
结合 Skia Node.js 原生绑定的 Compose Multiplatform [困难,350 小时]
Compose Multiplatform 是一个声明式框架,用于在多个平台间共享使用 Kotlin 构建的 UI。目前渲染桌面应用程序的方法是将 JVM 作为平台,但如果我们为 Web 使用 Compose Multiplatform,并尝试在浏览器之外使用 Skia 的原生绑定运行应用程序会怎样呢?这会提高桌面应用程序的性能并降低内存消耗吗?还是会适得其反?我们将在本项目中揭晓答案!
预期成果
将 Skia 绑定与 Compose Multiplatform 集成,并评估其对桌面应用程序性能的影响。
所需技能(优先)
Kotlin、Node.js、C++ 或 Rust
可能的导师
Artem Kobzar, JetBrains
Compose Multiplatform 组件画廊生成器 [中等,350 小时]
Compose Multiplatform 是一个声明式框架,用于在多个平台间共享使用 Kotlin 构建的 UI。在 Web 开发的 React 时代初期,Storybook 应运而生,其提出的描述组件状态并生成整个 UI 库画廊的方法,至今仍是 Web 开发中核心的文档编写方式之一。我们能否对 Compose Multiplatform 做同样的事情,利用它生成 Web UI 元素画廊,以及移动端和桌面端的画廊?让我们在本项目中尝试一下。
预期成果
创建一个工具,使用 Compose Multiplatform 为 Web、移动端和桌面平台生成 UI 组件画廊。
所需技能(优先)
Kotlin、Jetpack Compose、UI/UX 设计
可能的导师
Artem Kobzar, JetBrains
声明式 Gradle 的 Kotlin DSL 改进 [中等,175 小时]
去年 11 月,Gradle 团队 宣布了新的声明式 Gradle 项目,并在项目中引入了更高级别的 Kotlin DSL。我们邀请 GSoC 贡献者加入我们,共同改进新 DSL 的开发者体验,特别是通过在 Gradle 插件中实现可扩展性,以支持最常见的 Kotlin 和 Java 项目集成:静态分析、Kotest 等测试框架。
预期成果
在 Gradle 的 Kotlin DSL 中实现可扩展性功能,并改进对常见项目集成的支持。
所需技能(优先)
Kotlin、Gradle、Java、静态分析
可能的导师
Oleg Nenashev, Gradle
Kotlin DSL 文档示例测试框架 [简单或中等,90 小时或 175 小时]
许多项目(包括 Gradle)都有大量的 Kotlin DSL 示例和代码片段(请参阅 Gradle 文档 中的示例)。针对多个版本测试这些示例面临挑战,因为为了简明起见,这些代码片段通常是不完整的代码。我们希望构建一个测试框架,以便在 GitHub Actions 和 TeamCity 上的单元测试框架(Kotest 或 JUnit 5)中简化这些示例的验证。
预期成果
实现一个用于 Kotlin DSL 示例的基础测试框架,并与 GitHub Actions 集成以进行持续测试。
所需技能(优先)
Kotlin、测试框架、CI/CD
可能的导师
Oleg Nenashev, Gradle
Gradle 构建服务器 – 支持 Android 项目 [中等或困难,175 小时或 350 小时]
Kotlin 和 Gradle 是构建 Android 项目的默认选择。2023 年 11 月,Microsoft 团队 宣布了 Gradle 构建服务器项目,这是 构建服务器协议 (BSP) 的 Gradle 特定实现。如果能在其中引入对 Android 构建的完整支持,那将非常有意义。对于规模较小的项目,可以在 Gradle 构建服务器中实现 Gradle 任务的自动发现和取消功能。
预期成果
在 Gradle 构建服务器中实现 Android 项目支持,包括自动发现和任务取消。
所需技能(优先)
Kotlin、Gradle、Android 开发、Visual Studio Code
可能的导师
Oleg Nenashev, Gradle
为 Kotlin/Native 基准测试实现内存使用分析 [中等,175 小时]
kotlinx-benchmark 库 是一个开源工具包,旨在简化 Kotlin 代码在各种平台上的基准测试。它目前具有针对 JVM 的 GC 分析功能,详细记录了每个基准测试方法的分配率。本项目旨在将类似的分析能力扩展到 Kotlin/Native,从而实现跨平台统一的基准测试能力。
贡献者将与 Kotlin/Native 团队密切合作,创建一个 API 以从 Kotlin/Native 内存管理器访问分配数据。目标是生成与 JVM 格式一致的报告,确保数据呈现跨平台的一致性。此外,该项目还涉及识别并纠正其他库功能在报告格式上的差异,从而标准化基准测试输出以进行全面的跨平台分析。
预期成果
在 kotlinx-benchmark 中为 Kotlin/Native 实现内存使用分析并标准化基准测试输出。
所需技能(优先)
Kotlin、Kotlin/Native、基准测试、内存分析
可能的导师
Abduqodiri Qurbonzoda, JetBrains
Alexander Shabalin, JetBrains
在 kotlinx-benchmark 中支持 Android 目标平台 [中等,175 小时]
kotlinx-benchmark 库 是一个开源工具,专为跨多个平台(包括 JVM、JS、WasmJs 和 Native)对 Kotlin 代码进行基准测试而设计。尽管其具有广泛的兼容性,但该库目前不支持在 Android 上进行基准测试。本项目旨在弥补这一差距。计划是在后台利用现有的 Android 库(如 androidx.benchmark)来集成此功能。该项目的一个关键方面是确保目前在其他平台上可用的所有功能在 Android 上也得到支持,从而保持该库的多平台效用。
预期成果
在 kotlinx-benchmark 中集成对 Android 平台的基准测试支持,确保与其它平台的功能对等。
所需技能(优先)
Kotlin、Android 开发、基准测试
可能的导师
Abduqodiri Qurbonzoda, JetBrains
Rahul Ravikumar, Google
在 IntelliJ IDEA 中为 kotlinx-benchmark 基准测试启用点击运行功能 [中等,175 小时]
kotlinx-benchmark 是一个用于对 Kotlin 编写的多平台代码进行基准测试的开源库。它包含一个 Gradle 插件,应用该插件后可提供运行基准测试的任务。然而,执行这些任务需要导航到 IDE 的 Gradle 面板或使用终端。此外,运行特定的基准测试需要额外的步骤,增加了复杂性。为了减少这种不便并简化流程,本项目旨在让用户能够直接从 IntelliJ IDEA 界面运行单个基准测试或整个套件,从而获得与单元测试相同的便利体验。实现这一目标可能需要与 IntelliJ IDEA 团队协作,和/或直接向 IntelliJ 项目贡献代码。
预期成果
在 IntelliJ IDEA 中集成 kotlinx-benchmark 基准测试的点击运行功能,提升用户体验。
所需技能(优先)
Kotlin、IntelliJ IDEA 插件开发、基准测试
可能的导师
Abduqodiri Qurbonzoda, JetBrains
