Skip to content

Kotlin과 함께하는 구글 서머 오브 코드 2024

이 문서에는 Kotlin과 함께하는 2024년 구글 서머 오브 코드의 프로젝트 아이디어 목록기여자 가이드라인이 포함되어 있습니다.

Kotlin 리소스:

질문이 있으시면 [email protected] 으로 문의해 주세요.

Kotlin과 함께하는 구글 서머 오브 코드(GSoC) 기여자 가이드라인

시작하기

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

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

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

신청 방법

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

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

프로젝트 아이디어

Kotlin-to-WebAssembly 컴파일러를 위한 점진적 컴파일 [Hard, 350 hrs]

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

예상 결과물

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

필요 기술 (우대)

Kotlin

예상 멘토

Artem Kobzar, JetBrains

Compose Multiplatform과 Node.js Skia 네이티브 바인딩 [Hard, 350 hrs]

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

예상 결과물

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

필요 기술 (우대)

Kotlin, Node.js, C++, or Rust

예상 멘토

Artem Kobzar, JetBrains

Compose Multiplatform 컴포넌트 갤러리 생성기 [Medium, 350 hrs]

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 개선 [Medium, 175 hrs]

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

예상 결과물

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

필요 기술 (우대)

Kotlin, Gradle, Java, Static Analysis

예상 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

Kotlin DSL 문서 샘플 테스트 프레임워크 [Easy or Medium, 90 hrs or 175 hrs]

Gradle을 포함한 많은 프로젝트에는 Kotlin DSL 샘플 및 코드 스니펫이 많이 있습니다(Gradle 문서에서 예시를 확인하세요). 여러 버전에서 이를 테스트하는 것은 스니펫이 간결성을 위해 종종 불완전한 코드를 나타내기 때문에 특정 어려움을 야기합니다. 저희는 GitHub Actions 및 Teamcity에서 단위 테스트 프레임워크(Kotest 또는 JUnit 5) 내에서 해당 샘플의 검증을 단순화하는 테스트 프레임워크를 구축하고자 합니다.

예상 결과물

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

필요 기술 (우대)

Kotlin, Testing Frameworks, CI/CD

예상 멘토

Oleg Nenashev, Gradle

Gradle 가이드라인

Gradle 빌드 서버 – Android 프로젝트 지원 [Medium or Hard, 175 hrs or 350 hrs]

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 벤치마크를 위한 메모리 사용량 프로파일링 구현 [Medium, 175 hrs]

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

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

예상 결과물

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

필요 기술 (우대)

Kotlin, Kotlin/Native, Benchmarking, Memory Profiling

예상 멘토

Abduqodiri Qurbonzoda, JetBrains Alexander Shabalin, JetBrains

kotlinx-benchmark에 Android 타겟 지원 [Medium, 175 hrs]

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

예상 결과물

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

필요 기술 (우대)

Kotlin, Android Development, Benchmarking

예상 멘토

Abduqodiri Qurbonzoda, JetBrains Rahul Ravikumar, Google

IntelliJ IDEA에서 kotlinx-benchmark 벤치마크의 클릭 투 런 기능 활성화 [Medium, 175 hrs]

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

예상 결과물

IntelliJ IDEA에 kotlinx-benchmark 벤치마크에 대한 클릭 투 런 기능 통합으로 사용자 경험 개선.

필요 기술 (우대)

Kotlin, IntelliJ IDEA Plugin Development, Benchmarking

예상 멘토

Abduqodiri Qurbonzoda, JetBrains