Skip to content

Kotlin과 함께하는 Google Summer of Code 2023

이 글은 Kotlin과 함께하는 Google Summer of Code 2023의 프로젝트 아이디어 목록을 담고 있습니다.

Google Summer of Code 2023은 이미 종료되었습니다. GSoC 2024에 참여하고 싶다면, 이 프로젝트 아이디어 목록을 확인하세요.

프로젝트 아이디어

Kotlin Multiplatform protobufs [상, 350시간]

설명

Kotlin/Native (iOS) 런타임 및 Objective-C 상호 운용성을 갖춘 protocKotlin/Common 프로토 지원을 추가합니다.

동기

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)을 가진 추가 라이브러리가 필요할 수 있습니다.

예상 결과물

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

필요 기술 (우대)

  • Kotlin
  • Objective-C

Groovy to Kotlin Gradle DSL 변환기 [중, 350시간]

설명

이 프로젝트는 Gradle 스크립트에 주로 초점을 맞춰 Groovy-to-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 기본 지식
  • 파서 및 컴파일러 작동 방식에 대한 일반적인 기본 지식
  • Kotlin 기본 지식

Eclipse Gradle KTS 편집 [중, 350시간]

이 프로젝트에 대한 블로그 게시물 읽기

설명

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

동기

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

예상 결과물

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

필요 기술 (우대)

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

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

설명 및 동기

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

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

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

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

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

예상 결과물

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

필요 기술 (우대)

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

kotlinx-benchmark 라이브러리 API 및 사용자 경험 향상 [하, 175시간]

이 프로젝트에 대한 블로그 게시물 읽기

설명

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

동기

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

예상 결과물

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

필요 기술 (우대)

  • Kotlin
  • Gradle 내부

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

이 프로젝트에 대한 블로그 게시물 읽기

설명

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

동기

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

예상 결과물

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

필요 기술 (우대)

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