Skip to content

Kotlin과 함께하는 구글 서머 오브 코드 2023

이 글에는 Kotlin과 함께하는 구글 서머 오브 코드 2023을 위한 프로젝트 아이디어 목록이 포함되어 있습니다.

NOTE

구글 서머 오브 코드 2023은 이미 종료되었습니다.

GSoC 2024에 참여하고 싶다면, 이 프로젝트 아이디어 목록을 확인하세요.

프로젝트 아이디어

Kotlin Multiplatform protobufs [어려움, 350시간]

설명

protoc에 Kotlin/Native (iOS) 런타임 및 Objective-C 상호 운용성(interop)을 포함하여 Kotlin/Common protos 지원을 추가합니다.

동기

protobufs는 여러 플랫폼 구현을 가지고 있지만, Kotlin Multiplatform 프로젝트에서 이를 사용할 방법이 없습니다.

예상 결과물

Kotlin Multiplatform Protobuf 지원을 설계하고 구축하며, 다음 프로젝트에 기여하는 것을 목표로 합니다:

필요 역량 (우대)

  • Kotlin
  • Objective-C
  • C++

Kotlin 컴파일러 오류 메시지 [어려움, 350시간]

설명

K2 Kotlin 컴파일러에 개선된 컴파일러 오류 메시지를 추가합니다: Rust와 같이 더 실행 가능하고 상세한 정보를 제공합니다.

동기

Rust 컴파일러 오류 메시지는 모든 컴파일러 중에서 단연 가장 유용한 것으로 평가됩니다. Kotlin K2 컴파일러는 Kotlin에서 더 나은 컴파일러 오류를 위한 훌륭한 기반을 제공하지만, 이 잠재력은 아직 충분히 활용되지 않고 있습니다.

예상 결과물

StackOverflow 및 다른 데이터 소스를 활용하여, 사용자에게 상당한 가치를 제공할 수 있는 일반적인 컴파일러 오류를 찾아냅니다. 해당 오류 메시지를 개선하기 위해 컴파일러에 기여합니다.

필요 역량 (우대)

  • Kotlin
  • 컴파일러 아키텍처

Kotlin Multiplatform 라이브러리 [쉬움 또는 보통, 175시간 또는 350시간]

설명

자주 필요한 Kotlin Multiplatform 라이브러리를 생성하고 (Maven Central에) 배포합니다. 예를 들어, 압축, 암호화 등입니다.

동기

Kotlin Multiplatform은 아직 비교적 새로운 기술이며, 플랫폼 독립적인 (Kotlin/Common) 추가 라이브러리 및/또는 플랫폼 구현(expect/actual)이 필요한 라이브러리가 필요합니다.

예상 결과물

JVM/Android 및 Kotlin/Native (iOS)에 다른 대상 (Kotlin/JS)보다 더 높은 우선순위를 두고 최소한 하나의 Kotlin Multiplatform 라이브러리를 설계하고 배포합니다.

필요 역량 (우대)

  • Kotlin
  • Objective-C

Groovy-Kotlin Gradle DSL 변환기 [보통, 350시간]

설명

이 프로젝트는 주로 Gradle 스크립트에 초점을 맞춘 Groovy-Kotlin 변환기를 만드는 것을 목표로 합니다. 사용자가 Groovy 스타일의 의존성 선언을 Kotlin 스크립트에 붙여넣고 IDE가 이를 자동으로 변환하는 경우와 같은 기본적인 사용 사례부터 시작할 것입니다. 이후에는 더 복잡한 코드 구성과 전체 파일 변환을 지원하기 시작할 것입니다.

동기

Kotlin Gradle DSL은 인기를 얻고 있으며, 곧 Gradle로 프로젝트를 빌드하는 데 기본 선택지가 될 정도로 인기가 많습니다. 하지만 Gradle에 대한 많은 문서와 자료는 여전히 Groovy를 참조하고 있으며, Groovy 샘플을 build.gradle.kts에 붙여넣으려면 수동 편집이 필요합니다. 게다가 Gradle의 많은 새로운 기능은 Kotlin으로 먼저 제공될 것이며, 결과적으로 사용자는 Groovy DSL에서 Kotlin DSL로 마이그레이션할 것입니다. 따라서 빌드 설정의 자동 코드 변환은 이러한 마이그레이션을 크게 용이하게 하고, 많은 시간을 절약해 줄 것입니다.

예상 결과물

주요 초점을 Gradle DSL에 맞춰 Groovy 코드를 Kotlin으로 변환할 수 있는 IntelliJ IDEA용 플러그인.

필요 역량 (우대)

  • Gradle에 대한 기본 지식
  • 파서(parser)와 컴파일러 작동 방식에 대한 기본적인 지식
  • Kotlin에 대한 기본 지식

Eclipse Gradle KTS 편집 [보통, 350시간]

설명

Eclipse에서 Gradle Kotlin 스크립트(KTS) 편집 경험을 개선합니다.

동기

IntelliJ IDEA와 Android Studio는 KTS Gradle 빌드 스크립트 편집에 대한 훌륭한 지원을 제공하지만, Eclipse 지원은 부족합니다. 정의로 이동(Ctrl-Click), 코드 완성, 코드 오류 강조 기능이 모두 개선될 수 있습니다.

예상 결과물

KTS 편집을 위한 개발자 경험을 개선하는 Gradle Eclipse 플러그인에 기여합니다.

필요 역량 (우대)

  • Kotlin
  • Gradle
  • Eclipse 플랫폼 및 플러그인

IntelliJ IDEA용 Kotlin 플러그인에서 매개변수 전달 지원 개선 [보통, 350시간]

설명 및 동기

Kotlin 플러그인은 IntelliJ IDEA 및 Android Studio에서 Kotlin 언어 지원을 제공합니다. 이 프로젝트의 범위 내에서, 플러그인에 대한 매개변수 전달 지원을 개선할 것입니다.

상속보다 조합(composition)을 선호하는 것은 널리 알려진 원칙입니다. IntelliJ IDEA는 상속을 사용하는 코드 작성에 대한 훌륭한 지원을 제공하지만 (IDE가 제안하는 완성 및 빠른 수정 기능 등), 상속 대신 조합을 사용하는 코드에 대한 지원은 아직 구현되지 않았습니다.

조합을 많이 사용하는 코드 작업의 주요 문제는 매개변수 전달입니다. 특히:

  • IDE가 현재 기본 인수를 사용하는 다른 함수에 인수로 전달될 수 있는 매개변수 선언 완성을 제안하지 않습니다.
  • IDE가 전달된 매개변수 체인을 이름 변경하지 않습니다.
  • IDE가 전달될 수 있는 매개변수로 모든 필수 인수를 채우도록 제안하는 빠른 수정 기능을 제공하지 않습니다.

이러한 지원이 크게 환영받을 만한 한 가지 주목할 만한 예시는 Jetpack Compose입니다. 안드로이드의 최신 UI 구축 도구 키트인 Jetpack Compose는 함수 조합과 매개변수 전달을 많이 사용합니다. @Composable 함수는 매개변수가 많기 때문에 작업하기가 빠르게 지루해집니다. 예를 들어, androidx.compose.material.TextField는 19개의 매개변수를 가지고 있습니다.

예상 결과물

  • IntelliJ IDEA에서 개선된 매개변수 및 인수 완성 제안.
  • 동일한 이름과 타입을 가진 매개변수로 모든 필수 인수를 채우도록 제안하는 IDE 빠른 수정 기능 구현.
  • 이름 변경(Rename) 리팩토링이 전달된 매개변수 체인의 이름을 변경합니다.
  • 매개변수 전달 및 매개변수가 많은 함수와 관련된 기타 모든 IDE 개선 사항.

필요 역량 (우대)

  • Kotlin 및 Java 지식
  • 대규모 코드베이스에서 탐색 능력

kotlinx-benchmark 라이브러리 API 및 사용자 경험 개선 [쉬움, 175시간]

설명

kotlinx-benchmark는 Kotlin으로 작성된 멀티플랫폼 코드 벤치마킹을 위한 오픈 소스 라이브러리입니다. 이 라이브러리는 기본적인 골격만 갖추고 있지만, 세분화된 벤치마크 구성 (시간 단위, 모드 등), JVM 및 Kotlin/Native 벤치마킹 간의 기능 동등성, 명령줄 API, 그리고 최신 Gradle 지원과 같은 사용 편의성 기능이 부족합니다. 문서, 통합 테스트, 예제 또한 뒤처져 있습니다.

동기

이 라이브러리는 이미 구현되었지만, 때로는 올바르게 사용하기 어렵고 일부 사용자를 혼란스럽게 합니다. 라이브러리의 사용자 경험을 개선하는 것은 Kotlin 커뮤니티에 큰 도움이 될 것입니다.

예상 결과물

  • 라이브러리는 사용 예제와 함께 명확한 문서를 가집니다.
  • 라이브러리 API는 간단하고 사용하기 쉽습니다.
  • Kotlin/JVM 코드 벤치마킹을 위한 옵션이 다른 플랫폼의 코드 벤치마킹에도 사용할 수 있게 됩니다.

필요 역량 (우대)

  • Kotlin
  • Gradle 내부 구조

디버거에서 Kotlin 코루틴을 위한 병렬 스택 [어려움, 350시간]

설명

Kotlin 코루틴 디버깅 경험을 개선하기 위해 병렬 스택 보기를 구현합니다.

동기

현재 IntelliJ IDEA에서 코루틴 디버깅 지원은 매우 제한적입니다. Kotlin 디버거는 코루틴 패널을 가지고 있어 사용자가 모든 코루틴과 해당 상태를 볼 수 있게 하지만, 많은 코루틴이 포함된 애플리케이션을 디버깅할 때는 그다지 유용하지 않습니다. JetBrains Rider는 사용자가 스레드와 해당 스택 트레이스를 그래프 보기로 검사할 수 있게 하는 병렬 스택 기능을 가지고 있으며, 이는 코루틴을 검사하는 훌륭한 방법이 될 수 있습니다.

예상 결과물

Kotlin 코루틴 디버거 API를 사용하여, 디버거에 코루틴을 위한 병렬 스택 보기를 추가하는 IntelliJ IDEA 플러그인을 개발합니다. 코루틴의 그래프 표현을 개선할 방법을 찾습니다.

필요 역량 (우대)

  • Kotlin
  • Kotlin 코루틴
  • IntelliJ IDEA 플러그인 개발