16.3.4 Kotlin 2024 年 Google Summer of Code

原文链接: https://kotlinlang.org/docs/gsoc-2024.html

16.3.4 Kotlin 2024 年 Google Summer of Code

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

注意: Kotlin 资源:* Kotlin GitHub 仓库 * Kotlin Slack 以及 #gsoc Slack 频道 如果你有任何问题,请通过 gsoc@kotlinfoundation.org 联系我们

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

入门

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

  2. 熟悉 Kotlin 语言:

  1. 了解 Kotlin 开源社区:

如何申请

  1. 查看项目构想,选择一个你愿意参与的项目。
  2. 如果你不熟悉 Kotlin,请阅读 Kotlin 网站上的入门信息。
  3. 参考 GSoC 贡献者指南。
  4. 通过 GSoC 网站申请。
  • 我们建议你编写一段与所提议项目相关的可运行代码示例。你也可以向我们展示任何你特别引以为豪的代码示例。
  • 说明你为什么对 Kotlin 感兴趣,以及你在 Kotlin 方面的经验。
  • 如果你参与过开源项目,请提供你的贡献记录。
  • 如果你有 GitHub、Twitter 账号、博客,或技术/科学出版物作品集,也请一并提供。
  • 披露因考试、假期等其他安排而与 GSoC 时间线产生的任何冲突。

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

项目构想

Kotlin 到 WebAssembly 编译器的增量编译 [困难,350 小时]

增量编译是一种通过只重新编译发生更改的文件(而不是整个程序,即通常所说的干净构建)来提高编译速度的技术。Kotlin 到 Wasm 的编译器目前只支持干净构建,但在本项目期间,我们将增强它以同时支持增量编译。

预期成果

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

所需技能(优先)

Kotlin

可能的导师

Artem Kobzar,JetBrains

使用 Skia 的 Node.js 原生绑定运行 Compose Multiplatform [困难,350 小时]

Compose Multiplatform 是一个声明式框架,用于跨多个平台共享用 Kotlin 构建的 UI。目前渲染桌面应用的方式是以 JVM 作为平台,但如果我们把 Compose Multiplatform 用于 Web,并尝试借助 Skia 的原生绑定在浏览器之外运行应用,会怎样?这会改善桌面应用的性能和内存占用吗?还是会适得其反?我们将在本项目中一探究竟!

预期成果

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

所需技能(优先)

Kotlin、Node.js、C++ 或 Rust

可能的导师

Artem Kobzar,JetBrains

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

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 团队紧密合作,创建用于从 Kotlin/Native 内存管理器访问分配数据的 API。目标是生成与 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