본문으로 건너뛰기

Google Summer of Code with Kotlin 2025

이 문서에는 Kotlin 2025년 Google Summer of Code에 대한 프로젝트 아이디어 목록기여자 가이드라인이 포함되어 있습니다.

노트

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 팀은 공식적인 Kotlin 지원을 Gradle 및 Maven 빌드 시스템뿐만 아니라 다른 모든 빌드 시스템으로 확장하고 최소한의 노력으로 JetBrains IDE에서 기본적으로 지원하기를 원합니다. 반면에, Kotlin을 지원하는 모든 빌드 시스템에서 Kotlin 관련 정보를 얻을 수 있도록 하여 non-JetBrains IDE에서 기본적인 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 Plugin이 있는 경우 모든 Kotlin 소스 구조를 검색하여 출력해야 합니다. 테스트를 포함하면 보너스입니다.

Firebase에서 Vertex AI를 사용하여 Gemini용 Kotlin Multiplatform에서 Android 및 iOS 대상 지원 [Medium, 175시간]

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

예상 결과

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

선호하는 기술

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

가능한 멘토

Matt Dyor 및 Google 팀

Bazel에서 Kotlin Multiplatform 지원 추가 [Hard, 350시간]

Kotlin에 대한 Bazel의 지원은 발전하고 있지만 적절한 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시간]

Language Server Protocol (LSP)는 자동 완성, 정의로 이동, 다양한 편집기 및 IDE에서 리팩토링과 같은 코드 인텔리전스 기능을 가능하게 하는 널리 채택된 표준입니다. 현재 공식 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 게시 플러그인의 여러 구현이 있습니다. 지원 또는 커뮤니티 결합 단계에서 잠재적 기여자는 구현을 검토하고 업데이트할 기존 플러그인을 제안하거나 새로운 플러그인을 빌드하거나 포크하기로 결정해야 합니다. 결과물에는 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은 성능, 특히 Android Studio 및 IntelliJ IDEA 동기화 성능을 더욱 향상시키기 위해 구성 캐시를 크게 확장하는 새로운 기능인 Isolated Projects를 개발 중입니다. 개발자 경험 관점에서 볼 때 Gradle에서 가장 기대되는 기능 중 하나입니다.

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

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

  • Configuration Cache Report 도구를 Gradle Profiler에 포함("또는 GitHub Action 구현")
  • GHA에서 테스트 스위트 자동화를 통해 다양한 프로젝트에서 Gradle 및 몇 가지 인기 있는 Gradle 플러그인 프로파일링
  • 구성 캐시 유무에 관계없이 잠금 경합을 줄일 수 있는 잠재적 영역 및 플러그인 결정
  • 존재하는 동안 대상 플러그인의 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 등)과 기능 동등성을 달성하고, Gradle로 Jenkins 플러그인을 개발하는 사람들의 개발자 경험을 개선하는 것입니다.

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

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

  • Gradle JPI 플러그인을 새로 고치고 호스팅 모범 사례를 준수하도록 만들기
  • Gradle JPI 플러그인 코드베이스를 Groovy에서 Kotlin으로 마이그레이션
  • Jenkins 플러그인 Parent POM의 주요 기능을 다루는 Jenkins 플러그인을 위한 새로운 컨벤션 플러그인을 구현합니다(Kotlin 및 Kotlin DSL 사용). 여기에는 플러그인 빌드뿐만 아니라 Jenkins의 모범 사례에 따른 테스트 및 정적 분석도 포함됩니다.
  • Gradle 플러그인 자체를 포함하여 가장 인기 있는 Gradle 플러그인에서 새로 고쳐진 플러그인 및/또는 컨벤션 플러그인 채택
  • 플러그인 호환성 테스터 및 Bill of Materials에 Gradle 플러그인 통합
  • Jenkins 플러그인에 대한 업데이트된 Gradle 개발 흐름 문서화

예상 결과

Jenkins 업데이트 센터 및 Gradle 플러그인 포털에 게시된 업데이트된 Gradle JPI 플러그인 및/또는 Jenkins용 새 컨벤션 플러그인

선호하는 기술

  • 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 Platform에서 도입된 끊임없는 변화에 발맞추면서 빌드, 테스트 및 검증 단계를 관리합니다. IntelliJ Platform Gradle Plugin은 JetBrains, 타사 개발자 및 외부 회사에서 워크플로를 JetBrains 도구와 통합하는 데 사용됩니다.

예상 결과

  • 자세하고 구성 가능한 검증 작업 보고서를 제공하기 위해 Gradle 보고를 소개합니다.
  • Gradle Worker API를 활용하여 여러 IntelliJ Platform 버전에 대해 verifyPlugin 작업의 병렬 실행을 활성화하여 작업 실행 시간을 줄입니다.
  • 플러그인 개발 워크플로를 더욱 개선하기 위해 추가 Gradle 개선 사항을 탐색합니다.

선호하는 기술

  • Kotlin
  • Gradle
  • IntelliJ Platform

가능한 멘토

Jakub Chrzanowski, JetBrains

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

OpenRewrite는 구조화된 방식으로 코드 마이그레이션 및 리팩토링을 자동화하기 위한 강력한 프레임워크입니다. OpenRewrite는 Java에 대한 강력한 지원을 제공하지만 Kotlin 생태계는 개발자가 코드베이스를 원활하게 마이그레이션하는 데 도움이 되도록 더 포괄적인 OpenRewrite 레시피 세트의 이점을 누릴 수 있습니다.

이 프로젝트는 Java 기반 AutoValue 클래스를 관용적인 Kotlin 데이터 클래스로 마이그레이션하고, 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 종속성을 선언하는 구조화된 방법을 제공하지만 현재 Bill of Materials (BOM) 파일에 대한 적절한 지원이 부족합니다. 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 보고서 및 연결된 관찰 도구에 대한 더 많은 통찰력을 제공합니다. IntelliJ IDEA 또는 Android Studio와 같은 IDE는 Gradle의 API 통합 도구를 통해 세부 정보에 액세스할 수도 있고, 코드 편집기에서 바로 경고를 표시할 수 있습니다. 몇 가지 핵심 기능 및 플러그인은 이미 Problems API를 채택했습니다. Java 컴파일, 종속성 해결 오류, 더 이상 사용되지 않는 경고 등입니다. Kotlin용 코드 품질 플러그인이 이 API를 채택하기를 원합니다. Gradle을 사용하는 100,000명 이상의 Kotlin 개발자의 개발자 경험을 크게 향상시킬 것입니다.

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

예상 결과

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

선호하는 기술

  • Kotlin
  • Gradle

가능한 멘토

Oleg Nenashev, Balint Hegyi, Reinhold Degenfellner