16.3.4 Kotlin 2024 年 Google Summer of Code
6 分钟阅读
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 贡献者指南
入门
- 官方 Kotlin 网站是一个很好的起点。
- 阅读官方文档,更好地理解这门语言。
- 看看 JetBrains Academy 上的 Kotlin 课程,或 Android 团队的培训选项。
- 关注 Kotlin X 或 Kotlin Bluesky 账号,了解最新新闻和进展。
- 查看 Kotlin YouTube 频道,获取教程、技巧和最新更新。
- 了解 Kotlin 开源社区:
- 浏览通用的 Kotlin 贡献指南。
- 加入 Kotlin Slack 频道,与其他开发者交流并获得帮助,解决你可能遇到的任何问题。
- 加入 #gsoc 频道,向 GSoC 团队提问并获取支持。
如何申请
- 查看项目构想,选择一个你愿意参与的项目。
- 如果你不熟悉 Kotlin,请阅读 Kotlin 网站上的入门信息。
- 参考 GSoC 贡献者指南。
- 通过 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 组件画廊生成器 [中等,350 小时]
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
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 构建服务器 – 支持 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
为 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