Skip to content

Google Summer of Code with Kotlin 2024

이 문서에는 Google Summer of Code with Kotlin 2024의 프로젝트 아이디어 목록기여자 가이드라인이 포함되어 있습니다.

NOTE

Kotlin 리소스:

질문이 있다면 [email protected]문의하세요.

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

시작하기

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

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

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

지원 방법

  1. 프로젝트 아이디어를 확인하고 작업하고 싶은 아이디어를 선택하세요.
  2. Kotlin에 익숙하지 않다면 Kotlin 웹사이트에서 소개 정보를 읽어보세요.
  3. GSoC 기여자 가이드라인을 참조하세요.
  4. GSoC 웹사이트를 통해 지원하세요.
    • 제안하는 프로젝트와 관련된 작동하는 코드 샘플을 작성하는 것을 권장합니다. 또한 특히 자랑스러운 코드 샘플을 보여줄 수도 있습니다.
    • Kotlin에 관심이 있는 이유와 Kotlin 경험에 대해 설명하세요.
    • 오픈 소스 프로젝트에 참여한 경우, 기여 기록을 참조하세요.
    • GitHub, Twitter 계정, 블로그 또는 기술/과학 출판물 포트폴리오가 있는 경우, 해당 자료도 참조하세요.
    • 시험 및 휴가와 같은 다른 약속으로 인해 GSoC 일정과 충돌하는 부분이 있다면 공개하세요.

감사합니다! 여러분의 지원서를 기대합니다!

프로젝트 아이디어

Kotlin-to-WebAssembly 컴파일러를 위한 점진적 컴파일 [어려움, 350시간]

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

예상 결과물

Kotlin-to-WebAssembly 컴파일러에 점진적 컴파일 기능 구현을 통해 더 빠른 개발 워크플로우에 기여합니다.

필수 기술 (선호)

Kotlin

가능한 멘토

Artem Kobzar, JetBrains

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

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

예상 결과물

Skia 바인딩과 Compose Multiplatform의 통합 및 데스크톱 애플리케이션 성능 영향 평가.

필수 기술 (선호)

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

가능한 멘토

Artem Kobzar, JetBrains

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

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

예상 결과물

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

필수 기술 (선호)

Kotlin, Jetpack Compose, UI/UX Design

가능한 멘토

Artem Kobzar, JetBrains

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

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

예상 결과물

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

필수 기술 (선호)

Kotlin, Gradle, Java, Static Analysis

가능한 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

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

Gradle을 포함한 많은 프로젝트에는 수많은 Kotlin DSL 샘플과 코드 스니펫이 있습니다(Gradle Docs에서 예시를 참조하세요). 이러한 샘플과 스니펫은 간결함을 위해 불완전한 코드인 경우가 많아 여러 버전에서 테스트하는 데 특정 어려움이 있습니다. 우리는 GitHub Actions 및 Teamcity에서 단위 테스트 프레임워크(Kotest 또는 JUnit 5) 내에서 이러한 샘플의 검증을 단순화하는 테스트 프레임워크를 구축하고자 합니다.

예상 결과물

Kotlin DSL 샘플을 위한 기본 테스트 프레임워크 구현 및 지속적인 테스트를 위한 GitHub Actions 통합.

필수 기술 (선호)

Kotlin, Testing Frameworks, CI/CD

가능한 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

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

Kotlin과 Gradle은 Android 프로젝트 빌드를 위한 기본 선택입니다. 2023년 11월, Microsoft 팀은 Gradle Build Server 프로젝트를 발표했는데, 이는 Build Server Protocol (BSP)의 Gradle 특정 구현입니다. 이곳에 Android 빌드를 위한 완전한 지원을 도입하는 것이 좋을 것입니다. 더 작은 범위의 프로젝트의 경우, Gradle Build Server에서 Gradle 작업에 대한 자동 검색 및 취소를 구현할 수 있습니다.

예상 결과물

Gradle Build Server에 Android 프로젝트 지원 구현 (자동 검색 및 작업 취소 포함).

필수 기술 (선호)

Kotlin, Gradle, Android Development, Visual Studio Code

가능한 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

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

오픈 소스 툴킷인 kotlinx-benchmark 라이브러리는 다양한 플랫폼에서 Kotlin 코드의 벤치마킹을 용이하게 합니다. 현재 JVM용 GC 프로파일링 기능을 제공하여 각 벤치마크 메서드의 할당률을 자세히 보여줍니다. 이 프로젝트는 Kotlin/Native에도 유사한 프로파일링 기능을 확장하여 플랫폼 전반에 걸쳐 통일된 벤치마킹 기능을 향상시키는 것을 목표로 합니다.

기여자는 Kotlin/Native 팀과 긴밀히 협력하여 Kotlin/Native 메모리 관리자로부터 할당 데이터에 접근하기 위한 API를 만들 것입니다. 목표는 JVM 형식에 맞춰 보고서를 생성하여 플랫폼 전반에 걸쳐 데이터 표현의 일관성을 보장하는 것입니다. 또한, 이 프로젝트는 다른 라이브러리 기능에 대한 보고서 형식의 불일치를 식별하고 수정하여, 포괄적인 크로스 플랫폼 분석을 위한 벤치마킹 출력을 표준화하는 것을 포함합니다.

예상 결과물

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

필수 기술 (선호)

Kotlin, Kotlin/Native, Benchmarking, Memory Profiling

가능한 멘토

Abduqodiri Qurbonzoda, JetBrains Alexander Shabalin, JetBrains

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

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

예상 결과물

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

필수 기술 (선호)

Kotlin, Android Development, Benchmarking

가능한 멘토

Abduqodiri Qurbonzoda, JetBrains Rahul Ravikumar, Google

IntelliJ IDEA에서 kotlinx-benchmark 벤치마크를 클릭 한 번으로 실행 가능하게 만들기 [중간, 175시간]

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

예상 결과물

IntelliJ IDEA에서 kotlinx-benchmark 벤치마크에 대한 클릭 한 번으로 실행 기능 통합 및 사용자 경험 향상.

필수 기술 (선호)

Kotlin, IntelliJ IDEA Plugin Development, Benchmarking

가능한 멘토

Abduqodiri Qurbonzoda, JetBrains