跳到主要内容

2024 年 Kotlin 的 Google 编程之夏活动

本文包含 Kotlin 2024 Google Summer of Code 的项目构想列表贡献者指南

备注

Kotlin 资源:

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

Kotlin Google Summer of Code (GSoC) 贡献者指南

入门

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

  2. 熟悉 Kotlin 语言:

  3. 了解 Kotlin 开源社区:

如何申请

  1. 查看项目构想并选择您想要从事的项目。
  2. 如果您不熟悉 Kotlin,请阅读 Kotlin 网站上的介绍性信息
  3. 参考 GSoC 贡献者指南
  4. 通过 GSoC 网站 申请。
    • 我们建议您编写一个与拟议项目相关的工作代码示例。您也可以向我们展示您特别引以为傲的任何代码示例。
    • 描述您对 Kotlin 的兴趣以及您使用 Kotlin 的经验。
    • 如果您参与开源项目,请参考您的贡献历史。
    • 如果您有 GitHub、Twitter 帐户、博客或技术或科学出版物作品集,也请参考它们。
    • 披露由于其他承诺(例如考试和假期)而与 GSoC 时间表发生的任何冲突。

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

项目构想

Kotlin 到 WebAssembly 编译器(Kotlin-to-WebAssembly compiler)的增量编译 [Hard, 350 hrs]

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

预期成果

在 Kotlin 到 WebAssembly 编译器中实现增量编译功能,从而加快开发工作流程。

所需技能(首选)

Kotlin

可能的导师

Artem Kobzar, JetBrains

适用于 Skia 的具有 Node.js 原生绑定的 Compose Multiplatform [Hard, 350 hrs]

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

预期成果

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

所需技能(首选)

Kotlin, Node.js, C++ 或 Rust

可能的导师

Artem Kobzar, JetBrains

Compose Multiplatform 组件库生成器 [Medium, 350 hrs]

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

用于声明式 Gradle 的 Kotlin DSL 改进 [Medium, 175 hrs]

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

预期成果

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

所需技能(首选)

Kotlin, Gradle, Java, 静态分析

可能的导师

Oleg Nenashev, Gradle

Gradle 指南

Kotlin DSL 文档示例测试框架 [Easy or Medium, 90 hrs or 175 hrs]

包括 Gradle 在内的许多项目都有大量的 Kotlin DSL 示例和代码片段 (有关示例,请参见 Gradle Docs)。 针对多个版本对其进行测试带来了一定的挑战,因为这些片段通常为了简洁起见而表示不完整的代码。 我们希望构建一个测试框架,该框架简化了在 GitHub Actions 和 Teamcity 上使用单元测试框架 (Kotest 或 JUnit 5)验证这些示例的过程。

预期成果

实现 Kotlin DSL 示例的基本测试框架,并与 GitHub Actions 集成以进行持续测试。

所需技能(首选)

Kotlin, 测试框架, CI/CD

可能的导师

Oleg Nenashev, Gradle

Gradle 指南

Gradle 构建服务器 – 支持 Android 项目 [Medium or Hard, 175 hrs or 350 hrs]

Kotlin 和 Gradle 是构建 Android 项目的默认选择。 2023 年 11 月,Microsoft 团队宣布了 Gradle Build Server 项目, 它是 Build Server Protocol (BSP) 的 Gradle 特定实现。 如果能够在其中引入对 Android 构建的完全支持,那就太好了。 对于范围较小的项目,可以在 Gradle Build Server 中实现 Gradle 任务的自动发现和取消。

预期成果

在 Gradle Build Server 中实现 Android 项目支持,包括自动发现和任务取消。

所需技能(首选)

Kotlin, Gradle, Android 开发, Visual Studio Code

可能的导师

Oleg Nenashev, Gradle

Gradle 指南

为 Kotlin/Native 基准测试实现内存使用情况分析 [Medium, 175 hrs]

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 目标 [Medium, 175 hrs]

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 基准测试启用点击运行 [Medium, 175 hrs]

kotlinx-benchmark 是一个开源库,用于对用 Kotlin 编写的多平台代码进行基准测试。 它包括一个 Gradle 插件,应用后,该插件提供用于运行基准测试的任务。 但是,执行这些任务需要导航到 IDE 的 Gradle 面板或使用终端。 此外,运行特定的基准测试需要执行更多步骤,这增加了复杂性。 为了减轻这种不便并简化该过程,该项目旨在使用户能够直接从 IntelliJ IDEA 界面运行单个基准测试 或整个套件,从而镜像为单元测试提供的便利。 实现此目标可能需要与 IntelliJ IDEA 团队合作和/或直接向 IntelliJ 项目贡献代码。

预期成果

在 IntelliJ IDEA 中集成 kotlinx-benchmark 基准测试的点击运行功能,从而改善用户体验。

所需技能(首选)

Kotlin, IntelliJ IDEA 插件开发, 基准测试

可能的导师

Abduqodiri Qurbonzoda, JetBrains