Skip to content

Kotlin과 함께하는 Google Summer of Code 2025

이 문서는 Google Summer of Code with Kotlin 2025를 위한 프로젝트 아이디어 목록기여자 가이드라인을 포함하고 있습니다.

Kotlin 리소스:

질문이 있는 경우, [email protected]를 통해 문의해 주세요.

Google Summer of Code (GSoC)를 위한 Kotlin 기여자 가이드라인

시작하기

  1. GSoC FAQ프로그램 공지를 확인하세요.

  2. Kotlin 언어에 익숙해지세요:

  3. Kotlin 오픈 소스 커뮤니티에 대해 알아보세요:

지원 방법

  1. 프로젝트 아이디어를 확인하고 작업하고 싶은 아이디어를 선택하세요.
  2. Kotlin이 익숙하지 않다면, Kotlin 웹사이트의 입문 정보를 읽어보세요.
  3. GSoC 기여자 가이드라인을 참조하세요.
  4. GSoC 웹사이트를 통해 지원하세요.
    • 제안된 프로젝트와 관련된 작동하는 코드 샘플을 작성하는 것을 권장합니다. 특히 자랑스럽게 생각하는 코드 샘플이 있다면 보여주셔도 좋습니다.
    • 왜 Kotlin에 관심이 있는지와 Kotlin 사용 경험을 기술해 주세요.
    • 오픈 소스 프로젝트에 참여한 적이 있다면 기여 이력을 참조해 주세요.
    • GitHub, Twitter 계정, 블로그 또는 기술/과학 출판물 포트폴리오가 있다면 함께 참조해 주세요.
    • 시험이나 휴가 등 다른 일정으로 인해 GSoC 타임라인과 충돌하는 사항이 있다면 공개해 주세요.

감사합니다! 여러분의 지원서를 기다리고 있겠습니다!

프로젝트 아이디어

Build Server Protocol: Kotlin 지원 추가 [상(Hard), 350시간]

Kotlin 팀은 Gradle 및 Maven 빌드 시스템뿐만 아니라 다른 모든 빌드 시스템으로 공식 Kotlin 지원을 확장하고, 최소한의 노력으로 JetBrains IDE에서 기본적으로 지원되기를 원합니다. 한편으로, JetBrains 이외의 IDE에서도 기본적인 Kotlin 지원을 제공하고자 합니다. 이러한 지원의 일환으로 Kotlin을 지원하는 모든 빌드 시스템에서 Kotlin 관련 정보를 가져올 수 있어야 합니다.

이러한 요구 사항에 대한 해결책은 빌드 시스템과 IDE 사이의 추상화 계층을 제공하는 Build Server Protocol (BSP)이 될 수 있습니다.

이 프로젝트의 목표는 BSP 프로토콜을 사용하여 사용자 프로젝트에서 IntelliJ IDEA에 필요한 모든 정보를 가져와 프로젝트에서 Kotlin 코드로 작업할 수 있도록 하는 프로토타입을 구현하는 것입니다. 이 프로토타입의 범위를 제한하기 위해, 사용자 프로젝트는 Gradle을 사용하여 자동으로 빌드되도록 할 것입니다.

선호하는 기술

  • Kotlin 지식
  • Gradle 플러그인 작성 방법에 대한 이해
  • 우대: IntelliJ IDEA용 플러그인 작성 방법에 대한 이해

예상 멘토

Yahor Berdnikau, Bálint Hegyi, Reinhold Degenfellner

지원자 과제

  • 과제 #1. 왜 이 프로젝트에 관심이 있나요?

  • 과제 #2. 실습 과제: 특정 태스크를 노출하는 Gradle 플러그인을 만드세요. 이 태스크는 Kotlin Gradle 플러그인이 있는 경우 모든 Kotlin 소스 구조를 검색하여 출력해야 합니다. 테스트를 포함하면 가산점이 부여됩니다.

Vertex AI in Firebase를 사용하는 Gemini용 Kotlin Multiplatform에서 Android 및 iOS 타겟 지원 [중(Medium), 175시간]

이 프로젝트는 최소 Android 및 iOS에서 Vertex AI in Firebase를 사용하여 Gemini를 지원하는 오픈 소스 Kotlin Multiplatform (KMP) 라이브러리를 만드는 것을 목표로 합니다. 기존 서비스에 대한 KMP 라이브러리 제작의 베스트 프랙티스를 보여줄 것이며, 적절한 프로덕션 구현(예: 적절한 API 키 관리, 사용자 관리 API 키 지원, 클라이언트 스로틀링(throttling) 등)에 중점을 둡니다.

예상 결과물

  • 기존 Google 서비스를 지원하는 새로운 Kotlin Multiplatform 라이브러리
  • 샘플 코드 및 문서

선호하는 기술

  • Kotlin
  • Kotlin Multiplatform
  • 모바일 개발 (Android 및 iOS)

예상 멘토

Matt Dyor 및 Google 팀

Bazel에 Kotlin Multiplatform 지원 추가 [상(Hard), 350시간]

Bazel의 Kotlin 지원은 발전하고 있지만, 적절한 Kotlin Multiplatform (KMP) 통합은 여전히 과제로 남아 있습니다. 이 프로젝트는 의존성 해결 문제를 해결하고, rules_kotlinrules_jvm_external 호환성을 향상하며, 크로스 플랫폼 빌드를 가능하게 함으로써 Bazel의 KMP 지원을 개선하는 것을 목표로 합니다.

주요 개선 사항은 플랫폼별 의존성 처리(expect/actual 메커니즘), Gradle 메타데이터 지원 개선, Bazel에서의 KMP 개발 환경을 더욱 원활하게 만드는 데 중점을 둘 것입니다.

예상 결과물

  • Bazel에서 Kotlin Multiplatform을 위한 향상된 의존성 해결
  • rules_kotlinrules_jvm_external과의 통합 개선
  • 원활한 멀티플랫폼 개발을 위한 Bazel 내 작동하는 KMP 빌드 설정

선호하는 기술

  • Kotlin Multiplatform 및 Gradle
  • Bazel 빌드 시스템
  • 의존성 해결 전략

예상 멘토

Shauvik Roy Choudhary 및 Uber 팀

Kotlin Language Server (LSP) [상(Hard), 350시간]

LSP (Language Server Protocol)는 다양한 에디터와 IDE에서 자동 완성, 정의 이동(go-to definition), 리팩터링과 같은 코드 인텔리전스 기능을 가능하게 하는 널리 채택된 표준입니다. 현재 공식적인 Kotlin LSP 서버는 없지만, 커뮤니티에서 상당한 수요가 있습니다. 공개적으로 유지 관리되고 커뮤니티가 주도하는 구현은 코드 마이그레이션, AI 기반 코드 어시스턴트, 다양한 개발 환경으로의 원활한 통합을 포함한 광범위한 사용 사례를 지원할 수 있습니다.

이 프로젝트는 주요 LSP 기능과의 호환성을 보장하고 개발 환경 전반에서 Kotlin의 접근성을 넓히는 Kotlin LSP 구현을 개발하는 것을 목표로 합니다.

예상 결과물

Kotlin LSP 구현 개발

선호하는 기술

  • Kotlin
  • Language Server Protocol (LSP)
  • IDE용 플러그인 또는 확장 프로그램 개발

예상 멘토

Shauvik Roy Choudhary 및 Uber 팀

새로운 API를 활용한 Gradle용 Maven Central 배포 플러그인 [중(Medium), 175시간]

Maven Central은 JVM 중심의 라이브러리 및 프로젝트를 배포하기 위한 가장 인기 있는 Maven 저장소 중 하나입니다. Apache Maven 또는 Gradle 기반 오픈 소스 프로젝트에서 활발히 사용되고 있으며, 현재 Sonatype Nexus v2 기반에서 최신 버전으로의 마이그레이션을 앞두고 있습니다. 오픈 소스 프로젝트들이 새로운 Maven Central 인스턴스로 마이그레이션 중이며, 이 인스턴스는 매우 다른 API 구현을 가지고 있어 빌드 툴 플러그인에서 특별한 지원이 필요합니다. 새로운 Maven Central 배포 API와 호환되는 Gradle 플러그인을 개발하면 Gradle로 빌드하는 라이브러리 제작자들이 새로운 프로세스에서 원활한 경험을 하는 데 도움이 될 것입니다.

현재 Gradle에는 Maven Publish Plugin이나 이미 새로운 API 채택을 시도하고 있는 New Maven Central Publishing 등 여러 Maven Central 배포 플러그인 구현이 존재합니다. 지원 또는 커뮤니티 유대 기간(community bonding phase) 동안 잠재적 기여자는 이러한 구현들을 검토하고 기존 플러그인의 업데이트를 제안하거나 새로운 플러그인을 구축하거나 포크(fork)할지 결정해야 합니다. 결과물에는 Maven Central 배포를 위한 기존 플러그인의 새 버전 또는 Gradle용 새 플러그인이 포함됩니다. 구현은 Kotlin 또는 Java로 이루어지며 적절한 테스트 커버리지와 문서를 갖출 것으로 기대합니다. 추가 결과물로는 플러그인 사용을 단순화하기 위한 Kotlin DSL 확장 및 Declarative Gradle 확장이 포함될 수 있습니다.

예상 결과물

  • 업데이트된 Maven Central 배포 플러그인 또는 새로운 플러그인

선호하는 기술

  • Kotlin
  • Gradle
  • Maven 저장소

예상 멘토

Oleg Nenashev 및 Gradle 팀

주요 Gradle 플러그인의 Configuration Cache 및 락 경합 개선 [하~상(Easy to Hard), 90~350시간]

Gradle은 성능을 더욱 향상시키기 위해 구성 캐시(configuration cache)를 크게 확장한 새로운 기능인 Isolated Projects를 개발 중이며, 특히 Android Studio 및 IntelliJ IDEA 싱크 성능 개선에 중점을 두고 있습니다. 개발자 경험 측면에서 이는 Gradle에서 가장 기대되는 기능 중 하나입니다.

Isolated projects의 문제 중 하나는 Gradle 코어의 락 경합(lock contention)으로, 플러그인이 때때로 병렬 실행을 방해하는 경우가 있습니다. 특히 Java, Kotlin, Android 및 Kotlin Multiplatform 생태계를 위한 주요 Gradle Build Tool 플러그인에서 락 경합을 줄이고자 합니다. 기여자는 자신의 관심사와 원하는 프로젝트 규모에 따라 결과물을 선택할 수 있습니다.

잠재적인 결과물은 다음을 포함하되 이에 국한되지 않습니다:

  • Configuration Cache Report 툴을 Gradle Profiler에 내장 (또는 이를 위한 GitHub Action 구현)
  • 다양한 프로젝트에서 Gradle 및 몇몇 인기 있는 Gradle 플러그인 프로파일링 및 GHA에서 테스트 스위트 자동화
  • Configuration Cache 사용 여부와 상관없이 락 경합을 줄일 수 있는 잠재적 영역 및 플러그인 결정
  • 타겟 플러그인의 다른 Configuration Cache 호환성 영역에 기여
  • 발견된 개선 사항 중 일부 구현

예상 결과물

Gradle용 Kotlin DSL의 확장성 기능 구현 및 일반적인 프로젝트 통합 지원 개선

선호하는 기술

  • Kotlin
  • Gradle
  • Java
  • 성능 분석
  • 프로파일링

예상 멘토

Oleg Nenashev, Laura Kassovic

Jenkins 플러그인 개발을 위한 Gradle 컨벤션 플러그인 [하~상(Easy to Hard), 90~350시간]

Gradle로 구현된 Jenkins 플러그인이 50개 이상 있습니다. Gradle JPI 플러그인이 있지만, Jenkins 호스팅 요구 사항을 완전히 준수하지 않으며 업데이트가 필요합니다. 이 프로젝트 아이디어의 목표는 Jenkins를 위한 Gradle 개발자 흐름을 복구하고, Apache Maven 흐름(Parent POM, Plugin Compatibility Tester, Jenkins Bill of Materials 등)과 기능적 동등성(feature parity)을 달성하며, Gradle로 Jenkins 플러그인을 개발하는 이들의 개발자 경험을 개선하는 것입니다.

기여자는 자신의 관심사와 원하는 프로젝트 규모에 따라 결과물을 선택할 수 있습니다.

잠재적인 결과물은 다음을 포함하되 이에 국한되지 않습니다:

  • Gradle JPI 플러그인을 최신화하고 호스팅 베스트 프랙티스를 준수하도록 수정
  • Gradle JPI 플러그인 코드베이스를 Groovy에서 Kotlin으로 마이그레이션
  • Kotlin 및 Kotlin DSL을 사용하여 Jenkins 플러그인 Parent POM의 주요 기능을 다루는 새로운 Jenkins 플러그인용 컨벤션 플러그인 구현. 이는 단순히 플러그인을 빌드하는 것뿐만 아니라 Jenkins의 베스트 프랙티스에 따른 테스트 및 정적 분석도 포함함
  • Gradle 플러그인 자체를 포함하여 가장 인기 있는 Gradle 플러그인에 최신화된 플러그인 및/또는 컨벤션 플러그인 채택
  • Gradle 플러그인을 Plugin Compatibility Tester 및 Bill of Materials에 통합
  • Jenkins 플러그인을 위한 업데이트된 Gradle 개발 흐름 문서화

예상 결과물

최신화된 Gradle JPI 플러그인 및/또는 Jenkins용 새로운 컨벤션 플러그인(Jenkins Update Center 및 Gradle Plugin Portal에 게시됨)

선호하는 기술

  • Kotlin DSL
  • Kotlin
  • Gradle
  • Jenkins
  • Java

예상 멘토

Oleg Nenashev, Stefan Wolf

Kotlin DSL 및 Declarative Gradle 문서 샘플 테스트 프레임워크 [하~중(Easy to Medium), 90~175시간]

Gradle을 포함한 많은 프로젝트에는 수많은 Kotlin DSL 샘플과 코드 스니펫이 있습니다(예: Gradle 문서 참조). 간결함을 위해 스니펫이 불완전한 코드를 나타내는 경우가 많기 때문에 여러 버전에 대해 이를 테스트하는 것은 상당한 어려움이 따릅니다. GitHub Actions 또는 TeamCity의 단위 테스트 프레임워크(Kotest 또는 JUnit 5) 내에서 이러한 샘플의 검증을 단순화하는 테스트 프레임워크를 구축하고자 합니다. 나중에 Declarative Gradle 샘플에 대해서도 동일한 작업을 수행하는 데 관심이 있습니다.

예상 결과물

Gradle용 Kotlin DSL의 확장성 기능 구현 및 일반적인 프로젝트 통합 지원 개선

선호하는 기술

  • Kotlin
  • Gradle
  • Java
  • 정적 분석

예상 멘토

Oleg Nenashev, Laura Kassovic

IntelliJ Platform Gradle Plugin – Gradle 리포팅 및 병렬 검증 [중(Medium), 175시간]

Gradle 빌드 시스템용 플러그인인 IntelliJ Platform Gradle Plugin은 IntelliJ 기반 IDE용 플러그인을 빌드, 테스트, 검증 및 배포하기 위한 환경 구성을 단순화합니다. 이 플러그인은 IntelliJ 플랫폼에 도입되는 지속적인 변화를 따라가면서 빌드, 테스트 및 검증 단계를 관리합니다. IntelliJ Platform Gradle Plugin은 JetBrains, 서드파티 개발자 및 외부 회사에서 자신의 워크플로를 JetBrains 도구와 통합하는 데 사용됩니다.

예상 결과물

  • 상세하고 구성 가능한 검증 태스크 보고서를 제공하기 위해 Gradle Reporting 도입.
  • Gradle Worker API를 활용하여 여러 IntelliJ 플랫폼 버전에 대해 verifyPlugin 태스크를 병렬로 실행함으로써 태스크 실행 시간 단축.
  • 플러그인 개발 워크플로를 더욱 개선하기 위한 추가적인 Gradle 향상 사항 탐색.

선호하는 기술

  • Kotlin
  • Gradle
  • IntelliJ 플랫폼

예상 멘토

Jakub Chrzanowski, JetBrains

더 많은 Kotlin OpenRewrite 레시피 추가 [중(Medium), 175시간]

OpenRewrite는 구조화된 방식으로 코드 마이그레이션 및 리팩터링을 자동화하기 위한 강력한 프레임워크입니다. OpenRewrite는 Java를 강력하게 지원하지만, Kotlin 생태계는 개발자가 코드베이스를 원활하게 마이그레이션할 수 있도록 돕는 더 포괄적인 OpenRewrite 레시피 세트의 혜택을 받을 수 있습니다.

이 프로젝트는 Java 기반 AutoValue 클래스를 관용적인(idiomatic) Kotlin 데이터 클래스로 마이그레이션하고, 베스트 프랙티스를 따르도록 Kotlin 코드를 현대화하며, Kotlin 버전 간의 원활한 마이그레이션을 가능하게 하는 등 더 많은 자동화된 변환을 추가하여 Kotlin OpenRewrite 레시피 컬렉션을 확장하는 것을 목표로 합니다. 이러한 레시피는 Kotlin 개발자가 최소한의 수동 노력으로 깨끗하고 최신의 관용적인 코드베이스를 유지하는 데 도움이 될 것입니다.

예상 결과물

Kotlin 코드 마이그레이션을 위한 새로운 OpenRewrite 레시피 개발

선호하는 기술

  • Kotlin
  • OpenRewrite 프레임워크
  • Java-to-Kotlin 마이그레이션 전략

예상 멘토

Shauvik Roy Choudhary 및 Uber 팀

Bazel rules_jvm_external에 BOM 지원 추가 [상(Hard), 350시간]

Bazel의 rules_jvm_external은 외부 Java 의존성을 선언하는 구조화된 방법을 제공하지만, 현재 BOM (Bill of Materials) 파일에 대한 적절한 지원이 부족합니다. BOM 파일은 Maven과 Gradle에서 개발자가 개별 버전을 지정하지 않고도 일관된 방식으로 의존성을 관리하기 위해 널리 사용됩니다. 이 프로젝트는 BOM 지원을 추가하여 rules_jvm_external을 향상시키고, 개발자가 Bazel 내에서 BOM 기반 의존성 해결을 사용할 수 있도록 하는 것을 목표로 합니다. 이 프로젝트에는 기존 오픈 소스 노력에 기여하거나 rules_jvm_external에 직접 BOM 지원을 구현하여 널리 사용되는 의존성 관리 방식과의 호환성을 보장하는 작업이 포함될 수 있습니다.

예상 결과물

  • Bazel rules_jvm_external에서 BOM 지원 구현
  • Bazel 사용자를 위한 향상된 의존성 해결 및 사용성
  • Bazel에서 BOM 지원을 사용하기 위한 문서 및 예제

선호하는 기술

  • Starlark (Bazel의 스크립팅 언어)
  • Bazel 빌드 시스템
  • 의존성 해결 전략

예상 멘토

Shauvik Roy Choudhary 및 Uber 팀

Kotlin용 Gradle 코드 품질 플러그인을 위한 깔끔하고 실행 가능한 리포팅 [하~중(Easy to Medium), 90~175시간]

Gradle은 최근 Gradle 및 서드파티 플러그인이 이슈와 경고를 통일된 방식으로 전파할 수 있게 해주는 새로운 Problems API를 도입했습니다. 이 API는 깔끔하고 실행 가능한 오류 리포팅과 콘솔 출력, 전용 HTML 보고서 및 연결된 관측 도구(observability tools)에 대한 더 많은 인사이트를 제공합니다. IntelliJ IDEA 또는 Android Studio와 같은 IDE도 Gradle의 API 통합 도구를 통해 세부 정보에 액세스할 수 있으며 코드 에디터에서 바로 경고를 표시할 수 있습니다. Java 컴파일, 의존성 해결 오류, 지원 중단(deprecation) 경고 등 여러 코어 기능과 플러그인이 이미 Problems API를 채택했습니다. 우리는 Kotlin용 코드 품질 플러그인도 이 API를 채택하기를 원하며, 이는 Gradle을 사용하는 10만 명 이상의 Kotlin 개발자들의 개발 환경을 크게 개선할 것입니다.

이 프로젝트에서 기여자는 Ktlint, Detekt, Diktat, ArchUnit 또는 Kotlin용 Checkstyle과 같은 여러 Kotlin 코드 품질 플러그인을 선택하고 이를 Problems API와 통합할 수 있습니다. 또한 KotlinDSL로 정의된 Gradle 빌드에 대해 유사한 분석을 통합하는 작업을 수행할 수도 있습니다.

예상 결과물

  • 언급된 플러그인들에 Problems API 통합 구현

선호하는 기술

  • Kotlin
  • Gradle

예상 멘토

Oleg Nenashev, Balint Hegyi, Reinhold Degenfellner