Skip to content

Google Summer of Code 与 Kotlin 2023

本文包含适用于 Google Summer of Code 与 Kotlin 2023 的项目创意列表

NOTE

Google Summer of Code 2023 已结束。

如果您想参加 GSoC 2024,请查看此项目创意列表

项目创意

Kotlin 多平台 Protobufs [难度:高,350 小时]

描述

protoc 添加对 Kotlin/Common Protobufs 的支持,并附带 Kotlin/Native (iOS) 运行时和 Objective-C 互操作。

动机

虽然 Protobufs 有许多平台实现,但目前没有办法在 Kotlin 多平台项目中使用它们。

预期成果

设计并构建 Kotlin 多平台 Protobuf 支持,最终贡献给:

所需技能(优先)

  • Kotlin
  • Objective-C
  • C++

Kotlin 编译器错误消息 [难度:高,350 小时]

描述

为 K2 Kotlin 编译器添加改进的编译器错误消息:提供更具可操作性且详细的信息(如 Rust 所示)。

动机

Rust 编译器错误消息通常被认为是所有编译器中最有帮助的。Kotlin K2 编译器为在 Kotlin 中提供更好的编译器错误奠定了良好基础,但这种潜力尚未充分发掘。

预期成果

利用 StackOverflow 和其他数据源,发现对用户具有重要价值的常见编译器错误。回馈编译器以改进这些错误消息。

所需技能(优先)

  • Kotlin
  • 编译器架构

Kotlin 多平台库 [难度:低或中,175 或 350 小时]

描述

创建并发布(到 Maven Central)常用的 Kotlin 多平台库。例如,压缩、加密。

动机

Kotlin 多平台仍然相对较新,并且需要一些额外的库,这些库要么是平台无关的 (Kotlin/Common),和/或拥有平台实现 (expect/actual)。

预期成果

设计并交付至少一个 Kotlin 多平台库,优先考虑 JVM/Android 和 Kotlin/Native (iOS),而非其他目标(Kotlin/JS)。

所需技能(优先)

  • Kotlin
  • Objective-C

Groovy 转 Kotlin Gradle DSL 转换器 [难度:中,350 小时]

描述

该项目旨在创建一个 Groovy 到 Kotlin 的转换器,主要关注 Gradle 脚本。我们将从基本用例开始,例如当用户想要将 Groovy 风格的依赖声明粘贴到 Kotlin 脚本中时,IDE 会自动转换它们。随后,我们将开始支持更复杂的代码结构和完整文件的转换。

动机

Kotlin Gradle DSL 正在普及,甚至很快将成为使用 Gradle 构建项目的默认选择。然而,许多关于 Gradle 的文档和资源仍然提及 Groovy,并且将 Groovy 示例粘贴到 build.gradle.kts 中需要手动编辑。此外,许多围绕 Gradle 的新功能将首先在 Kotlin 中实现,因此用户将从 Groovy DSL 迁移到 Kotlin DSL。因此,构建设置的自动代码转换将极大地简化此迁移过程,节省大量时间。

预期成果

一个 IntelliJ IDEA 插件,能够将 Groovy 代码转换为 Kotlin,主要关注 Gradle DSL。

所需技能(优先)

  • Gradle 基础知识
  • 解析器和编译器工作原理的基础知识
  • Kotlin 基础知识

Eclipse Gradle KTS 编辑 [难度:中,350 小时]

描述

改善在 Eclipse 中编辑 Gradle Kotlin 脚本 (KTS) 的体验。

动机

IntelliJ IDEA 和 Android Studio 对编辑 KTS Gradle 构建脚本提供了很好的支持,但 Eclipse 的支持有所欠缺。Ctrl-点击定义、代码补全、代码错误高亮都需要改进。

预期成果

为 Gradle Eclipse 插件做出贡献,以改善编辑 KTS 的开发者体验。

所需技能(优先)

  • Kotlin
  • Gradle
  • Eclipse 平台和插件

改进 IntelliJ IDEA Kotlin 插件中参数转发的支持 [难度:中,350 小时]

描述和动机

Kotlin 插件 在 IntelliJ IDEA 和 Android Studio 中提供 Kotlin 语言支持。在本项目范围内,您将改进该插件的参数转发支持。

优先使用组合而非继承是一个广为人知的原则。IntelliJ IDEA 为编写使用继承的代码(IDE 建议的补全和快速修复)提供了很好的支持,但对使用组合而非继承的代码的支持尚未实现。

处理大量使用组合的代码的主要问题是参数转发。具体来说:

  • IDE 不会建议补全可以作为参数转发到当前使用默认参数的其他函数的参数声明。
  • IDE 不会重命名转发参数链。
  • IDE 不提供任何快速修复来用可以转发的参数填充所有必需的参数。

一个非常需要此类支持的显著例子是 Jetpack Compose。Android 现代 UI 构建工具包 Jetpack Compose 大量使用函数组合和参数转发。使用 @Composable 函数很快就会变得乏味,因为它们有大量参数。例如,androidx.compose.material.TextField 有 19 个参数。

预期成果

  • 改进 IntelliJ IDEA 中的参数和参数补全建议。
  • 实现 IDE 快速修复,建议用具有相同名称和类型的参数填充所有必需的参数。
  • 重构中的重命名功能重命名转发参数链。
  • 所有其他围绕参数转发和参数众多的函数的 IDE 改进。

所需技能(优先)

  • Kotlin 和 Java 知识
  • 在大型代码库中导航的能力

增强 kotlinx-benchmark 库的 API 和用户体验 [难度:低,175 小时]

描述

kotlinx-benchmark 是一个用于基准测试 Kotlin 编写的多平台代码的开源库。它有一个基本框架,但缺少生活质量功能(quality-of-life features),例如,细粒度的基准测试配置(如时间单位、模式)、JVM 和 Kotlin/Native 基准测试之间的功能对等、命令行 API 和现代 Gradle 支持。它的文档、集成测试和示例也滞后了。

动机

该库已经实现,但有时难以正确使用,并让一些用户感到困惑。改善该库的用户体验将极大地帮助 Kotlin 社区。

预期成果

  • 该库拥有清晰的文档和使用示例。
  • 该库的 API 简单易用。
  • 基准测试 Kotlin/JVM 代码的选项也可用于基准测试其他平台上的代码。

所需技能(优先)

  • Kotlin
  • Gradle 内部机制

调试器中 Kotlin 协程的并行堆栈 [难度:高,350 小时]

描述

实现 并行堆栈 视图,适用于 Kotlin 协程,以改进协程调试体验。

动机

目前,IntelliJ IDEA 中对协程调试的支持非常有限。Kotlin 调试器有一个协程面板,允许用户查看所有协程及其状态,但在调试包含大量协程的应用程序时,它不是很有用。JetBrains Rider 具有并行堆栈 功能,允许用户以图表视图检查线程及其堆栈跟踪,这可能是检查协程的好方法。

预期成果

使用 Kotlin 协程调试器 API,开发 IntelliJ IDEA 插件,该插件将为调试器添加协程的并行堆栈视图。寻找改进协程图表示的方法。

所需技能(优先)

  • Kotlin
  • Kotlin 协程
  • IntelliJ IDEA 插件开发