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 지원을 설계 및 구축하여 다음에 기여합니다.
- GitHub – protocolbuffers/protobuf: Protocol Buffers – Google's data interchange format
- GitHub – google/protobuf-gradle-plugin
- Kotlin Multiplatform Gradle Plugin
필요한 기술 (선호)
- 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 플러그인 개발