2023 年 Kotlin Google 编程之夏
本文包含 2023 年 Kotlin Google 编程之夏的项目创意列表。
2023 年 Google 编程之夏已结束。 如果你想参加 2024 年 GSoC,请查阅这个项目创意列表。
项目创意
Kotlin Multiplatform protobufs [难度:高,350 小时]
描述
为 protoc
添加对 Kotlin/Common protos
的支持,并支持 Kotlin/Native (iOS) 运行时和 Objective-C 互操作。
动机
尽管 protobufs
有许多平台实现,但目前无法在 Kotlin Multiplatform 项目中使用它们。
预期成果
设计并构建 Kotlin Multiplatform Protobuf 支持,最终贡献给:
- GitHub – protocolbuffers/protobuf: Protocol Buffers – Google 的数据交换格式
- GitHub – google/protobuf-gradle-plugin
- Kotlin Multiplatform Gradle 插件
所需技能(优先)
- Kotlin
- Objective-C
- C++
Kotlin 编译器错误消息 [难度:高,350 小时]
描述
为 K2 Kotlin 编译器添加改进的编译器错误消息:提供更具可操作性和更详细的信息(如 Rust)。
动机
Rust 编译器错误消息通常被认为是所有编译器中迄今为止最有帮助的。 Kotlin K2 编译器为改进 Kotlin 中的编译器错误提供了良好的基础,但这一潜力尚未完全发掘。
预期成果
利用 StackOverflow 和其他数据源,发现对用户具有显著价值的常见编译器错误。 回馈贡献给编译器以改进这些错误消息。
所需技能(优先)
- Kotlin
- 编译器架构
Kotlin Multiplatform 库 [难度:易或中等,175 或 350 小时]
描述
创建并交付(到 Maven Central)常用的 Kotlin Multiplatform 库。 例如,压缩、加密。
动机
Kotlin Multiplatform 仍然相对较新,需要一些额外的库,这些库可以是平台无关的(Kotlin/Common),并且/或者具有平台实现(expect
/actual
)。
预期成果
设计并交付至少一个 Kotlin Multiplatform 库,其中对 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-Click 跳转到定义、代码补全、代码错误高亮等都可以改进。
预期成果
为 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 编写的多平台代码进行基准测试的开源库。 它有一个基本框架,但缺少质量改进特性,例如细粒度基准测试配置(如时间单位、模式)、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 插件开发