Kotlin과 함께하는 Google Summer of Code 2023
Kotlin과 함께하는 Google Summer of Code 2023
Kotlin과 함께하는 Google Summer of Code(GSoC) 2023에서 진행할 수 있는 프로젝트 아이디어 목록을 소개할게요. 각 아이디어는 난이도, 소요 시간, 설명, 동기, 기대 결과, 요구 기술로 구성돼 있어요. 관심 있는 프로젝트를 골라 지원해보세요.
본문
이 문서에는 Kotlin과 함께하는 Google Summer of Code 2023의 프로젝트 아이디어 목록이 담겨 있어요.
프로젝트 아이디어
Kotlin Multiplatform protobufs [Hard, 350 hrs]
설명
protoc에 Kotlin/Common protos에 대한 지원을 추가하고, Kotlin/Native(iOS) 런타임과 Objective-C interop을 제공해요.
동기
protobuf에는 많은 플랫폼 구현이 있지만, 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 오류 메시지 [Hard, 350 hrs]
설명
K2 Kotlin 컴파일러에 개선된 컴파일러 오류 메시지를 추가해요: 더 실행 가능하고 상세한 정보(Rust가 가진 것처럼요).
동기
Rust 컴파일러의 오류 메시지는 어떤 컴파일러보다 훨씬 유용하다고 자주 평가받아요. Kotlin K2 컴파일러는 Kotlin에서 더 나은 컴파일러 오류를 위한 훌륭한 기반을 제공하지만, 이 잠재력은 다소 활용되지 않고 있어요.
기대 결과
StackOverflow와 다른 데이터 소스를 사용해 사용자에게 큰 가치가 있을 일반적인 컴파일러 오류를 찾아내요. 그리고 그 오류 메시지를 개선하기 위해 컴파일러에 기여해요.
요구 기술(선호)
- Kotlin
- 컴파일러 아키텍처
Kotlin Multiplatform 라이브러리 [Easy or Medium, 175 or 350 hrs]
설명
흔히 필요한 Kotlin Multiplatform 라이브러리를 만들어 (Maven Central에) 배포해요. 예를 들어 압축(compression), 암호화(crypto)처럼요.
동기
Kotlin Multiplatform은 아직 꽤 새롭고, 플랫폼 독립적(Kotlin/Common)이거나 플랫폼 구현(expect/actual)을 가진 추가 라이브러리를 몇 개 더 필요로 해요.
기대 결과
다른 대상(Kotlin/JS)보다 JVM/Android와 Kotlin/Native(iOS)를 우선순위로 한 Kotlin Multiplatform 라이브러리를 하나 이상 설계하고 배포해요.
요구 기술(선호)
- Kotlin
- Objective-C
Groovy to Kotlin Gradle DSL 변환기 [Medium, 350 hrs]
설명
이 프로젝트는 Gradle 스크립트에 중점을 둔 Groovy-to-Kotlin 변환기를 만드는 것을 목표로 해요. 사용자가 Groovy 스타일 의존성 선언을 Kotlin 스크립트에 붙여넣으면 IDE가 자동으로 변환해주는 것 같은 기본 사용 사례부터 시작할 거예요. 나중에는 더 복잡한 코드 구조와 전체 파일 변환을 지원하기 시작할 거예요.
동기
Kotlin Gradle DSL은 인기를 얻고 있어서, 곧 Gradle로 프로젝트를 빌드하는 기본 선택이 될 거예요. 하지만 Gradle에 대한 많은 문서와 자료는 여전히 Groovy를 가리키고, Groovy 샘플을 build.gradle.kts에 붙여넣으려면 수동 편집이 필요해요. 게다가 Gradle 주변의 많은 새 기능이 Kotlin에 먼저 나올 것이므로, 사용자들은 Groovy DSL에서 Kotlin DSL로 마이그레이션할 거예요. 따라서 빌드 설정의 자동 코드 변환은 이 마이그레이션을 크게 수월하게 해주고 많은 시간을 절약해줄 거예요.
기대 결과
Groovy 코드를 Kotlin으로 변환할 수 있는, 특히 Gradle DSL에 초점을 맞춘 IntelliJ IDEA용 플러그인.
요구 기술(선호)
- Gradle 기본 지식
- 파서와 컴파일러가 일반적으로 어떻게 동작하는지에 대한 기본 지식
- Kotlin 기본 지식
Eclipse Gradle KTS 편집 [Medium, 350 hrs]
설명
Eclipse에서 Gradle Kotlin Scripts(KTS)를 편집하는 경험을 개선해요.
동기
IntelliJ IDEA와 Android Studio는 KTS Gradle 빌드 스크립트 편집을 훌륭하게 지원하지만, Eclipse 지원은 부족해요. Ctrl-Click으로 정의 이동, 코드 완성, 코드 오류 강조 표시 모두 개선될 수 있어요.
기대 결과
KTS 편집을 위한 개발자 경험을 개선하는 Gradle Eclipse 플러그인에 기여해요.
요구 기술(선호)
- Kotlin
- Gradle
- Eclipse 플랫폼과 플러그인
IntelliJ IDEA용 Kotlin 플러그인에서 파라미터 전달 지원 개선 [Medium, 350 hrs]
설명 및 동기
Kotlin 플러그인은 IntelliJ IDEA와 Android Studio에서 Kotlin 언어 지원을 제공해요. 이 프로젝트 범위에서 여러분은 플러그인의 파라미터 전달(parameter forwarding) 지원을 개선하게 돼요.
상속보다 구성을 선호하는 것은 널리 알려진 원칙이에요. IntelliJ IDEA는 상속을 사용하는 코드를 작성하는 데 훌륭한 지원을 제공하지만(IDE가 제안하는 완성과 quick-fix), 상속 대신 구성을 사용하는 코드에 대한 지원은 아직 구현되지 않았어요.
구성을 많이 사용하는 코드를 다룰 때의 주요 문제는 파라미터 전달이에요. 구체적으로:
- IDE는 현재 기본 파라미터 값을 사용하는 다른 함수에 인자로 전달될 수 있는 파라미터 선언의 완성을 제안하지 않아요.
- IDE는 전달된 파라미터 체인을 이름 변경하지 않아요.
- IDE는 전달될 수 있는 파라미터로 필요한 모든 인자를 채우는 quick-fix를 제공하지 않아요.
이런 지원이 크게 환영받을 두드러진 예는 Jetpack Compose예요. Android의 현대적인 UI 구축 툴킷인 Jetpack Compose는 함수 구성과 파라미터 전달을 많이 사용해요. @Composable 함수는 파라미터가 많기 때문에 작업하기가 금방 지루해져요. 예를 들어 androidx.compose.material.TextField는 19개의 파라미터를 가져요.
기대 결과
- IntelliJ IDEA에서 개선된 파라미터·인자 완성 제안.
- 같은 이름과 타입의 파라미터로 모든 필수 인자를 채우는 것을 제안하는 IDE quick-fix 구현.
- Rename 리팩토링이 전달된 파라미터 체인을 이름 변경.
- 파라미터 전달과 파라미터가 많은 함수 주변의 다른 모든 IDE 개선.
요구 기술(선호)
- Kotlin과 Java 지식
- 큰 코드베이스를 탐색할 수 있는 능력
kotlinx-benchmark 라이브러리 API와 사용자 경험 개선 [Easy, 175 hrs]
설명
kotlinx-benchmark는 Kotlin으로 작성된 멀티플랫폼 코드를 벤치마킹하기 위한 오픈소스 라이브러리예요. 기본적인 뼈대는 있지만, 세분화된 벤치마크 구성(시간 단위, 모드 같은), JVM과 Kotlin/Native 벤치마킹 사이의 기능 동등성, 커맨드라인 API, 현대적인 Gradle 지원 같은 삶의 질(QoL) 기능이 부족해요. 문서, 통합 테스트, 예시도 뒤처져 있어요.
동기
라이브러리는 이미 구현되어 있지만, 때로 올바르게 사용하기 어렵고 일부 사용자를 혼란스럽게 해요. 라이브러리의 사용자 경험을 개선하면 Kotlin 커뮤니티에 큰 도움이 될 거예요.
기대 결과
- 라이브러리에 사용 예시가 포함된 명확한 문서가 있어요.
- 라이브러리 API가 단순하고 사용하기 쉬워요.
- Kotlin/JVM 코드를 벤치마킹하는 옵션이 다른 플랫폼의 코드를 벤치마킹하는 데에도 사용 가능해요.
요구 기술(선호)
- Kotlin
- Gradle 내부(internals)
디버거에서 Kotlin Coroutines용 병렬 스택 [Hard, 350 hrs]
설명
Kotlin 코루틴을 위한 Parallel Stacks 뷰를 구현해 코루틴 디버깅 경험을 개선해요.
동기
현재 IntelliJ IDEA의 코루틴 디버깅 지원은 매우 제한적이에요. Kotlin 디버거에는 사용자가 모든 코루틴과 그 상태를 볼 수 있게 해주는 Coroutines Panel이 있지만, 코루틴이 많은 애플리케이션을 디버깅할 때는 그리 도움이 되지 않아요. JetBrains Rider에는 사용자가 스레드와 그 스택 트레이스를 그래프 뷰로 검사할 수 있게 해주는 Parallel Stacks 기능이 있어서, 코루틴을 검사하는 좋은 방법이 될 수 있어요.
기대 결과
Kotlin 코루틴 디버거 API를 사용해, 디버거에 코루틴용 병렬 스택 뷰를 추가하는 IntelliJ IDEA 플러그인을 개발해요. 코루틴의 그래프 표현을 개선할 방법을 찾아요.
요구 기술(선호)
- Kotlin
- Kotlin coroutines
- IntelliJ IDEA 플러그인 개발