Google Summer of Code с Kotlin 2024
В этой статье содержится список идей для проектов Google Summer of Code с Kotlin 2024 и рекомендации для участников
Рекомендации для участников Kotlin в Google Summer of Code (GSoC)
Начало работы
Ознакомьтесь с разделом часто задаваемых вопросов о GSoC и описанием программы.
-
Познакомьтесь с языком Kotlin:
Официальный сайт Kotlin — отличное место для начала.
Прочитайте официальную документацию, чтобы лучше понять язык.
Посмотрите курсы по Kotlin в JetBrains Academy или варианты обучения от команды Android.
Подпишитесь на аккаунты Kotlin в X или Kotlin в Bluesky, чтобы быть в курсе последних новостей и событий.
Загляните на YouTube-канал Kotlin, где вы найдете обучающие материалы, советы и последние новости.
-
Познакомьтесь с сообществом Kotlin с открытым исходным кодом:
Изучите общие рекомендации по участию в разработке Kotlin.
Присоединитесь к каналу Kotlin в Slack, чтобы общаться с другими разработчиками и получать ответы на свои вопросы.
Присоединитесь к каналу #gsoc, чтобы задавать вопросы и получать помощь от команды GSoC.
Как подать заявку
Ознакомьтесь с идеями для проектов и выберите ту, над которой хотели бы работать.
Если вы не знакомы с Kotlin, прочитайте вводную информацию на сайте Kotlin.
Ознакомьтесь с рекомендациями для участников GSoC.
-
Подайте заявку через сайт GSoC.
Мы рекомендуем написать рабочий пример кода, связанный с предлагаемым проектом. Также вы можете показать нам любой пример кода, которым особенно гордитесь.
Расскажите, почему вас интересует Kotlin, и опишите свой опыт работы с ним.
Если вы участвуете в проектах с открытым исходным кодом, укажите свой опыт работы над ними.
Если у вас есть аккаунт на GitHub, аккаунт в Twitter, блог или портфолио технических или научных публикаций, укажите и их.
Сообщите о любых обстоятельствах, которые могут помешать вам соблюдать график GSoC, например об экзаменах или отпуске.
Спасибо! Мы с нетерпением ждем ваших заявок!
Идеи для проектов
Инкрементальная компиляция для компилятора Kotlin в WebAssembly [Сложный, 350 часов]
Инкрементальная компиляция — это метод, позволяющий ускорить компиляцию за счет повторной компиляции только измененных файлов, а не всей программы целиком (то есть выполнения полной сборки). Сейчас компилятор Kotlin в Wasm поддерживает только полные сборки, но в рамках этого проекта мы добавим поддержку инкрементальной компиляции.
Ожидаемые результаты
Реализация функции инкрементальной компиляции в компиляторе Kotlin в WebAssembly, которая ускорит рабочий процесс разработки.
Необходимые навыки (желательно)
Kotlin
Возможный наставник
Артём Кобзарь, JetBrains
Compose Multiplatform с нативными привязками Node.js для Skia [Сложный, 350 часов]
Compose Multiplatform — это декларативный фреймворк для создания пользовательских интерфейсов на Kotlin, совместно используемых на разных платформах. Сейчас для отрисовки настольных приложений используется JVM. Но что, если применить Compose Multiplatform для веба и попробовать запустить приложение за пределами браузера, используя нативные привязки Skia? Повысит ли это производительность настольных приложений и снизит ли потребление памяти? Или, наоборот, ухудшит показатели? В рамках этого проекта мы это выясним!
Ожидаемые результаты
Интеграция привязок Skia с Compose Multiplatform и оценка влияния на производительность настольных приложений.
Необходимые навыки (желательно)
Kotlin, Node.js, C++ или Rust
Возможный наставник
Артём Кобзарь, JetBrains
Генератор галерей компонентов Compose Multiplatform [Средний, 350 часов]
Compose Multiplatform — это декларативный фреймворк для создания пользовательских интерфейсов на Kotlin, совместно используемых на разных платформах. В начале эпохи React в веб-разработке был создан Storybook. Предложенный в Storybook подход, позволяющий описывать состояния компонентов и генерировать галерею всей библиотеки пользовательского интерфейса, по-прежнему остается одним из основных способов документирования в веб-разработке. Можно ли сделать то же самое с Compose Multiplatform и сгенерировать галерею веб-компонентов, а также галереи для мобильных и настольных платформ? Попробуем реализовать это в рамках проекта.
Ожидаемые результаты
Создание инструмента для генерации галерей компонентов пользовательского интерфейса для веб-, мобильных и настольных платформ с помощью Compose Multiplatform.
Необходимые навыки (желательно)
Kotlin, Jetpack Compose, проектирование UI/UX
Возможный наставник
Артём Кобзарь, JetBrains
Улучшения Kotlin DSL для декларативного Gradle [Средний, 175 часов]
В ноябре прошлого года команда Gradle объявила о новом проекте Declarative Gradle, в рамках которого в проект был внедрен более высокоуровневый Kotlin DSL. Мы приглашаем участников GSoC присоединиться к нам и поработать над улучшением взаимодействия разработчиков с новым DSL, в частности, реализовать в плагинах Gradle возможность расширения для поддержки наиболее распространенных интеграций проектов на Kotlin и Java: статического анализа, тестовых фреймворков, таких как Kotest, и других.
Ожидаемые результаты
Реализация возможностей расширения Kotlin DSL для Gradle и улучшение поддержки распространенных интеграций проектов.
Необходимые навыки (желательно)
Kotlin, Gradle, Java, статический анализ
Возможный наставник
Олег Ненашев, Gradle
Тестовый фреймворк для примеров документации Kotlin DSL [Легкий или средний, 90 или 175 часов]
Во многих проектах, в том числе в Gradle, используется множество примеров Kotlin DSL и фрагментов кода (примеры можно посмотреть в документации Gradle). Их проверка на нескольких версиях сопряжена с определенными трудностями, поскольку ради краткости фрагменты часто содержат неполный код. Мы хотели бы создать тестовый фреймворк, который упростит проверку этих примеров с помощью фреймворка модульного тестирования (Kotest или JUnit 5) в GitHub Actions и TeamCity.
Ожидаемые результаты
Реализация базового тестового фреймворка для примеров Kotlin DSL с интеграцией в GitHub Actions для непрерывного тестирования.
Необходимые навыки (желательно)
Kotlin, тестовые фреймворки, CI/CD
Возможный наставник
Олег Ненашев, Gradle
Gradle Build Server — поддержка проектов Android [Средний или сложный, 175 или 350 часов]
Kotlin и Gradle — стандартный выбор для сборки проектов Android. В ноябре 2023 года команда Microsoft объявила о проекте Gradle Build Server — реализации протокола Build Server Protocol (BSP) для Gradle. Было бы здорово добавить в него полную поддержку сборок Android. В рамках проектов меньшего масштаба можно реализовать автоматическое обнаружение задач Gradle и их отмену в Gradle Build Server.
Ожидаемые результаты
Реализация поддержки проектов Android в Gradle Build Server, включая автоматическое обнаружение задач и их отмену.
Необходимые навыки (желательно)
Kotlin, Gradle, разработка для Android, Visual Studio Code
Возможный наставник
Олег Ненашев, Gradle
Профилирование использования памяти в тестах производительности Kotlin/Native [Средний, 175 часов]
Библиотека kotlinx-benchmark — это набор инструментов с открытым исходным кодом для тестирования производительности кода Kotlin на различных платформах. Сейчас она поддерживает профилирование сборщика мусора для JVM и показывает объем выделенной памяти для каждого тестового метода. Цель проекта — добавить аналогичные возможности профилирования для Kotlin/Native и приблизить возможности тестирования производительности на разных платформах к единому стандарту.
Участник будет тесно сотрудничать с командой Kotlin/Native, чтобы создать API для доступа к данным об аллокациях из менеджера памяти Kotlin/Native. Цель — формировать отчеты в формате, соответствующем отчетам JVM, чтобы обеспечить единообразное представление данных на разных платформах. Кроме того, проект предусматривает выявление и устранение несоответствий в форматах отчетов для других возможностей библиотеки, чтобы стандартизировать результаты тестирования производительности и обеспечить всесторонний кроссплатформенный анализ.
Ожидаемые результаты
Реализация профилирования использования памяти в kotlinx-benchmark для Kotlin/Native и стандартизация результатов тестирования производительности.
Необходимые навыки (желательно)
Kotlin, Kotlin/Native, тестирование производительности, профилирование памяти
Возможный наставник
Абдукодири Курбонзода, JetBrains
Александр Шабалин, JetBrains
Поддержка платформы Android в kotlinx-benchmark [Средний, 175 часов]
Библиотека kotlinx-benchmark — это инструмент с открытым исходным кодом для тестирования производительности кода Kotlin на разных платформах, включая JVM, JS, WasmJs и Native. Несмотря на широкую совместимость, библиотека пока не поддерживает тестирование производительности на Android. Цель проекта — устранить этот пробел. Планируется использовать существующую библиотеку для Android, например androidx.benchmark, для реализации этой функциональности. Важная часть проекта — обеспечить поддержку Android всех функций, доступных сейчас на других платформах, сохранив таким образом мультиплатформенные возможности библиотеки.
Ожидаемые результаты
Интеграция поддержки тестирования производительности на платформе Android в kotlinx-benchmark, обеспечивающая паритет функций с другими платформами.
Необходимые навыки (желательно)
Kotlin, разработка для Android, тестирование производительности
Возможный наставник
Абдукодири Курбонзода, JetBrains
Rahul Ravikumar, Google
Запуск тестов производительности kotlinx-benchmark одним щелчком в IntelliJ IDEA [Средний, 175 часов]
kotlinx-benchmark — это библиотека с открытым исходным кодом для тестирования производительности мультиплатформенного кода на Kotlin. В нее входит плагин Gradle, который добавляет задачи для запуска тестов производительности. Однако для выполнения этих задач нужно открыть панель Gradle в IDE или воспользоваться терминалом. Кроме того, для запуска отдельного теста требуется выполнить дополнительные действия, что усложняет процесс. Чтобы устранить это неудобство и упростить работу, цель проекта — дать пользователям возможность запускать отдельный тест производительности или весь набор прямо из интерфейса IntelliJ IDEA, как это можно делать с модульными тестами. Для этого может потребоваться сотрудничество с командой IntelliJ IDEA и/или внесение изменений непосредственно в проект IntelliJ.
Ожидаемые результаты
Интеграция возможности запуска тестов производительности kotlinx-benchmark одним щелчком в IntelliJ IDEA и улучшение взаимодействия с пользователем.
Необходимые навыки (желательно)
Kotlin, разработка плагинов для IntelliJ IDEA, тестирование производительности
Возможный наставник
Абдукодири Курбонзода, JetBrains
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/gsoc-2024.html