Skip to content

Kotlin과 함께하는 Google Summer of Code 2024

이 문서는 Google Summer of Code with Kotlin 2024를 위한 프로젝트 아이디어 목록기여자 가이드라인을 포함하고 있습니다.

Kotlin 리소스:

질문이 있는 경우, [email protected]를 통해 문의해 주세요.

Kotlin 기여자를 위한 Google Summer of Code (GSoC) 가이드라인

시작하기

  1. GSoC FAQ프로그램 공지를 확인하세요.

  2. Kotlin 언어에 익숙해지세요:

  3. Kotlin 오픈 소스 커뮤니티에 대해 알아보세요:

지원 방법

  1. 프로젝트 아이디어를 확인하고 작업하고 싶은 아이디어를 선택하세요.
  2. Kotlin에 익숙하지 않다면 Kotlin 웹사이트의 입문 정보를 읽어보세요.
  3. GSoC 기여자 가이드라인을 참조하세요.
  4. GSoC 웹사이트를 통해 지원하세요.
    • 제안된 프로젝트와 관련된 작동하는 코드 샘플을 작성하는 것을 권장합니다. 특히 자랑하고 싶은 코드 샘플이 있다면 보여주셔도 좋습니다.
    • Kotlin에 관심을 갖게 된 이유와 관련 경험을 설명해 주세요.
    • 오픈 소스 프로젝트에 참여한 적이 있다면 기여 이력을 참조해 주세요.
    • GitHub, Twitter 계정, 블로그 또는 기술/과학 출판물 포트폴리오가 있다면 함께 참조해 주세요.
    • 시험이나 휴가 등 다른 일정으로 인해 GSoC 일정과 충돌이 있는 경우 이를 공개해 주세요.

감사합니다! 여러분의 지원서를 기다리겠습니다!

프로젝트 아이디어

Kotlin-to-WebAssembly 컴파일러를 위한 증분 컴파일 (Incremental compilation) [상, 350시간]

증분 컴파일(Incremental compilation)은 전체 프로그램을 다시 컴파일(클린 빌드라고도 함)하는 대신 변경된 파일만 다시 컴파일하여 컴파일 속도를 높이는 기술입니다. 현재 Kotlin-to-Wasm 컴파일러는 클린 빌드만 지원하지만, 이 프로젝트를 통해 증분 컴파일도 지원하도록 개선할 예정입니다.

기대 결과

Kotlin-to-WebAssembly 컴파일러에 증분 컴파일 기능을 구현하여 개발 워크플로 속도 향상에 기여합니다.

필요 기술 (우대)

Kotlin

예상 멘토

Artem Kobzar, JetBrains

Skia용 Node.js 네이티브 바인딩을 사용한 Compose Multiplatform [상, 350시간]

Compose Multiplatform은 Kotlin으로 구축된 UI를 여러 플랫폼에서 공유하기 위한 선언형 프레임워크입니다. 데스크톱 애플리케이션을 렌더링하는 현재 방식은 JVM을 플랫폼으로 사용하지만, 웹용 Compose Multiplatform을 사용하여 Skia의 네이티브 바인딩과 함께 브라우저 외부에서 애플리케이션을 실행하려고 하면 어떻게 될까요? 이것이 데스크톱 애플리케이션의 성능과 메모리 소비를 개선할까요? 아니면 그 반대일까요? 이 프로젝트에서 그 답을 찾아보겠습니다!

기대 결과

Skia 바인딩을 Compose Multiplatform과 통합하고 데스크톱 애플리케이션에 미치는 성능 영향을 평가합니다.

필요 기술 (우대)

Kotlin, Node.js, C++ 또는 Rust

예상 멘토

Artem Kobzar, JetBrains

Compose Multiplatform 컴포넌트 갤러리 생성기 [중, 350시간]

Compose Multiplatform은 Kotlin으로 구축된 UI를 여러 플랫폼에서 공유하기 위한 선언형 프레임워크입니다. 웹 개발의 React 시대 초기에 Storybook이 만들어졌으며, 컴포넌트 상태를 설명하고 전체 UI 라이브러리 갤러리를 생성하는 Storybook의 제안 방식은 여전히 웹 개발 문서화의 필수적인 접근 방식 중 하나입니다. Compose Multiplatform을 사용하여 웹 UI 요소 갤러리와 모바일 및 데스크톱용 갤러리를 생성하는 것과 똑같은 작업을 할 수 있을까요? 이 프로젝트에서 시도해 봅시다.

기대 결과

Compose Multiplatform을 사용하여 웹, 모바일 및 데스크톱 플랫폼용 UI 컴포넌트 갤러리를 생성하는 도구를 제작합니다.

필요 기술 (우대)

Kotlin, Jetpack Compose, UI/UX 디자인

예상 멘토

Artem Kobzar, JetBrains

선언형 Gradle을 위한 Kotlin DSL 개선 [중, 175시간]

지난 11월, Gradle 팀은 프로젝트에 더 높은 수준의 Kotlin DSL을 도입하는 새로운 Declarative Gradle 프로젝트를 발표했습니다. GSoC 기여자들이 참여하여 새로운 DSL의 개발자 경험을 개선하고, 특히 정적 분석, Kotest와 같은 테스트 프레임워크 등 가장 일반적인 Kotlin 및 Java 프로젝트 통합을 지원하기 위해 Gradle 플러그인의 확장성을 구현하는 작업을 함께하기를 기대합니다.

기대 결과

Gradle용 Kotlin DSL에 확장성 기능을 구현하고 일반적인 프로젝트 통합 지원을 개선합니다.

필요 기술 (우대)

Kotlin, Gradle, Java, 정적 분석

예상 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

Kotlin DSL 문서 샘플 테스트 프레임워크 [하 또는 중, 90시간 또는 175시간]

Gradle을 포함한 많은 프로젝트에는 많은 Kotlin DSL 샘플과 코드 스니펫이 있습니다(Gradle Docs의 예시 참조). 이러한 스니펫은 간결함을 위해 종종 불완전한 코드로 표현되기 때문에 여러 버전에 대해 테스트하는 데 어려움이 있습니다. GitHub Actions 및 Teamcity의 유닛 테스트 프레임워크(Kotest 또는 JUnit 5) 내에서 이러한 샘플의 검증을 단순화하는 테스트 프레임워크를 구축하고자 합니다.

기대 결과

지속적인 테스트를 위해 GitHub Actions와 통합된 Kotlin DSL 샘플용 기본 테스트 프레임워크를 구현합니다.

필요 기술 (우대)

Kotlin, 테스트 프레임워크, CI/CD

예상 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

Gradle 빌드 서버 – Android 프로젝트 지원 [중 또는 상, 175시간 또는 350시간]

Kotlin과 Gradle은 Android 프로젝트 빌드를 위한 기본 선택입니다. 2023년 11월, Microsoft 팀은 Build Server Protocol (BSP)의 Gradle 전용 구현인 Gradle Build Server 프로젝트를 발표했습니다. 여기에 Android 빌드에 대한 전체 지원을 도입하면 좋을 것입니다. 범위가 더 작은 프로젝트의 경우, Gradle Build Server에서 Gradle 작업의 자동 감지 및 취소 기능을 구현하는 것도 가능합니다.

기대 결과

자동 감지 및 작업 취소를 포함하여 Gradle Build Server에서 Android 프로젝트 지원을 구현합니다.

필요 기술 (우대)

Kotlin, Gradle, Android 개발, Visual Studio Code

예상 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

Kotlin/Native 벤치마크를 위한 메모리 사용량 프로파일링 구현 [중, 175시간]

오픈 소스 툴킷인 kotlinx-benchmark 라이브러리는 다양한 플랫폼에서 Kotlin 코드의 벤치마킹을 용이하게 합니다. 현재 JVM에 대한 GC 프로파일링 기능을 갖추고 있어 각 벤치마크 메서드의 할당률(allocation rate)을 자세히 보여줍니다. 이 프로젝트의 목표는 유사한 프로파일링 기능을 Kotlin/Native로 확장하여 플랫폼 전반에서 균일한 벤치마킹 기능을 제공하는 것입니다.

기여자는 Kotlin/Native 팀과 긴밀히 협력하여 Kotlin/Native 메모리 관리자에서 할당 데이터에 액세스하기 위한 API를 만들게 됩니다. 목표는 JVM 형식과 일치하는 보고서를 생성하여 플랫폼 간 데이터 표현의 일관성을 보장하는 것입니다. 또한, 이 프로젝트에는 다른 라이브러리 기능에 대한 보고 형식의 불일치를 식별하고 수정하여 종합적인 교차 플랫폼 분석을 위해 벤치마킹 출력을 표준화하는 작업이 포함됩니다.

기대 결과

Kotlin/Native를 위한 kotlinx-benchmark의 메모리 사용량 프로파일링 구현 및 표준화된 벤치마킹 출력.

필요 기술 (우대)

Kotlin, Kotlin/Native, 벤치마킹, 메모리 프로파일링

예상 멘토

Abduqodiri Qurbonzoda, JetBrains
Alexander Shabalin, JetBrains

kotlinx-benchmark에서 Android 타겟 지원 [중, 175시간]

kotlinx-benchmark 라이브러리는 JVM, JS, WasmJs, Native를 포함한 여러 플랫폼에서 Kotlin 코드를 벤치마킹하기 위해 설계된 오픈 소스 도구입니다. 광범위한 호환성에도 불구하고, 이 라이브러리는 현재 Android에서의 벤치마킹을 지원하지 않습니다. 이 프로젝트는 그 격차를 해소하는 것을 목표로 합니다. 계획은 이 기능을 통합하기 위해 백그라운드에서 androidx.benchmark와 같은 기존 Android 라이브러리를 활용하는 것입니다. 프로젝트의 핵심 측면은 현재 다른 플랫폼에서 사용할 수 있는 모든 기능이 Android에서도 지원되도록 보장하여 라이브러리의 멀티플랫폼 유용성을 유지하는 것입니다.

기대 결과

kotlinx-benchmark에 Android 플랫폼용 벤치마킹 지원을 통합하여 다른 플랫폼과의 기능 동등성을 보장합니다.

필요 기술 (우대)

Kotlin, Android 개발, 벤치마킹

예상 멘토

Abduqodiri Qurbonzoda, JetBrains
Rahul Ravikumar, Google

IntelliJ IDEA에서 kotlinx-benchmark 벤치마크를 위한 클릭 투 런 (Click-to-run) 활성화 [중, 175시간]

kotlinx-benchmark는 Kotlin으로 작성된 멀티플랫폼 코드를 벤치마킹하기 위한 오픈 소스 라이브러리입니다. 여기에는 적용 시 벤치마크 실행을 위한 작업을 제공하는 Gradle 플러그인이 포함되어 있습니다. 그러나 이러한 작업을 실행하려면 IDE의 Gradle 패널로 이동하거나 터미널을 사용해야 합니다. 또한 특정 벤치마크를 실행하려면 추가 단계가 필요하여 복잡함이 더해집니다. 이러한 불편함을 완화하고 프로세스를 간소화하기 위해, 이 프로젝트는 유닛 테스트에서 제공하는 편리함과 마찬가지로 사용자가 IntelliJ IDEA 인터페이스에서 직접 개별 벤치마크 또는 전체 스위트를 실행할 수 있도록 하는 것을 목표로 합니다. 이 목표를 달성하기 위해 IntelliJ IDEA 팀과의 협력 및/또는 IntelliJ 프로젝트에 직접 기여하는 작업이 필요할 수 있습니다.

기대 결과

IntelliJ IDEA에서 kotlinx-benchmark 벤치마크를 위한 클릭 투 런(Click-to-run) 기능을 통합하여 사용자 경험을 개선합니다.

필요 기술 (우대)

Kotlin, IntelliJ IDEA 플러그인 개발, 벤치마킹

예상 멘토

Abduqodiri Qurbonzoda, JetBrains