Skip to content

Google Summer of Code 与 Kotlin 2023

本文包含了 Google Summer of Code 与 Kotlin 2023 的项目构想列表

Google Summer of Code 2023 已经结束。 如果你想参加 GSoC 2024,请查看此项目构想列表

项目构想

Kotlin 多平台 protobuf [困难,350 小时]

描述

为带有 Kotlin/Native (iOS) 运行时和 Objective-C 互操作的 protoc 添加对 Kotlin/Common proto 的支持。

动机

虽然 protobuf 有许多平台实现,但目前还没有在 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 小时]

描述

该项目旨在创建一个主要针对 Gradle 脚本的 Groovy 到 Kotlin 转换器。 我们将从基础用例开始,例如当用户想要将 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 编写的多平台代码进行基准测试的开源库。 它目前只有一个基础架构,缺乏一些提升生活质量的功能,例如细粒度的基准测试配置(如时间单位、模式)、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 插件开发