Google 程式碼之夏與 Kotlin 2023
本文包含 Google 程式碼之夏與 Kotlin 2023 的專案構想列表。
專案構想
Kotlin 多平台 protobufs [困難,350 小時]
描述
為 protoc 新增 Kotlin/Common protos 支援,同時支援 Kotlin/Native (iOS) 執行階段和 Objective-C 互通。
動機
儘管 protobufs 有許多平台實作,但在 Kotlin 多平台專案中尚無法使用它們。
預期成果
設計並建構 Kotlin 多平台 Protobuf 支援,最終貢獻至:
- GitHub – protocolbuffers/protobuf: Protocol Buffers – Google's data interchange format
- GitHub – google/protobuf-gradle-plugin
- Kotlin Multiplatform Gradle Plugin
所需技能 (優先)
- 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 小時]
NOTE
描述
改進在 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 小時]
NOTE
描述
kotlinx-benchmark
是一個用於基準測試 Kotlin 編寫的多平台程式碼的開源函式庫。它有一個基本的骨架,但缺少品質改進功能,例如細粒度的基準測試配置(如時間單位、模式)、JVM 和 Kotlin/Native 基準測試之間的特性一致性、命令列 API 和現代 Gradle 支援。其文件、整合測試和範例也落後了。
動機
該函式庫已實作,但有時難以正確使用並讓一些使用者感到困惑。改善函式庫的使用者體驗將極大地幫助 Kotlin 社群。
預期成果
- 函式庫擁有清晰的文件和使用範例。
- 函式庫 API 簡單易用。
- 基準測試 Kotlin/JVM 程式碼的選項也可用於基準測試其他平台上的程式碼。
所需技能 (優先)
- Kotlin
- Gradle 內部機制
偵錯器中 Kotlin 協程的平行堆疊 [困難,350 小時]
NOTE
描述
實作 Kotlin 協程的平行堆疊檢視,以改進協程除錯體驗。
動機
目前,IntelliJ IDEA 對協程除錯的支援非常有限。Kotlin 偵錯器擁有協程面板,允許使用者檢視所有協程及其狀態,但在除錯具有大量協程的應用程式時幫助不大。JetBrains Rider 具有平行堆疊功能,允許使用者以圖形檢視檢查執行緒及其堆疊追蹤,這可能是檢查協程的好方法。
預期成果
使用 Kotlin 協程偵錯器 API,開發 IntelliJ IDEA 外掛程式,該外掛程式將為偵錯器新增協程的平行堆疊檢視。尋找改進協程圖形表示的方法。
所需技能 (優先)
- Kotlin
- Kotlin 協程
- IntelliJ IDEA 外掛程式開發