Kotlin과 함께하는 Google Summer of Code 2024
이 문서는 Kotlin 2024 Google Summer of Code에 대한 프로젝트 아이디어 목록과 기여자 가이드라인을 포함합니다.
Kotlin 리소스:
- Kotlin GitHub repository
- Kotlin Slack 및 #gsoc Slack 채널
궁금한 점이 있으면 [email protected]를 통해 문의하십시오.
Google Summer of Code (GSoC)를 위한 Kotlin 기여자 가이드라인
시작하기
-
Kotlin 언어에 익숙해지십시오.
- 공식 Kotlin 웹사이트는 시작하기에 좋은 곳입니다.
- 공식 문서를 읽고 언어에 대한 더 나은 이해를 얻으십시오.
- JetBrains Academy 또는 Android 팀의 Training options에서 Kotlin 강좌를 살펴보십시오.
- Kotlin X 또는 Kotlin Bluesky 계정을 팔로우하여 최신 뉴스 및 개발 소식을 받아보십시오.
- 튜토리얼, 팁 및 최신 업데이트는 Kotlin YouTube 채널을 확인하십시오.
-
Kotlin 오픈 소스 커뮤니티를 알아보십시오.
- 일반적인 Kotlin 기여 가이드라인을 살펴보십시오.
- 다른 개발자와 연결하고 질문에 대한 도움을 받으려면 Kotlin Slack 채널에 가입하십시오.
- 질문하고 GSoC 팀의 지원을 받으려면 #gsoc 채널에 가입하십시오.
지원 방법
- 프로젝트 아이디어를 확인하고 작업하고 싶은 아이디어를 선택하십시오.
- Kotlin에 익숙하지 않은 경우 Kotlin 웹사이트의 소개 정보를 읽으십시오.
- GSoC 기여자 가이드라인을 참조하십시오.
- GSoC 웹사이트를 통해 지원하십시오.
- 제안된 프로젝트와 관련된 작업 코드 샘플을 작성하는 것이 좋습니다. 특히 자랑스러운 코드 샘플을 보여줄 수도 있습니다.
- Kotlin에 관심이 있는 이유와 Kotlin 경험을 설명하십시오.
- 오픈 소스 프로젝트에 참여하는 경우 기여 이력을 참조하십시오.
- GitHub, Twitter 계정, 블로그 또는 기술 또는 과학 출판물 포트폴리오가 있는 경우 해당 항목도 참조하십시오.
- 시험 및 휴가와 같은 다른 약속으로 인해 GSoC 일정과의 충돌을 공개하십시오.
감사합니다! 여러분의 지원서를 기대하겠습니다!
프로젝트 아이디어
Kotlin-to-WebAssembly 컴파일러를 위한 점진적 컴파일 [Hard, 350 hrs]
점진적 컴파일은 전체 프로그램(클린 빌드 수행이라고도 함) 대신 변경된 파일만 다시 컴파일하여 컴파일 속도를 높이는 데 도움이 되는 기술입니다. Kotlin-to-Wasm 컴파일러는 현재 클린 빌드만 지원하지만 이 프로젝트 동안 점진적 컴파일도 지원하도록 개선할 예정입니다.
예상 결과
Kotlin-to-WebAssembly 컴파일러에서 점진적 컴파일 기능 구현, 더 빠른 개발 워크플로에 기여.
필요한 기술 (선호)
Kotlin
가능한 멘토
Artem Kobzar, JetBrains
Skia를 위한 Node.js 네이티브 바인딩을 사용하는 Compose Multiplatform [Hard, 350 hrs]
Compose Multiplatform은 Kotlin으로 구축된 UI를 여러 플랫폼에서 공유하기 위한 선언적 프레임워크입니다. 데스크톱 애플리케이션 렌더링에 대한 현재 접근 방식은 JVM을 플랫폼으로 사용하지만, 웹용 Compose Multiplatform을 사용하고 Skia의 네이티브 바인딩으로 브라우저 외부에서 애플리케이션을 실행하면 어떻게 될까요? 이것이 데스크톱 애플리케이션 성능과 메모리 소비를 향상시킬까요? 아니면 그 반대일까요? 이 프로젝트에서 알아볼 것입니다!
예상 결과
Skia 바인딩과 Compose Multiplatform 통합 및 데스크톱 애플리케이션에 대한 성능 영향 평가.
필요한 기술 (선호)
Kotlin, Node.js, C++ 또는 Rust
가능한 멘토
Artem Kobzar, JetBrains
Compose Multiplatform 컴포넌트 갤러리 생성기 [Medium, 350 hrs]
Compose Multiplatform은 Kotlin으로 구축된 UI를 여러 플랫폼에서 공유하기 위한 선언적 프레임워크입니다. 웹 개발의 React 시대 초기에 Storybook이 만들어졌고, 컴포넌트 상태를 설명하고 전체 UI 라이브러리 갤러리를 생성하는 Storybook의 제안된 접근 방식은 여전히 웹 개발에서 문서화에 대한 필수적인 접근 방식 중 하나입니다. Compose Multiplatform을 사용하여 웹 UI 요소 갤러리뿐만 아니라 모바일 및 데스크톱용 갤러리를 생성하는 데 사용할 수 있을까요? 이 프로젝트에서 시도해 봅시다.
예상 결과
Compose Multiplatform을 사용하여 웹, 모바일 및 데스크톱 플랫폼용 UI 컴포넌트 갤러리를 생성하는 도구 생성.
필요한 기술 (선호)
Kotlin, Jetpack Compose, UI/UX Design
가능한 멘토
Artem Kobzar, JetBrains
선언적 Gradle을 위한 Kotlin DSL 개선 [Medium, 175 hrs]
지난 11월, Gradle 팀은 새로운 선언적 Gradle 프로젝트를 발표하여 프로젝트에 더 높은 수준의 Kotlin DSL을 도입했습니다. GSoC 기여자를 초대하여 새로운 DSL의 개발자 경험을 개선하고, 특히 가장 일반적인 Kotlin 및 Java 프로젝트 통합을 지원하기 위해 Gradle 플러그인에서 확장성을 구현합니다. 정적 분석, Kotest와 같은 테스트 프레임워크 및 기타를 지원합니다.
예상 결과
Gradle용 Kotlin DSL에서 확장성 기능 구현 및 일반적인 프로젝트 통합에 대한 지원 개선.
필요한 기술 (선호)
Kotlin, Gradle, Java, Static Analysis
가능한 멘토
Oleg Nenashev, Gradle
Kotlin DSL 문서 샘플 테스트 프레임워크 [Easy or Medium, 90 hrs or 175 hrs]
Gradle을 포함한 많은 프로젝트에는 Kotlin DSL 샘플과 코드 스니펫이 많이 있습니다 (Gradle Docs에서 예시 참조). 여러 버전에 대해 테스트하는 것은 스니펫이 간결성을 위해 불완전한 코드를 나타내는 경우가 많기 때문에 특정 과제를 제시합니다. GitHub Actions 및 Teamcity에서 단위 테스트 프레임워크(Kotest 또는 JUnit 5) 내에서 해당 샘플의 검증을 단순화하는 테스트 프레임워크를 구축하고자 합니다.
예상 결과
Kotlin DSL 샘플용 기본 테스트 프레임워크 구현, 지속적인 테스트를 위해 GitHub Actions와 통합.
필요한 기술 (선호)
Kotlin, Testing Frameworks, CI/CD
가능한 멘토
Oleg Nenashev, 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
Kotlin/Native 벤치마크에 대한 메모리 사용량 프로파일링 구현 [Medium, 175 hrs]
오픈 소스 툴킷인 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 대상 지원 [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