Google Summer of Code с Kotlin 2023
В этой статье содержится список идей для проектов для Google Summer of Code с Kotlin 2023.
Идеи для проектов
Protobuf для Kotlin Multiplatform [сложный, 350 ч]
Описание
Добавить в protoc поддержку протоколов Kotlin/Common с Kotlin/Native (iOS) runtime и взаимодействием с Objective-C.
Мотивация
Несмотря на то, что для protobuf существует множество платформенных реализаций, использовать их в проектах Kotlin Multiplatform невозможно.
Ожидаемые результаты
Спроектировать и реализовать поддержку Protobuf в Kotlin Multiplatform и внести свой вклад в следующие проекты:
Необходимые навыки (желательно)
Kotlin
Objective-C
C++
Сообщения об ошибках компилятора Kotlin [сложный, 350 ч]
Описание
Улучшить сообщения об ошибках компилятора K2 для Kotlin: сделать их более информативными и подробными (как в Rust).
Мотивация
Сообщения об ошибках компилятора Rust часто считают самыми полезными среди сообщений всех компиляторов. Компилятор Kotlin K2 предоставляет отличную основу для улучшения сообщений об ошибках в Kotlin, но его потенциал используется не полностью.
Ожидаемые результаты
Используя StackOverflow и другие источники данных, выявить распространённые ошибки компилятора, устранение которых принесёт пользователям значительную пользу. Внести изменения в компилятор, чтобы улучшить сообщения об этих ошибках.
Необходимые навыки (желательно)
Kotlin
Архитектура компиляторов
Библиотеки Kotlin Multiplatform [лёгкий или средний, 175 или 350 ч]
Описание
Создать и опубликовать в Maven Central востребованные библиотеки Kotlin Multiplatform. Например, библиотеки для сжатия данных и криптографии.
Мотивация
Kotlin Multiplatform — относительно новая технология, для которой нужны дополнительные библиотеки, работающие независимо от платформы (Kotlin/Common) и/или имеющие платформенные реализации (expect/actual).
Ожидаемые результаты
Спроектировать и выпустить как минимум одну библиотеку Kotlin Multiplatform, уделив больше внимания JVM/Android и Kotlin/Native (iOS), чем другим целевым платформам (Kotlin/JS).
Необходимые навыки (желательно)
Kotlin
Objective-C
Конвертер Groovy в Kotlin DSL для Gradle [средний, 350 ч]
Описание
Цель проекта — создать конвертер Groovy в Kotlin с основным упором на скрипты Gradle. Начнём с простых сценариев, например с автоматического преобразования IDE объявлений зависимостей в стиле Groovy, вставленных пользователем в скрипт Kotlin. Позже добавим поддержку более сложных конструкций кода и преобразования целых файлов.
Мотивация
Kotlin DSL для Gradle становится всё популярнее и вскоре может стать вариантом по умолчанию для сборки проектов с помощью Gradle. Однако во многих документах и ресурсах о Gradle по-прежнему используется Groovy, а вставка примеров Groovy в build.gradle.kts требует ручного редактирования. Кроме того, многие новые возможности Gradle сначала будут появляться в Kotlin, поэтому пользователи будут переходить с Groovy DSL на Kotlin DSL. Автоматическое преобразование кода конфигурации сборки значительно упростит такой переход и сэкономит много времени.
Ожидаемые результаты
Плагин для IntelliJ IDEA, преобразующий код Groovy в Kotlin с основным упором на DSL для Gradle.
Необходимые навыки (желательно)
Базовые знания Gradle
Базовые знания парсеров и принципов работы компиляторов
Базовые знания Kotlin
Редактирование Gradle KTS в Eclipse [средний, 350 ч]
Описание
Улучшить процесс редактирования скриптов Gradle на Kotlin (KTS) в Eclipse.
Мотивация
IntelliJ IDEA и Android Studio отлично поддерживают редактирование скриптов сборки Gradle на KTS, но поддержка в Eclipse оставляет желать лучшего. Можно улучшить переход к определению по Ctrl+щелчку, автодополнение кода и подсветку ошибок.
Ожидаемые результаты
Внести изменения в плагин Gradle для Eclipse, чтобы упростить редактирование KTS.
Необходимые навыки (желательно)
Kotlin
Gradle
Платформа Eclipse и плагины
Улучшение поддержки передачи параметров в плагине Kotlin для IntelliJ IDEA [средний, 350 ч]
Описание и мотивация
Плагин Kotlin обеспечивает поддержку языка Kotlin в IntelliJ IDEA и Android Studio. В рамках этого проекта вы улучшите поддержку передачи параметров в плагине.
Принцип «предпочитать композицию наследованию» широко известен. IntelliJ IDEA отлично поддерживает написание кода с наследованием (IDE предлагает автодополнение и быстрые исправления), но поддержка кода, использующего композицию вместо наследования, ещё не реализована.
Основная проблема при работе с кодом, активно использующим композицию, — передача параметров. В частности:
IDE не предлагает автодополнение объявлений параметров, которые можно передать в качестве аргументов другим функциям, сейчас использующим значения параметров по умолчанию.
IDE не переименовывает цепочку передаваемых параметров.
IDE не предлагает быстрых исправлений для заполнения всех обязательных аргументов параметрами, которые можно передать.
Один из примеров, где такая поддержка была бы особенно полезна, — Jetpack Compose. Jetpack Compose, современный набор инструментов Android для создания пользовательского интерфейса, активно использует композицию функций и передачу параметров. Работать с функциями @Composable быстро становится утомительно, потому что у них много параметров. Например, у androidx.compose.material.TextField 19 параметров.
Ожидаемые результаты
Улучшенные подсказки автодополнения параметров и аргументов в IntelliJ IDEA.
Реализованные быстрые исправления IDE, предлагающие заполнить все обязательные аргументы параметрами с совпадающими именами и типами.
Рефакторинг «Переименовать» переименовывает цепочку передаваемых параметров.
Все прочие улучшения IDE, связанные с передачей параметров и функциями с большим количеством параметров.
Необходимые навыки (желательно)
Знание Kotlin и Java
Умение ориентироваться в большой кодовой базе
Улучшение API библиотеки kotlinx-benchmark и удобства её использования [лёгкий, 175 ч]
Описание
kotlinx-benchmark — это библиотека с открытым исходным кодом для бенчмаркинга мультиплатформенного кода, написанного на Kotlin. У неё есть базовый каркас, но отсутствуют полезные для повседневной работы функции: детальная настройка бенчмарков (например, единицы времени и режимы), паритет возможностей бенчмаркинга JVM и Kotlin/Native, интерфейс командной строки и современная поддержка Gradle. Документация, интеграционные тесты и примеры также нуждаются в обновлении.
Мотивация
Библиотека уже реализована, но иногда её сложно правильно использовать, и она вводит некоторых пользователей в заблуждение. Улучшение удобства использования библиотеки принесёт большую пользу сообществу Kotlin.
Ожидаемые результаты
У библиотеки есть понятная документация с примерами использования.
API библиотеки прост и удобен в использовании.
Возможности для бенчмаркинга кода Kotlin/JVM доступны также при тестировании кода на других платформах.
Необходимые навыки (желательно)
Kotlin
Внутреннее устройство Gradle
Параллельные стеки для корутин Kotlin в отладчике [сложный, 350 ч]
Описание
Реализовать представление параллельных стеков для корутин Kotlin, чтобы улучшить процесс отладки корутин.
Мотивация
В настоящее время возможности отладки корутин в IntelliJ IDEA очень ограничены. В отладчике Kotlin есть панель корутин, которая позволяет просматривать все корутины и их состояния, но она не очень полезна при отладке приложения с большим количеством корутин. В JetBrains Rider есть функция параллельных стеков, позволяющая изучать потоки и их трассировки стека в виде графа. Такой способ может быть очень удобен для изучения корутин.
Ожидаемые результаты
Используя API отладчика корутин Kotlin, разработать плагин для IntelliJ IDEA, который добавит в отладчик представление параллельных стеков для корутин. Найти способы улучшить графическое представление корутин.
Необходимые навыки (желательно)
Kotlin
Корутины Kotlin
Разработка плагинов для IntelliJ IDEA
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/gsoc-2023.html