Skip to content

Kotlin 2024 年度 Google 编程之夏

本文包含 Kotlin 2024 年度 Google 编程之夏的项目创意列表贡献者指南

Kotlin 资源:

如有任何疑问,请通过 [email protected] 联系我们

Kotlin 2024 年度 Google 编程之夏贡献者指南 (GSoC)

开始使用

  1. 查看 GSoC 常见问题项目公告

  2. 熟悉 Kotlin 语言:

  3. 了解 Kotlin 开源社区:

如何申请

  1. 查阅项目创意 并选择你想要从事的一个。
  2. 如果你不熟悉 Kotlin,请阅读 Kotlin 网站上的入门信息
  3. 参考 GSoC 贡献者指南
  4. 通过 GSoC 网站 申请。
    • 我们建议你编写一个与所提项目相关的可运行代码示例。你也可以向我们展示任何你尤其引以为傲的代码示例。
    • 描述你对 Kotlin 感兴趣的原因以及你使用它的经验。
    • 如果你参与了开源项目,请提供你的贡献历史。
    • 如果你有 GitHub、Twitter 账号、博客或技术或科学出版物作品集,也请一并提及。
    • 请披露因其他承诺(例如考试和假期)而与 GSoC 时间线产生的任何冲突。

谢谢!我们期待阅读你的申请!

项目创意

Kotlin-to-WebAssembly 编译器的增量编译 [难度:高,350 小时]

增量编译是一种技术,通过仅重新编译更改的文件而不是整个程序(也称为执行干净构建)来帮助提高编译速度。Kotlin-to-Wasm 编译器当前仅支持干净构建,但在本项目中,我们将增强其以支持增量编译。

预期成果

在 Kotlin-to-WebAssembly 编译器中实现增量编译特性,有助于实现更快的开发工作流。

所需技能(优先)

Kotlin

可能导师

Artem Kobzar, JetBrains

Compose Multiplatform 与 Node.js 的 Skia 原生绑定 [难度:高,350 小时]

Compose Multiplatform 是一个声明式框架,用于在多个平台之间共享使用 Kotlin 构建的 UI。当前渲染桌面应用程序的方法是使用 JVM 作为平台,但如果我们使用 Compose Multiplatform for Web 并尝试通过 Skia 的原生绑定在浏览器外部运行应用程序,会怎么样呢?这会改善桌面应用程序的性能和内存消耗吗?还是会产生相反的效果?我们将在本项目中找出答案!

预期成果

将 Skia 绑定与 Compose Multiplatform 集成,并评估其对桌面应用程序的性能影响。

所需技能(优先)

Kotlin, Node.js, C++ 或 Rust

可能导师

Artem Kobzar, JetBrains

Compose Multiplatform 组件画廊生成器 [难度:中,350 小时]

Compose Multiplatform 是一个声明式框架,用于在多个平台之间共享使用 Kotlin 构建的 UI。在 Web 开发的 React 时代之初,Storybook 应运而生,Storybook 提议的描述组件状态并生成整个 UI 库画廊的方法仍然是 Web 开发中文档的关键方法之一。我们能否使用 Compose Multiplatform 实现同样的功能,用它来生成 Web UI 元素的画廊,以及移动和桌面画廊?让我们在本项目中尝试一下。

预期成果

创建一个使用 Compose Multiplatform 为 Web、移动和桌面平台生成 UI 组件画廊的工具。

所需技能(优先)

Kotlin, Jetpack Compose, UI/UX 设计

可能导师

Artem Kobzar, JetBrains

Kotlin DSL 对声明式 Gradle 的改进 [难度:中,175 小时]

去年 11 月,Gradle 团队宣布了新的声明式 Gradle 项目,在该项目中引入了更高级的 Kotlin DSL。我们邀请 GSoC 贡献者加入我们,致力于改善新 DSL 的开发者体验,特别是通过在 Gradle 插件中实现可扩展性,以支持最常见的 Kotlin 和 Java 项目集成:静态分析、Kotest 等测试框架。

预期成果

在 Gradle 的 Kotlin DSL 中实现可扩展性特性,并改善对常见项目集成的支持。

所需技能(优先)

Kotlin, Gradle, Java, 静态分析

可能导师

Oleg Nenashev, Gradle

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 指南

Gradle 构建服务器 – 对 Android 项目的支持 [难度:中 或 高,175 小时 或 350 小时]

Kotlin 和 Gradle 是构建 Android 项目的默认选择。2023 年 11 月,微软团队宣布了 Gradle 构建服务器项目,这是 构建服务器协议 (BSP) 的 Gradle 特有的实现。在那里引入对 Android 构建的完整支持将是很棒的。对于范围较小的项目,可以在 Gradle 构建服务器中实现 Gradle 任务的自动发现和取消。

预期成果

在 Gradle 构建服务器中实现对 Android 项目的支持,包括自动发现和任务取消。

所需技能(优先)

Kotlin, Gradle, Android 开发, Visual Studio Code

可能导师

Oleg Nenashev, Gradle

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 库 是一个开源工具,旨在对 Kotlin 代码在多个平台(包括 JVM、JS、WasmJs 和 Native)上进行基准测试。尽管其兼容性广泛,但该库当前不支持在 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