2024 年 Kotlin 的 Google Summer of Code
本文包含 Kotlin 2024 年 Google Summer of Code 的專案構想清單,以及貢獻者指南。
Kotlin 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 感興趣以及您使用它的經驗。
- 如果您參與開源專案,請參考您的貢獻歷史。
- 如果您有 GitHub、Twitter 帳戶、部落格或技術或科學出版物組合,也請參考它們。
- 揭露因其他承諾(例如考試和假期)而與 GSoC 時間表產生的任何衝突。
謝謝! 我們期待閱讀您的申請!
專案構想
Kotlin-to-WebAssembly 編譯器的增量編譯 [困難,350 小時]
增量編譯是一種透過僅重新編譯已變更的檔案而不是整個程式(也稱為執行清除建置)來幫助提高編譯速度的技術。 Kotlin-to-Wasm 編譯器目前僅支援清除建置,但在這個專案中,我們將增強它以支援增量編譯。
預期成果
在 Kotlin-to-WebAssembly 編譯器中實作增量編譯功能,從而加快開發工作流程。
所需技能(首選)
Kotlin
可能的導師
Artem Kobzar, JetBrains
適用於 Skia 的 Compose Multiplatform 與 Node.js 原生綁定 [困難,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,並且 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 文件 以獲取範例)。 針對多個版本對它們進行測試會帶來一定的挑戰,因為這些程式碼片段通常為了簡潔起見而表示不完整的程式碼。 我們希望建立一個測試框架,該框架可以簡化在單元測試框架中驗證這些範例的過程 (Kotest 或 JUnit 5)在 GitHub Actions 和 Teamcity 上。
預期成果
實作 Kotlin DSL 範例的基本測試框架,並與 GitHub Actions 整合以進行持續測試。
所需技能(首選)
Kotlin, 測試框架, CI/CD
可能的導師
Oleg Nenashev, Gradle
Gradle 建置伺服器 – 支援 Android 專案 [中等或困難,175 小時或 350 小時]
Kotlin 和 Gradle 是建置 Android 專案的預設選擇。 在 2023 年 11 月,Microsoft 團隊宣布了 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 團隊密切合作,建立一個 API 以從 Kotlin/Native 記憶體管理器存取分配資料。 目標是產生與 JVM 格式一致的報告,確保跨平台的資料呈現一致性。 此外,該專案還涉及識別和糾正其他函式庫功能的報告格式中的任何差異, 從而標準化基準測試輸出,以進行全面的跨平台分析。
預期成果
在 kotlinx-benchmark 中實作 Kotlin/Native 的記憶體使用量分析,並標準化基準測試輸出。
所需技能(首選)
Kotlin, Kotlin/Native, 基準測試, 記憶體分析
可能的導師
Abduqodiri Qurbonzoda, JetBrains
Alexander Shabalin, JetBrains
在 kotlinx-benchmark 中支援 Android 目標 [中等,175 小時]
kotlinx-benchmark 函式庫 是一個開源工具,旨在跨多個平台對 Kotlin 程式碼進行基準測試, 包括 JVM、JS、WasmJs 和 Native。 儘管它具有廣泛的相容性,但該函式庫目前不支援在 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