Google Summer of Code с Kotlin
В этой статье содержится список идей проектов для Google Summer of Code с Kotlin, а также руководящие принципы для участников.
Руководящие принципы для участников Kotlin в Google Summer of Code (GSoC)
Начало работы
Изучите часто задаваемые вопросы (FAQ) GSoC и объявление о программе.
-
Ознакомьтесь с языком Kotlin:
Официальная веб-страница Kotlin — отличное место для начала.
Прочитайте официальную документацию, чтобы лучше понять язык.
Посмотрите курсы Kotlin на JetBrains Academy или обучающие материалы команды Android на сайте разработчиков Android.
Следите за Twitter-аккаунтом Kotlin, чтобы оставаться в курсе последних новостей и событий.
Посмотрите канал Kotlin на YouTube для получения руководств, советов и последних обновлений.
-
Познакомьтесь с сообществом Kotlin с открытым исходным кодом:
Изучите общие руководящие принципы для внесения изменений в Kotlin.
Присоединяйтесь к каналу Kotlin в Slack, чтобы связаться с другими разработчиками и получить помощь по любым вопросам.
Присоединяйтесь к каналу #gsoc, чтобы задавать вопросы и получить поддержку от команды GSoC.
Как подать заявку
Изучите идеи проектов и выберите тот, над которым вы хотели бы работать.
Если вы не знакомы с Kotlin, прочитайте вводную информацию на веб-сайте Kotlin.
Обратитесь к руководящим принципам для участников GSoC.
-
Подайте заявку на сайте GSoC.
Мы рекомендуем написать пример работающего кода, относящегося к предложенному проекту. Вы также можете показать любой пример кода, которым вы особенно гордитесь.
Расскажите, почему вас интересует Kotlin и ваш опыт работы с ним.
Если вы участвуете в проектах с открытым исходным кодом, укажите историю ваших изменений.
Если у вас есть GitHub, Twitter, блог или портфолио технических или научных публикаций, укажите их тоже.
Укажите любые конфликты с графиком GSoC из-за других обязательств, таких как экзамены и отпуска.
Спасибо! Мы с нетерпением ждем ваших заявок!
Идеи проектов
Kotlin Multiplatform protobufs [Сложно, 350 ч]
Описание
Добавить поддержку Kotlin/Common protos в protoc с Kotlin/Native (iOS) runtime и Objective-C interop.
Мотивация
Хотя protobufs имеют много платформных реализаций, нет способа использовать их в проектах Kotlin Multiplatform.
Ожидаемые результаты
Проектирование и разработка поддержки Kotlin Multiplatform Protobuf, завершающееся внесением вклада в:
Требуемые навыки (желательно)
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 Gradle DSL [Средне, 350 ч]
Описание
Проект направлен на создание конвертера Groovy в Kotlin с основным фокусом на скрипты Gradle. Мы начнем с простых случаев использования, таких как когда пользователь хочет вставить объявления зависимостей в стиле Groovy в скрипт Kotlin, и IDE автоматически их преобразует. Позже мы начнем поддерживать более сложные конструкции кода и преобразование полных файлов.
Мотивация
Kotlin Gradle DSL набирает популярность, и вскоре он станет предпочтительным выбором для создания проектов с Gradle. Однако многие документы и ресурсы о Gradle все еще относятся к Groovy, и вставка примеров Groovy в build.gradle.kts требует ручного редактирования. Кроме того, многие новые функции Gradle будут сначала на Kotlin, и, следовательно, пользователи будут переходить от Groovy DSL к Kotlin DSL. Автоматическое преобразование кода конфигурации сборки значительно облегчит этот переход, сэкономив много времени.
Ожидаемые результаты
Плагин для IntelliJ IDEA, который может преобразовывать код Groovy в Kotlin с основным фокусом на Gradle DSL.
Требуемые навыки (желательно)
Базовые знания Gradle
Базовые знания парсеров и того, как работают компиляторы в целом
Базовые знания Kotlin
Редактирование Eclipse Gradle KTS [Средне, 350 ч]
Описание
Улучшение опыта редактирования скриптов Gradle Kotlin (KTS) в Eclipse.
Мотивация
IntelliJ IDEA и Android Studio имеют отличную поддержку редактирования скриптов сборки KTS Gradle, но поддержка Eclipse недостаточна. Ctrl-Click для перехода к определению, автодополнение кода, выделение ошибок кода могут быть улучшены.
Ожидаемые результаты
Внести вклад в плагин Gradle для Eclipse, чтобы улучшить опыт разработчика при редактировании KTS.
Требуемые навыки (желательно)
Kotlin
Gradle
Платформа и плагины Eclipse
Улучшение поддержки передачи параметров в плагине Kotlin для IntelliJ IDEA [Средне, 350 ч]
Описание и мотивация
Плагин Kotlin предоставляет поддержку языка Kotlin в IntelliJ IDEA и Android Studio. В рамках этого проекта вы улучшите поддержку передачи параметров для плагина.
Предпочитать композицию наследованию - широко известный принцип. IntelliJ IDEA предоставляет отличную поддержку для написания кода, использующего наследование (автодополнение и быстрые исправления, которые предлагает IDE), но поддержка кода, использующего композицию вместо наследования, еще не реализована.
Основной проблемой работы с кодом, который в значительной степени использует композицию, является передача параметров. В частности:
IDE не предлагает завершить объявления параметров, которые можно передать как аргументы другим функциям, которые в настоящее время используют аргументы по умолчанию.
IDE не переименовывает цепочку передаваемых параметров.
IDE не предлагает никаких быстрых исправлений, которые заполняют все необходимые аргументы параметрами, которые могут быть переданы.
Один из примечательных примеров, где такая поддержка была бы очень ценна, — это Jetpack Compose. Современный набор инструментов Android для создания пользовательского интерфейса, Jetpack Compose в значительной степени использует композицию функций и передачу параметров. Работать с @Composable функциями быстро становится утомительным, потому что у них много параметров. Например, androidx.compose.material.TextField имеет 19 параметров.
Ожидаемые результаты
Улучшенные предложения по завершению параметров и аргументов в IntelliJ IDEA.
Реализованы быстрые исправления IDE, которые предлагают заполнить все необходимые аргументы параметрами с одинаковыми именами и типами.
Переименование в IDE переименовывает цепочку передаваемых параметров.
Все остальные улучшения IDE, касающиеся передачи параметров и функций с большим количеством параметров.
Требуемые навыки (желательно)
Знание Kotlin и Java
Способность перемещаться по большому кодовому основанию
Улучшение API и пользовательского опыта библиотеки kotlinx-benchmark [Легкий, 175 часов]
Описание
kotlinx-benchmark — это открытая библиотека для бенчмаркинга многоплатформенного кода, написанного на Kotlin. Она имеет базовый каркас, но ей не хватает функций, повышающих удобство использования, таких как: гибкая конфигурация бенчмарков (единицы времени, режимы), соответствие функциональности между бенчмаркингом JVM и Kotlin/Native, API командной строки и современная поддержка Gradle. Также отстают документация, интеграционные тесты и примеры.
Мотивация
Библиотека уже реализована, но иногда её сложно использовать правильно, что вызывает затруднения у некоторых пользователей. Улучшение пользовательского опыта библиотеки значительно поможет сообществу Kotlin.
Ожидаемые результаты
Библиотека имеет чёткую документацию с примерами использования.
API библиотеки прост и удобен в использовании.
Доступны варианты для проведения бенчмарков кода Kotlin/JVM для тестирования кода и на других платформах.
Требуемые навыки (желательно)
Kotlin
Внутренности Gradle
Параллельные стеки для Kotlin Coroutines в отладчике [Сложно, 350 часов]
Описание
Реализовать представление «Параллельные стеки» для Kotlin coroutines, чтобы улучшить опыт отладки корутин.
Мотивация
В настоящее время поддержка отладки coroutines в IntelliJ IDEA очень ограничена. Отладчик Kotlin имеет панель Coroutines, которая позволяет пользователю просматривать все coroutines и их состояния, но она не очень полезна при отладке приложения с большим количеством coroutines. JetBrains Rider имеет функцию «Параллельные стеки», которая позволяет пользователю просматривать потоки и их трассировки стека в виде графика, что может быть отличным способом проверки coroutines.
Ожидаемые результаты
Используя API отладчика Kotlin coroutines, разработать плагин для IntelliJ IDEA, который добавит представление «параллельных стеков» для coroutines в отладчик. Найти способы улучшения графического представления coroutines.
Требуемые навыки (желательно)
Kotlin
Kotlin coroutines
Разработка плагинов для IntelliJ IDEA
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/gsoc-2023.html