Skip to content

Google Summer of Code with Kotlin 2024

這篇文章包含 Google Summer of Code with Kotlin 2024 的專案構想清單貢獻者指南

Kotlin 資源:

如果您有任何疑問,請透過 [email protected] 聯絡我們

Google Summer of Code (GSoC) 的 Kotlin 貢獻者指南

開始使用

  1. 查看 GSoC 常見問題計畫公告

  2. 熟悉 Kotlin 語言:

  3. 了解 Kotlin 開源社群:

如何申請

  1. 查看專案構想並選擇您想參與的專案。
  2. 如果您不熟悉 Kotlin,請閱讀 Kotlin 網站上的入門資訊
  3. 參考 GSoC 貢獻者指南
  4. 透過 GSoC 網站申請。
    • 我們建議您撰寫一個與所提議專案相關的可執行程式碼範例。您也可以向我們展示任何您引以為傲的程式碼範例。
    • 描述您為何對 Kotlin 感興趣以及您使用它的經驗。
    • 如果您參與開源專案,請提供您的貢獻歷史記錄。
    • 如果您有 GitHub、Twitter 帳號、部落格或技術或科學出版物作品集,也請提供參考連結。
    • 請揭露任何由於其他承諾(例如考試和假期)與 GSoC 時間表發生的衝突。

謝謝您!我們期待閱讀您的申請!

專案構想

Kotlin-to-WebAssembly 編譯器的增量編譯 [困難,350 小時]

增量編譯是一種有助於提高編譯速度的技術,透過僅重新編譯已更改的檔案而不是整個程式(也稱為執行全新建置)。Kotlin-to-Wasm 編譯器目前僅支援全新建置,但在此專案中,我們將會增強它,使其也支援增量編譯。

預期成果

在 Kotlin-to-WebAssembly 編譯器中實作增量編譯功能,有助於更快的開發工作流程。

所需技能(偏好)

Kotlin

可能導師

Artem Kobzar, JetBrains

支援 Node.js 原生繫結的 Compose Multiplatform for Skia [困難,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 Design

可能導師

Artem Kobzar, JetBrains

宣告式 Gradle 的 Kotlin DSL 改進 [中等,175 小時]

去年十一月,Gradle 團隊宣布了新的宣告式 Gradle 專案,並在專案中引入了更高層次的 Kotlin DSL。我們邀請 GSoC 貢獻者加入我們,共同改進新 DSL 的開發者體驗,特別是透過在 Gradle 外掛程式中實作擴展性,以支援最常見的 Kotlin 和 Java 專案整合:靜態分析、像 Kotest 這樣的測試框架以及其他。

預期成果

實作 Gradle 的 Kotlin DSL 中的擴展性功能,並改進對常見專案整合的支援。

所需技能(偏好)

Kotlin, Gradle, Java, Static Analysis

可能導師

Oleg Nenashev, Gradle

Gradle 指南

Kotlin DSL 文件範例測試框架 [容易或中等,90 小時或 175 小時]

許多專案,包括 Gradle,有許多 Kotlin DSL 範例和程式碼片段(請參閱 Gradle 文件 以獲取範例)。針對多個版本測試它們帶來了某些挑戰,因為這些片段通常是為了簡潔而呈現不完整的程式碼。我們希望建立一個測試框架,以簡化這些範例在單元測試框架(Kotest 或 JUnit 5)中於 GitHub Actions 和 Teamcity 上的驗證。

預期成果

實作一個用於 Kotlin DSL 範例的基本測試框架,並與 GitHub Actions 整合以進行持續測試。

所需技能(偏好)

Kotlin, Testing Frameworks, CI/CD

可能導師

Oleg Nenashev, Gradle

Gradle 指南

Gradle 建置伺服器 – 支援 Android 專案 [中等或困難,175 小時或 350 小時]

Kotlin 和 Gradle 是建置 Android 專案的預設選擇。在 2023 年 11 月,Microsoft 團隊宣布了 Gradle 建置伺服器專案,它是一個 Gradle 特定的 建置伺服器協定 (BSP) 實作。引入對 Android 建置的完整支援將會很棒。對於範圍較小的專案,可以在 Gradle 建置伺服器中實作針對 Gradle 任務的自動探索和取消。

預期成果

在 Gradle 建置伺服器中實作 Android 專案支援,包括自動探索和任務取消。

所需技能(偏好)

Kotlin, Gradle, Android Development, Visual Studio Code

可能導師

Oleg Nenashev, Gradle

Gradle 指南

實作 Kotlin/Native 基準測試的記憶體使用分析 [中等,175 小時]

kotlinx-benchmark 函式庫是一個開源工具包,有助於 Kotlin 程式碼跨多個平台的基準測試。它目前具有針對 JVM 的 GC 分析功能,詳述每個基準測試方法的記憶體分配率。本專案旨在將類似的分析功能擴展到 Kotlin/Native,朝著跨平台統一基準測試功能邁進。

貢獻者將與 Kotlin/Native 團隊密切合作,建立用於從 Kotlin/Native 記憶體管理器存取記憶體分配數據的 API。目標是生成與 JVM 格式一致的報告,確保跨平台資料呈現的一致性。此外,該專案涉及識別並糾正針對其他函式庫功能在報告格式上的任何差異,從而標準化基準測試輸出以進行全面的跨平台分析。

預期成果

在 Kotlin/Native 的 kotlinx-benchmark 中實作記憶體使用分析,並標準化基準測試輸出。

所需技能(偏好)

Kotlin, Kotlin/Native, Benchmarking, Memory Profiling

可能導師

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 Development, Benchmarking

可能導師

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 Plugin Development, Benchmarking

可能導師

Abduqodiri Qurbonzoda, JetBrains