Skip to content

2024 年 Kotlin 暑期程式碼大賽 (Google Summer of Code

[//]: # (title: 2024 年 Kotlin 暑期程式碼大賽 (Google Summer of Code))

本文包含 2024 年 Kotlin 暑期程式碼大賽 (Google Summer of Code) 的專案構想列表,以及貢獻者指南

NOTE

Kotlin 資源:

如有任何問題,請透過 [email protected] 聯繫我們

Kotlin 參與 Google 暑期程式碼大賽 (GSoC) 貢獻者指南

開始入門

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

  2. 熟悉 Kotlin 語言:

  3. 了解 Kotlin 開源社群:

如何申請

  1. 查看專案構想,並選擇您想投入的項目。
  2. 如果您不熟悉 Kotlin,請閱讀 Kotlin 網站上的入門資訊
  3. 參考 GSoC 貢獻者指南
  4. 透過 GSoC 網站 申請。
    • 我們建議您撰寫一個與所提議專案相關的實際程式碼範例。您也可以展示任何您特別引以為傲的程式碼範例。
    • 說明您對 Kotlin 感興趣的原因以及您的相關經驗。
    • 如果您參與過開源專案,請提供您的貢獻歷史。
    • 如果您有 GitHub、Twitter 帳戶、部落格,或技術/科學出版物作品集,也請提供參考。
    • 請說明因其他承諾(例如考試和假期)而與 GSoC 時間表發生的任何衝突。

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

專案構想

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

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

預期成果

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

所需技能 (優先)

Kotlin

可能導師

Artem Kobzar, JetBrains

Compose Multiplatform 結合 Node.js 原生 Skia 綁定 [困難,350 小時]

Compose Multiplatform 是一個宣告式框架,用於在多個平台上共用以 Kotlin 建置的 UI。 目前用於渲染桌面應用程式的方法是使用 JVM 作為平台,但如果我們將 Compose Multiplatform 用於 Web,並嘗試使用 Skia 的原生綁定 (native bindings) 在瀏覽器之外執行應用程式,會怎麼樣呢? 這會提升桌面應用程式的效能和記憶體消耗嗎?還是會適得其反?我們將在這個專案中找到答案!

預期成果

將 Skia 綁定與 Compose Multiplatform 整合,並評估其對桌面應用程式效能的影響。

所需技能 (優先)

Kotlin, Node.js, C++, or Rust

可能導師

Artem Kobzar, JetBrains

Compose Multiplatform 元件庫產生器 [中等,350 小時]

Compose Multiplatform 是一個宣告式框架,用於在多個平台上共用以 Kotlin 建置的 UI。 在 React 網頁開發時代的初期,Storybook 被創建,Storybook 提出描述元件狀態並產生整個 UI 函式庫畫廊的方法,至今仍是網頁開發文件中不可或缺的方法之一。 我們能否使用 Compose Multiplatform 達成同樣的效果,用它來產生網頁 UI 元素庫,以及行動和桌面平台的函式庫?讓這個專案來嘗試看看吧。

預期成果

建立一個工具,使用 Compose Multiplatform 為網頁、行動和桌面平台產生 UI 元件庫。

所需技能 (優先)

Kotlin, Jetpack Compose, UI/UX Design

可能導師

Artem Kobzar, JetBrains

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

去年 11 月,Gradle 團隊宣佈了新的宣告式 Gradle 專案,在專案中引入了更高層次的 Kotlin DSL。我們邀請 GSoC 貢獻者加入我們,共同改進新 DSL 的開發者體驗,特別是透過在 Gradle 插件中實現可擴展性,以支援最常見的 Kotlin 和 Java 專案整合:靜態分析 (static analysis)、Kotest 等測試框架。

預期成果

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

所需技能 (優先)

Kotlin, Gradle, Java, Static Analysis

可能導師

Oleg Nenashev, Gradle

Gradle 指南

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

許多專案,包括 Gradle,都有大量的 Kotlin DSL 範例和程式碼片段(例如請參閱 Gradle 文件)。 針對多個版本測試它們會帶來一些挑戰,因為這些片段為了簡潔起見,通常代表著不完整的程式碼。 我們希望建構一個測試框架,在 GitHub Actions 和 Teamcity 上,透過單元測試框架(Kotest 或 JUnit 5)簡化這些範例的驗證。

預期成果

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

所需技能 (優先)

Kotlin, Testing Frameworks, CI/CD

可能導師

Oleg Nenashev, Gradle

Gradle 指南

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

Kotlin 和 Gradle 是建置 Android 專案的預設選擇。 2023 年 11 月,Microsoft 團隊宣佈了 Gradle 建置伺服器專案,這是 建置伺服器協定 (Build Server Protocol, BSP) 的 Gradle 特定實作。 如果能在其中引入對 Android 建置的完整支援,那將會很棒。 對於範圍較小的專案,可以在 Gradle 建置伺服器中實現 Gradle 任務的自動發現 (auto-discovery) 和取消 (cancellation)。

預期成果

在 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 團隊密切合作,創建一個 API,用於從 Kotlin/Native 記憶體管理器存取分配資料。 目標是產生與 JVM 格式一致的報告,確保跨平台資料呈現的一致性。 此外,此專案還涉及識別和糾正其他函式庫功能在報告格式上的任何差異,從而標準化基準測試輸出,以進行全面的跨平台分析。

預期成果

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

所需技能 (優先)

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