본문으로 건너뛰기

Kotlin과 함께하는 Google Summer of Code 2023

이 글에서는 Kotlin 2023을 사용한 Google Summer of Code에 대한 프로젝트 아이디어 목록을 제공합니다.

노트

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

프로젝트 아이디어

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

설명

Kotlin/Native (iOS) 런타임 및 Objective-C interop을 사용하여 Kotlin/Common protos에 대한 지원을 protoc에 추가합니다.

동기

protobufs에는 많은 플랫폼 구현이 있지만 Kotlin Multiplatform 프로젝트에서 이를 사용하는 방법은 없습니다.

예상 결과

Kotlin Multiplatform Protobuf 지원을 설계 및 구축하여 다음에 기여합니다.

필요한 기술 (선호)

  • Kotlin
  • Objective-C
  • C++

Kotlin Compiler error messages [어려움, 350시간]

설명

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

동기

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

예상 결과

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

필요한 기술 (선호)

  • Kotlin
  • 컴파일러 아키텍처

Kotlin Multiplatform libraries [쉬움 또는 중간, 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 to Kotlin Gradle DSL Converter [중간, 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 editing [중간, 350시간]

설명

Eclipse에서 Gradle Kotlin Scripts (KTS) 편집 경험을 개선합니다.

동기

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

예상 결과

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

필요한 기술 (선호)

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

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

설명 및 동기

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

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

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

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

이러한 지원이 크게 환영받을 만한 주목할만한 예는 Jetpack Compose입니다. UI를 구축하기 위한 Android의 최신 툴킷인 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 지원과 같은 삶의 질 기능이 부족합니다. 문서, 통합 테스트 및 예제도 뒤쳐져 있습니다.

동기

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

예상 결과

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

필요한 기술 (선호)

  • Kotlin
  • Gradle 내부

디버거에서 Kotlin Coroutines에 대한 병렬 스택 [어려움, 350시간]

설명

Coroutine 디버깅 경험을 개선하기 위해 Kotlin coroutines에 대한 Parallel Stacks 보기를 구현합니다.

동기

현재 IntelliJ IDEA에서 coroutines 디버깅에 대한 지원은 매우 제한적입니다. Kotlin 디버거에는 모든 coroutines 및 해당 상태를 볼 수 있는 Coroutines Panel이 있지만 많은 coroutines가 있는 애플리케이션을 디버깅할 때는 그다지 유용하지 않습니다. JetBrains Rider에는 사용자가 스레드와 해당 스택 추적을 그래프 뷰에서 검사할 수 있는 Parallel Stacks 기능이 있습니다. 이는 coroutines를 검사하는 좋은 방법이 될 수 있습니다.

예상 결과

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

필요한 기술 (선호)

  • Kotlin
  • Kotlin coroutines
  • IntelliJ IDEA 플러그인 개발