Kotlin과 함께하는 2025년 Google Summer of Code
이 문서는 Kotlin과 함께하는 2025년 Google Summer of Code를 위한 프로젝트 아이디어 목록과 기여자 가이드라인을 포함합니다.
Kotlin 리소스:
- Kotlin GitHub 리포지토리
- Kotlin Slack 및 #gsoc Slack 채널
질문이 있으시면 [email protected]로 문의하십시오.
Google Summer of Code (GSoC)를 위한 Kotlin 기여자 가이드라인
시작하기
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 일정과 충돌하는 부분이 있다면 공개하십시오.
감사합니다! 여러분의 지원서를 기다리겠습니다!
프로젝트 아이디어
Build Server Protocol: Kotlin 지원 추가 [고급, 350시간]
Kotlin 팀은 Gradle 및 Maven 빌드 시스템뿐만 아니라 다른 모든 빌드 시스템에 대한 공식 Kotlin 지원을 확장하고, 최소한의 노력으로 JetBrains IDE에서 이를 기본적으로 지원하고자 합니다. 한편, JetBrains IDE가 아닌 다른 IDE에서도 기본적인 Kotlin 지원을 제공하고자 합니다. 이러한 지원의 일환으로, Kotlin을 지원하는 모든 빌드 시스템으로부터 Kotlin 특정 정보를 얻을 수 있도록 하는 것입니다.
이러한 요구 사항에 대한 해결책은 빌드 시스템과 IDE 사이에 추상화 계층을 제공하는 Build Server Protocol(BSP)이 될 수 있습니다.
이 프로젝트의 목표는 BSP 프로토콜을 사용하여 사용자 프로젝트에서 IntelliJ IDEA에 필요한 모든 정보를 가져와 해당 프로젝트에서 Kotlin 코드를 작업할 수 있도록 하는 프로토타입을 구현하는 것입니다. 이 프로토타입의 범위를 제한하기 위해, 사용자 프로젝트는 Gradle을 사용하여 자동으로 빌드되도록 할 것입니다.
선호 기술
- Kotlin 지식
- Gradle 플러그인 작성 방법 이해
- 추가 사항: IntelliJ IDEA용 플러그인 작성 방법 이해
가능한 멘토
Yahor Berdnikau, Bálint Hegyi, and Reinhold Degenfellner
지원자를 위한 과제
과제 #1. 이 프로젝트에 관심이 있는 이유는 무엇입니까?
과제 #2. 실습 과제: 특정 태스크를 노출하는 Gradle 플러그인을 생성하십시오. 이 태스크는 Kotlin Gradle 플러그인이 있을 경우, 모든 Kotlin 소스의 구조를 검색하여 출력해야 합니다. 테스트를 포함하면 추가 점수가 있습니다.
Firebase의 Vertex AI를 사용하는 Gemini를 위한 Kotlin Multiplatform에서 Android 및 iOS 타겟 지원 [보통, 175시간]
이 프로젝트는 Firebase의 Vertex AI를 사용하는 Gemini를 Android 및 iOS 이상에서 지원하는 오픈 소스 Kotlin Multiplatform (KMP) 라이브러리를 생성하는 것을 목표로 합니다. 이는 기존 서비스를 위한 KMP 라이브러리 생성의 모범 사례를 보여줄 것이며, 적절한 프로덕션 구현(예: 적절한 API 키 관리, 사용자 관리 API 키 지원, 클라이언트 스로틀링)에 중점을 둘 것입니다.
예상 결과물
- 기존 Google 서비스 지원을 포함하는 새로운 Kotlin Multiplatform 라이브러리
- 샘플 코드 및 문서
선호 기술
- Kotlin
- Kotlin Multiplatform
- 모바일 개발 (Android 및 iOS)
가능한 멘토
Matt Dyor, and the Google team
Bazel에 Kotlin Multiplatform 지원 추가 [고급, 350시간]
Kotlin에 대한 Bazel의 지원은 발전하고 있지만, 적절한 Kotlin Multiplatform (KMP) 통합은 여전히 과제로 남아 있습니다. 이 프로젝트는 의존성 해결 문제 해결, rules_kotlin
및 rules_jvm_external
호환성 향상, 그리고 크로스 플랫폼 빌드 활성화를 통해 Bazel의 KMP 지원을 개선하는 것을 목표로 합니다.
주요 개선 사항은 플랫폼별 의존성 처리(expect/actual 메커니즘), Gradle 메타데이터 지원 개선, 그리고 Bazel에서 KMP를 위한 더 원활한 개발자 경험 보장에 중점을 둘 것입니다.
예상 결과물
- Bazel의 Kotlin Multiplatform을 위한 향상된 의존성 해결
rules_kotlin
및rules_jvm_external
과의 향상된 통합- 원활한 멀티플랫폼 개발을 위한 Bazel의 작동하는 KMP 빌드 설정
선호 기술
- Kotlin Multiplatform 및 Gradle
- Bazel 빌드 시스템
- 의존성 해결 전략
가능한 멘토
Shauvik Roy Choudhary, and the Uber team
Kotlin Language Server (LSP) [고급, 350시간]
Language Server Protocol(LSP)은 자동 완성, 정의로 이동, 리팩토링과 같은 코드 인텔리전스 기능을 다양한 편집기 및 IDE에서 가능하게 하는 널리 채택된 표준입니다. 현재 공식 Kotlin LSP 서버는 없지만, 커뮤니티에서는 이에 대한 상당한 요구가 있습니다. 공개적으로 유지 관리되고 커뮤니티 주도적인 구현은 코드 마이그레이션, AI 기반 코드 지원, 다양한 개발 환경으로의 원활한 통합을 포함하여 광범위한 사용 사례를 지원할 수 있습니다.
이 프로젝트는 주요 LSP 기능과의 호환성을 보장하고 개발 환경 전반에서 Kotlin의 접근성을 넓히는 Kotlin LSP 구현을 개발하는 것을 목표로 합니다.
예상 결과물
Kotlin LSP 구현 개발
선호 기술
- Kotlin
- Language Server Protocol (LSP)
- IDE용 플러그인 또는 확장 개발
가능한 멘토
Shauvik Roy Choudhary, and the Uber team
새로운 API를 사용하는 Gradle용 Maven Central 퍼블리싱 플러그인 [보통, 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, and the Gradle team
주요 Gradle 플러그인의 구성 캐시 및 잠금 경합 개선 [쉬움-고급, 90시간-350시간]
Gradle은 구성 캐시를 크게 확장하여 성능을 더욱 향상시키는 새로운 기능인 Isolated Projects 작업을 진행 중입니다. 특히 Android Studio 및 IntelliJ IDEA 동기화 성능을 개선합니다. 개발자 경험 관점에서 볼 때, 이는 Gradle에서 가장 기대되는 기능 중 하나입니다.
Isolated 프로젝트의 문제 중 하나는 Gradle 코어의 잠금 경합으로, 플러그인이 때때로 병렬 실행을 방해한다는 점입니다. 저희는 특히 Java, Kotlin, Android 및 Kotlin Multiplatform 생태계를 위한 주요 Gradle 빌드 도구 플러그인에서 잠금 경합을 줄이고자 합니다. 기여자는 자신의 관심사와 원하는 프로젝트 규모에 따라 결과물을 선택할 수 있습니다.
잠재적 결과물은 다음을 포함하며 이에 국한되지 않습니다:
- Configuration Cache Report 도구를 Gradle Profiler에 내장(또는 "이를 위한 GitHub Action 구현")
- 다양한 프로젝트에서 Gradle 및 몇몇 인기 있는 Gradle 플러그인 프로파일링, GHA에서 테스트 스위트 자동화와 함께
- 구성 캐시 유무와 관계없이 잠금 경합을 줄일 수 있는 잠재적 영역 및 플러그인 파악
- 이와 관련하여 대상 플러그인에서 구성 캐시 호환성의 다른 영역에도 기여
- 발견된 개선 사항 중 일부 구현
예상 결과물
Gradle용 Kotlin DSL에서 확장성 기능을 구현하고 일반적인 프로젝트 통합 지원을 개선합니다.
선호 기술
- Kotlin
- Gradle
- Java
- 성능 분석
- 프로파일링
가능한 멘토
Oleg Nenashev, Laura Kassovic
Jenkins 플러그인 개발을 위한 Gradle 컨벤션 플러그인 [쉬움-고급, 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의 주요 기능을 Kotlin 및 Kotlin DSL을 사용하여 포함하는 Jenkins 플러그인용 새 컨벤션 플러그인 구현. 여기에는 플러그인 빌드뿐만 아니라 Jenkins의 모범 사례에 따른 테스트 및 정적 분석도 포함됩니다.
- Gradle 플러그인 자체를 포함하여 가장 인기 있는 Gradle 플러그인에서 새로 고쳐진 플러그인 및/또는 컨벤션 플러그인 채택
- Plugin Compatibility Tester 및 Bill of Materials에 Gradle 플러그인 통합
- Jenkins 플러그인을 위한 업데이트된 Gradle 개발 흐름 문서화
예상 결과물
Jenkins용 업데이트된 Gradle JPI 플러그인 및/또는 새 컨벤션 플러그인, Jenkins 업데이트 센터 및 Gradle 플러그인 포털에 게시
선호 기술
- Kotlin DSL
- Kotlin
- Gradle
- Jenkins
- Java
가능한 멘토
Oleg Nenashev, Stefan Wolf
Kotlin DSL 및 Declarative Gradle 문서 샘플 테스트 프레임워크 [쉬움-보통, 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 플러그인 – Gradle 보고 및 병렬 검증 [보통, 175시간]
IntelliJ Platform Gradle 플러그인은 Gradle 빌드 시스템용 플러그인으로, IntelliJ 기반 IDE용 플러그인을 빌드, 테스트, 검증 및 게시하기 위한 환경 구성을 단순화합니다. 이 플러그인은 IntelliJ Platform에 도입되는 지속적인 변경 사항을 따라가면서 빌드, 테스트 및 검증 단계를 관리합니다. IntelliJ Platform Gradle 플러그인은 JetBrains, 서드파티 개발자 및 외부 기업에서 JetBrains 도구와 워크플로를 통합하기 위해 사용됩니다.
예상 결과물
- 상세하고 구성 가능한 검증 태스크 보고서 제공을 위해 Gradle Reporting을 도입합니다.
- Gradle Worker API를 활용하여 여러 IntelliJ Platform 버전을 대상으로
verifyPlugin
태스크의 병렬 실행을 가능하게 하고, 태스크 실행 시간을 단축합니다. - 플러그인 개발 워크플로를 더욱 개선하기 위한 추가 Gradle 개선 사항을 탐색합니다.
선호 기술
- Kotlin
- Gradle
- IntelliJ Platform
가능한 멘토
Jakub Chrzanowski, JetBrains
더 많은 Kotlin OpenRewrite 레시피 추가 [보통, 175시간]
OpenRewrite는 코드 마이그레이션 및 리팩토링을 구조화된 방식으로 자동화하기 위한 강력한 프레임워크입니다. OpenRewrite는 Java에 대한 강력한 지원을 제공하지만, Kotlin 생태계는 개발자가 코드베이스를 원활하게 마이그레이션하는 데 도움이 되는 더 포괄적인 OpenRewrite 레시피 세트로부터 이점을 얻을 수 있습니다.
이 프로젝트는 Java 기반 AutoValue 클래스를 관용적인 Kotlin 데이터 클래스로 마이그레이션, 모범 사례를 따르도록 Kotlin 코드 현대화, 그리고 Kotlin 버전 간에 더 원활한 마이그레이션을 활성화하는 등 더 많은 자동화된 변환을 추가하여 Kotlin OpenRewrite 레시피 컬렉션을 확장하는 것을 목표로 합니다. 이러한 레시피는 Kotlin 개발자가 최소한의 수동 노력으로 깔끔하고, 최신이며, 관용적인 코드베이스를 유지하는 데 도움이 될 것입니다.
예상 결과물
- Kotlin 코드 마이그레이션을 위한 새로운 OpenRewrite 레시피 개발
선호 기술
- Kotlin
- OpenRewrite 프레임워크
- Java-Kotlin 마이그레이션 전략
가능한 멘토
Shauvik Roy Choudhary, and the Uber team
Bazel rules_jvm_external
에 BOM 지원 추가 [고급, 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, and the Uber team
Kotlin용 Gradle 코드 품질 플러그인을 위한 깔끔하고 실행 가능한 보고 [쉬움-보통, 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