Kotlin과 함께하는 Google Summer of Code 2025
Kotlin과 함께하는 Google Summer of Code 2025
Kotlin과 함께하는 Google Summer of Code(GSoC) 2025의 프로젝트 아이디어 목록과 기여자 가이드라인을 소개할게요. 빌드 시스템, IDE 통합, 라이브러리, 툴링까지 다양한 주제의 프로젝트가 있어요. 관심 있는 프로젝트를 고르고 지원 절차에 따라 제안서를 준비해보세요.
본문
이 문서에는 Kotlin과 함께하는 Google Summer of Code 2025의 프로젝트 아이디어 목록과 기여자 가이드라인이 담겨 있어요.
Google Summer of Code(GSoC)를 위한 Kotlin 기여자 가이드라인
시작하기
- GSoC FAQ와 프로그램 공지를 확인해보세요.
- Kotlin 언어에 익숙해지세요:공식 Kotlin 웹사이트가 좋은 시작점이에요.공식 문서를 읽어 언어를 더 잘 이해해보세요.JetBrains Academy의 Kotlin 코스나 Android 팀의 Training 옵션을 살펴보세요.Kotlin X 또는 Kotlin Bluesky 계정을 팔로우해 최신 뉴스와 개발 소식을 받아보세요.튜토리얼, 팁, 최신 업데이트를 위해 Kotlin YouTube 채널을 확인해보세요.
- Kotlin 오픈소스 커뮤니티를 알아가세요:일반적인 Kotlin 기여 가이드라인을 살펴보세요.Kotlin Slack 채널에 가입해 다른 개발자들과 연결하고 궁금한 점에 도움을 받으세요.#gsoc 채널에 가입해 질문하고 GSoC 팀의 지원을 받으세요.
지원하는 방법
- 프로젝트 아이디어를 확인하고 작업하고 싶은 것을 선택하세요.
- Kotlin에 익숙하지 않다면 Kotlin 웹사이트의 입문 정보를 읽어보세요.
- GSoC 기여자 가이드라인을 참고하세요.
- GSoC 웹사이트를 통해 지원하세요.제안된 프로젝트와 관련된 동작하는 코드 샘플을 작성하는 것을 권장해요. 특히 자랑스러운 코드 샘플도 보여줄 수 있어요.Kotlin에 왜 관심이 있고 어떤 경험이 있는지 설명해주세요.오픈소스 프로젝트에 참여하고 있다면 기여 이력을 참조해주세요.GitHub, Twitter 계정, 블로그, 또는 기술·과학 출판 포트폴리오가 있다면 그것도 참조해주세요.시험, 휴가 같은 다른 일정으로 인해 GSoC 타임라인과 충돌되는 것이 있으면 공개해주세요.
감사합니다! 여러분의 지원서를 기대하고 있을게요!
프로젝트 아이디어
Build Server Protocol: Kotlin 지원 추가 [Hard, 350 hrs]
Kotlin 팀은 공식 Kotlin 지원을 Gradle과 Maven 빌드 시스템뿐 아니라 다른 어떤 빌드 시스템으로도 확장하고, 최소한의 노력으로 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
지원자용 태스크
- Task #1. 이 프로젝트에 왜 관심이 있나요?
- Task #2. 실습 과제: 특정 태스크를 노출하는 Gradle 플러그인을 만드세요. 이 태스크는 Kotlin Gradle 플러그인이 있을 때 모든 Kotlin 소스 구조를 검색해 출력해야 해요. 테스트를 포함하면 보너스예요.
Firebase에서 Vertex AI를 사용하는 Gemini용 Kotlin Multiplatform의 Android·iOS 대상 지원 [Medium, 175 hrs]
이 프로젝트는 Firebase에서 Vertex AI를 사용하는 Gemini를 적어도 Android와 iOS에서 지원하는 오픈소스 Kotlin Multiplatform(KMP) 라이브러리를 만드는 것을 목표로 해요. 기존 서비스를 위한 KMP 라이브러리 작성의 모범 사례를 보여줄 것이며, 적절한 프로덕션 구현(예: 올바른 API 키 관리, 사용자 관리 API 키 지원, 클라이언트 스로틀링)에 중점을 둘 거예요.
기대 결과
- 기존 Google 서비스를 지원하는 새로운 Kotlin Multiplatform 라이브러리
- 샘플 코드와 문서
선호 기술
- Kotlin
- Kotlin Multiplatform
- 모바일 개발(Android와 iOS)
가능한 멘토
Matt Dyor, Google 팀
Bazel에 Kotlin Multiplatform 지원 추가 [Hard, 350 hrs]
Bazel의 Kotlin 지원은 진화하고 있지만, 제대로 된 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, Uber 팀
Kotlin Language Server(LSP) [Hard, 350 hrs]
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 hrs]
Maven Central은 JVM 중심 라이브러리와 프로젝트를 게시하기 위한 가장 인기 있는 Maven 리포지토리 중 하나예요. Apache Maven이나 Gradle 기반 오픈소스 프로젝트가 활발히 사용하며, Sonatype Nexus v2에 기반하며 더 새로운 버전으로의 마이그레이션이 예정돼 있어요. 오픈소스 프로젝트의 새 Maven Central 인스턴스로의 마이그레이션이 진행 중인데, 그 인스턴스는 매우 다른 API 구현을 가지며 빌드 도구 플러그인에서 특별한 지원이 필요해요. 새 Maven Central 게시 API와 호환되는 Gradle 플러그인을 개발하면 Gradle로 빌드하는 라이브러리 작성자들이 새 프로세스를 원활하게 경험할 수 있게 돼요.
현재 Gradle에는 Maven Central 게시 플러그인의 여러 구현이 있어요. 예를 들어 Maven Publish Plugin이나 새 API를 이미 채택하려 하는 New Maven Central Publishing이 있어요. 지원 또는 커뮤니티 본딩 단계에서 잠재적 기여자는 구현들을 검토하고, 기존 플러그인을 업데이트할지 새 플러그인을 만들거나 포크(fork)할지 결정해야 해요. 산출물에는 Maven Central 게시용 기존 플러그인의 새 버전이나 Gradle용 새 플러그인이 포함돼요. 구현은 Kotlin이나 Java로 이루어지고 적절한 테스트 커버리지와 문서를 가질 것으로 기대해요. 추가 산출물로 플러그인 사용을 단순화한 Kotlin DSL 확장과 Declarative Gradle 확장이 포함될 수 있어요.
기대 결과
- 업데이트된 Maven Central 게시 플러그인 또는 새 플러그인
선호 기술
- Kotlin
- Gradle
- Maven 리포지토리
가능한 멘토
Oleg Nenashev, Gradle 팀
핵심 Gradle 플러그인의 Configuration Cache와 lock contention 개선 [Easy to Hard, 90 hrs to 350 hrs]
Gradle은 Isolated Projects를 개발 중이에요 — 이는 특히 Android Studio와 IntelliJ IDEA 동기화의 성능을 더욱 개선하기 위해 Configuration Cache를 크게 확장하는 새 기능이에요. 개발자 경험 관점에서 이것은 Gradle에서 가장 기대되는 기능 중 하나예요.
Isolated Projects의 문제 중 하나는 Gradle 코어의 lock contention으로, 플러그인이 때때로 병렬 실행을 방해할 수 있어요. 특히 Java, Kotlin, Android, Kotlin Multiplatform 생태계의 핵심 Gradle Build Tool 플러그인에서 lock contention을 줄이고 싶어요. 기여자들은 자신의 관심사와 원하는 프로젝트 규모에 따라 산출물을 선택할 수 있어요.
잠재적 산출물은 다음을 포함하되 이에 국한되지 않아요:
- Configuration Cache Report 도구를 Gradle Profiler에 내장(또는 "그것을 위한 GitHub Action 구현")
- 다양한 프로젝트에서 Gradle과 몇몇 인기 Gradle 플러그인을 프로파일링하고, GHA에서 테스트 스위트 자동화
- Configuration Cache 유무와 관계없이 lock contention을 줄일 수 있는 잠재적 영역과 플러그인 결정
- 그 사이에 대상 플러그인의 Configuration Cache 호환성의 다른 영역에 기여
- 발견된 개선 중 일부 구현
기대 결과
Gradle용 Kotlin DSL에 확장성 기능을 구현하고 일반적인 프로젝트 통합 지원을 개선
선호 기술
- Kotlin
- Gradle
- Java
- 성능 분석
- 프로파일링
가능한 멘토
Oleg Nenashev, Laura Kassovic
Jenkins 플러그인 개발용 Gradle convention 플러그인 [Easy to Hard, 90 hrs to 350 hrs]
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 플러그인용 새 convention 플러그인 구현 — Kotlin과 Kotlin DSL로 Jenkins 플러그인 Parent POM의 주요 기능을 커버. 플러그인 구축뿐 아니라 Jenkins 모범 사례에 따른 테스트와 정적 분석도 포함
- 가장 인기 있는 Gradle 플러그인(Gradle 플러그인 자체 포함)에 갱신된 플러그인 및/또는 convention 플러그인 채택
- Plugin Compatibility Tester와 Bill of Materials에 Gradle 플러그인 통합
- Jenkins 플러그인용 업데이트된 Gradle 개발 플로우 문서화
기대 결과
Jenkins Update Center와 Gradle Plugin Portal에 게시된, 업데이트된 Gradle JPI 플러그인 및/또는 Jenkins용 새 convention 플러그인
선호 기술
- Kotlin DSL
- Kotlin
- Gradle
- Jenkins
- Java
가능한 멘토
Oleg Nenashev, Stefan Wolf
Kotlin DSL과 Declarative Gradle 문서 샘플 테스트 프레임워크 [Easy to Medium, 90 hrs to 175 hrs]
Gradle을 포함한 많은 프로젝트에는 Kotlin DSL 샘플과 코드 스니펫이 많아요(예시는 Gradle Docs 참고). 그것들을 여러 버전에 대해 테스트하는 것은, 스니펫이 간결함을 위해 종종 불완전한 코드를 나타내기 때문에 어려운 면이 있어요. GitHub Actions 또는 TeamCity의 유닛 테스트 프레임워크(Kotest 또는 JUnit 5) 안에서 그 샘플들의 검증을 단순화하는 테스트 프레임워크를 구축하고 싶어요. 나중에는 Declarative Gradle 샘플에 대해서도 같은 작업을 하고 싶어요.
기대 결과
Gradle용 Kotlin DSL에 확장성 기능을 구현하고 일반적인 프로젝트 통합 지원을 개선
선호 기술
- Kotlin
- Gradle
- Java
- 정적 분석
가능한 멘토
Oleg Nenashev, Laura Kassovic
IntelliJ Platform Gradle Plugin – Gradle Reporting과 병렬 검증 [Medium, 175 hrs]
Gradle 빌드 시스템용 플러그인인 IntelliJ Platform Gradle Plugin은 IntelliJ 기반 IDE용 플러그인을 빌드·테스트·검증·게시하기 위한 환경 구성을 단순화해요. 이 플러그인은 IntelliJ Platform에 도입되는 끊임없는 변화를 따라가면서 빌드, 테스트, 검증 단계를 관리해요. IntelliJ Platform Gradle Plugin은 JetBrains, 서드파티 개발자, 외부 기업이 워크플로우를 JetBrains 도구와 통합하는 데 사용해요.
기대 결과
- 상세하고 구성 가능한 검증 태스크 리포트를 제공하는 Gradle Reporting 도입.
- Gradle Worker API를 활용해 여러 IntelliJ Platform 버전에 대해
verifyPlugin태스크를 병렬 실행해 태스크 실행 시간 단축. - 플러그인 개발 워크플로우를 더욱 개선할 추가 Gradle 개선 탐색.
선호 기술
- Kotlin
- Gradle
- IntelliJ Platform
가능한 멘토
Jakub Chrzanowski, JetBrains
Kotlin OpenRewrite 레시피 더 추가하기 [Medium, 175 hrs]
OpenRewrite는 코드 마이그레이션과 리팩토링을 구조화된 방식으로 자동화하는 강력한 프레임워크예요. OpenRewrite는 Java를 강력히 지원하지만, Kotlin 생태계는 개발자들이 코드베이스를 원활하게 마이그레이션하는 데 도움이 되는 더 포괄적인 OpenRewrite 레시피 세트의 혜택을 받을 수 있어요.
이 프로젝트는 Java 기반 AutoValue 클래스를 관용적인 Kotlin data class로 마이그레이션하고, 모범 사례를 따르도록 Kotlin 코드를 현대화하며, Kotlin 버전 간 더 원활한 마이그레이션을 가능하게 하는 등 더 많은 자동 변환을 추가해 Kotlin OpenRewrite 레시피 컬렉션을 확장하는 것을 목표로 해요. 이 레시피들은 Kotlin 개발자들이 최소한의 수동 노력으로 깨끗하고 최신이며 관용적인 코드베이스를 유지하도록 도와줄 거예요.
기대 결과
- Kotlin 코드 마이그레이션을 위한 새 OpenRewrite 레시피 개발
선호 기술
- Kotlin
- OpenRewrite 프레임워크
- Java-to-Kotlin 마이그레이션 전략
가능한 멘토
Shauvik Roy Choudhary, Uber 팀
Bazel rules_jvm_external에 BOM 지원 추가 [Hard, 350 hrs]
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 hrs to 175 hrs]
Gradle은 최근 Gradle과 서드파티 플러그인이 이슈와 경고를 통합된 방식으로 전파할 수 있게 하는 새 Problems API를 도입했어요. 이 API는 깨끗하고 실행 가능한 오류 리포트, 콘솔 출력에 대한 더 많은 통찰, 전용 HTML 리포트, 연결된 관측성(observability) 도구를 제공해요. IntelliJ IDEA나 Android Studio 같은 IDE도 Gradle의 API 통합 도구를 통해 세부 정보에 접근할 수 있고 코드 에디터에서 바로 경고를 보여줄 수 있어요. 여러 핵심 기능과 플러그인(Java 컴파일, 의존성 해결 오류, deprecation 경고 등)이 이미 Problems API를 채택했어요. 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