Kotlin과 함께하는 Google Summer of Code 2024
Kotlin과 함께하는 Google Summer of Code 2024
Kotlin과 함께하는 Google Summer of Code(GSoC) 2024의 프로젝트 아이디어 목록과 기여자 가이드라인을 소개할게요. 지원 전에 가이드라인을 읽고, 관심 있는 프로젝트를 골라 제안서를 준비해보세요.
본문
이 문서에는 Kotlin과 함께하는 Google Summer of Code 2024의 프로젝트 아이디어 목록과 기여자 가이드라인이 담겨 있어요.
Google Summer of Code(GSoC)를 위한 Kotlin 기여자 가이드라인
시작하기
- GSoC FAQ와 프로그램 공지를 확인해보세요.
- Kotlin 언어에 익숙해지세요:공식 Kotlin 웹사이트가 좋은 시작점이에요.공식 문서를 읽어 언어를 더 잘 이해해보세요.JetBrains Academy의 Kotlin 코스나 Android 팀의 Training 옵션을 살펴보세요.Kotlin X 또는 Kotlin Bluesky 계정을 팔로우해 최신 뉴스와 개발 소식을 받아보세요.튜토리얼, 팁, 최신 업데이트를 위해 Kotlin YouTube 채널을 확인해보세요.
- Kotlin 오픈소스 커뮤니티를 알아가세요:일반적인 Kotlin 기여 가이드라인을 살펴보세요.Kotlin Slack 채널에 가입해 다른 개발자들과 연결하고 궁금한 점에 도움을 받으세요.#gsoc 채널에 가입해 질문하고 GSoC 팀의 지원을 받으세요.
지원하는 방법
- 프로젝트 아이디어를 확인하고 작업하고 싶은 것을 선택하세요.
- Kotlin에 익숙하지 않다면 Kotlin 웹사이트의 입문 정보를 읽어보세요.
- GSoC 기여자 가이드라인을 참고하세요.
- GSoC 웹사이트를 통해 지원하세요.제안된 프로젝트와 관련된 동작하는 코드 샘플을 작성하는 것을 권장해요. 특히 자랑스러운 코드 샘플도 보여줄 수 있어요.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을 Web용으로 사용하고 Skia의 네이티브 바인딩으로 브라우저 밖에서 애플리케이션을 실행해보면 어떨까요? 데스크톱 애플리케이션의 성능과 메모리 소비가 개선될까요? 아니면 반대가 될까요? 이 프로젝트에서 알아볼게요!
기대 결과
Skia 바인딩을 Compose Multiplatform과 통합하고 데스크톱 애플리케이션의 성능 영향 평가.
요구 기술(선호)
Kotlin, Node.js, C++, or 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 팀이 새로운 Declarative Gradle 프로젝트를 발표하며 프로젝트에 더 높은 수준의 Kotlin DSL을 도입했어요. 저희는 GSoC 기여자들이 새 DSL의 개발자 경험 개선 작업에 함께해주길 바라요. 특히 Gradle 플러그인의 확장성(extensibility)을 구현해 가장 흔한 Kotlin과 Java 프로젝트 통합(정적 분석, 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) 안에서 그 샘플들의 검증을 단순화하는 테스트 프레임워크를 구축하고 싶어요.
기대 결과
지속적 테스트를 위해 GitHub Actions와 통합된 Kotlin DSL 샘플용 기본 테스트 프레임워크 구현.
요구 기술(선호)
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 형식에 맞춘 리포트를 생성해 플랫폼 전반에서 데이터 제시의 일관성을 보장하는 거예요. 또한 이 프로젝트에는 다른 라이브러리 기능의 보고 형식 차이를 식별하고 수정하는 작업도 포함돼, 종합적인 크로스 플랫폼 분석을 위한 벤치마킹 출력을 표준화해요.
기대 결과
kotlinx-benchmark에 Kotlin/Native용 메모리 사용량 프로파일링 구현과 표준화된 벤치마킹 출력.
요구 기술(선호)
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