Skip to content

Kotlin 的 2023 Google Summer of Code

這篇文章包含了 Kotlin 的 2023 Google Summer of Code 專案構想清單

2023 Google Summer of Code 已經結束。 如果你想參加 2024 GSoC,請查看此專案構想清單

專案構想

Kotlin Multiplatform protobuf [困難, 350 小時]

說明

protoc 新增 Kotlin/Common proto 的支援,並包含 Kotlin/Native (iOS) 執行階段與 Objective-C 互通性 (interop)。

動機

雖然 protobuf 有許多平台實作,但目前還沒有在 Kotlin Multiplatform 專案中使用它們的方法。

預期成果

設計並建立 Kotlin Multiplatform protobuf 支援,最終貢獻至:

所需技能(偏好)

  • 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 語言支援。 在此專案範圍內,你將改進外掛程式的參數轉發 (parameter forwarding) 支援。

「組合優於繼承」(composition over inheritance) 是一個廣為人知的原則。 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 外掛程式開發