Google Summer of Code 與 Kotlin 2023
本文包含 Google Summer of Code 與 Kotlin 2023 的 專案構想清單。
Google Summer of Code 2023 已結束。 如果您想參與 GSoC 2024,請查看 這份專案構想清單。
專案構想
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 Plugin
所需技能 (優先)
- 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 Script (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 快速修復,建議將所有必需的引數填入名稱和類型相同的參數。
- 重新命名 (Rename) 重構功能會重新命名轉發參數的鏈條。
- 關於參數轉發和具有大量參數的函數的所有其他 IDE 改進。
所需技能 (優先)
- Kotlin 和 Java 知識
- 在大型程式碼庫中導航的能力
增強 kotlinx-benchmark 程式庫的 API 和使用者體驗 [易, 175 小時]
描述
kotlinx-benchmark
是一個用於基準測試 Kotlin 編寫的多平台程式碼的開源程式庫。 它只有一個基本骨架,但缺乏改善使用體驗的功能,例如細粒度基準測試設定 (如時間單位、模式)、JVM 與 Kotlin/Native 基準測試之間的特性對等、命令列 API,以及現代 Gradle 支援。 其文件、整合測試和範例也滯後。
動機
該程式庫已經實作,但有時難以正確使用,並使一些使用者感到困惑。 改進該程式庫的使用者體驗將極大地幫助 Kotlin 社群。
預期成果
- 該程式庫擁有清晰且包含使用範例的文件。
- 該程式庫的 API 簡單易用。
- 用於基準測試 Kotlin/JVM 程式碼的選項也適用於基準測試其他平台上的程式碼。
所需技能 (優先)
- Kotlin
- Gradle 內部原理
偵錯器中 Kotlin Coroutines 的 Parallel Stacks [難, 350 小時]
描述
實作 Kotlin coroutines 的 Parallel Stacks 視圖,以改進 coroutine 偵錯體驗。
動機
目前,IntelliJ IDEA 中對 coroutines 偵錯的支援非常有限。 Kotlin 偵錯器有 Coroutines 面板,允許使用者查看所有 coroutines 及其狀態,但在偵錯包含大量 coroutines 的應用程式時,它並不是很實用。 JetBrains Rider 具有 Parallel Stacks 功能,允許使用者在圖形視圖中檢查執行緒及其堆疊追蹤,這可能是檢查 coroutines 的好方法。
預期成果
利用 Kotlin coroutines 偵錯器 API,開發 IntelliJ IDEA 外掛程式,將 coroutines 的 Parallel Stacks 視圖新增到偵錯器中。 尋找改進 coroutines 圖形表示的方法。
所需技能 (優先)
- Kotlin
- Kotlin coroutines
- IntelliJ IDEA 外掛程式開發