Kotlin 2024 Google Summer of Code
本文包含 Kotlin 2024 Google Summer of Code 的 專案構想清單 以及 貢獻者指南。
Kotlin 資源:
- Kotlin GitHub 存儲庫
- Kotlin Slack 和 #gsoc Slack 頻道
如果您有任何問題,請透過 [email protected] 聯絡我們
Kotlin 2024 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 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 應運而生,而 Storybook 所提倡的描述元件狀態並產生完整 UI 程式庫展示庫(gallery)的方法,至今仍是 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 月,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 程式庫 是一個開源工具,專為跨多個平台(包括 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
