Как помочь с релизом Yii3

Фреймворк Yii в свое время полюбился многим: простой, быстрый, прозрачный, он позволяет и быстро создавать MVP, и развивать архитектурно сложные программные комплексы.

Однако, время идет, и Yii2 перестает отвечать требованиям современного разработчика. На смену ему приходит Yii3, уже давно со всех сторон слышен один вопрос: "Когда релиз?". Релиз будет :) И вы можете ускорить его приход. А еще - получить некоторое преимущество в глазах HR'ов и тимлидов при найме и просьбе повысить зарплату.

Про возможность помочь финансово, чтобы core-разработчики могли оплатить себе больше времени работы над нашим любимым фреймворком, все уже знают. Но если вдруг нет, вот ссылка: https://opencollective.com/yiisoft. Помните: 100 рублей - тоже вклад. И огромное спасибо всем, кто уже помог нам копеечкой.

Как помочь фреймворку кодом?

Нерешенных задач еще огромное количество, а нас, core-разработчиков, мало. Помочь их решить может каждый из вас, потому что задачи есть любого уровня сложности, от "исправить название функции" до сложных архитектурных решений. Мы будем искренне благодарны за любую помощь, "слишком мало" ее не бывает.

Итак, с чего же начать?

  1. Выбрать тикет по душе. Можно воспользоваться одной из ссылок ниже:

    • https://github.com/search?q=org:yiisoft is:issue is:open label:"good first issue" - воспользуйтесь этой, если совсем не уверены в своих силах. Лейблом "good first issue" помечены самые простые тикеты, на уровне переименования функций, изменения текста и переноса класса из одной папки в другую. Отличный вариант, чтобы впервые попробовать законтрибьютить что-то на гитхабе.
    • https://github.com/search?q=org:yiisoft is:issue is:open label:"status:ready for adoption" - это список всех открытых и готовых к реализации тикетов. Можно брать отсюда любой по своему выбору.

    Минус этих ссылок в том, что гитхаб не позволяет фильтровать тикеты по топику репозитория, поэтому вам будут попадаться как тикеты yii3, так и yii2. И даже, возможно, yii1. Поэтому если вам критично контрибьютить именно в yii3, то выбирайте репозитории с топиком yii3. Их имя обычно либо начинается с префикса yii- (например, yii-event), либо вообще его не содержит (например, event-dispatcher).

    Хорошо, вот поиск. Но тикетов много, какой выбрать?

    Начинать лучше с чего-то знакомого. Если вы раньше работали с yii2, то почти наверняка знакомы с виджетами, формами, валидатором, ассетами, алиасами и другими концепциями. Посмотрите, есть ли открытые тикеты в аналогичных пакетах. А может быть, вам ближе построение API (можно посмотреть CORS) или распределенная обработка данных (пакет yii-queue)? Всегда приятнее работать с тем, чем сам потом будешь пользоваться.

  2. Убедитесь, что тикет никем не занят (пустое поле Assignee и в обсуждении тикета никто не написал, что займется им) и займите его сами. Для этого достаточно написать, что вы собираетесь над ним работать. Например, так: "Going to fix this" или "I'll take it". И если в какой-то момент перестали им заниматься (например, нагрузка на работе выросла, и стало понятно, что в ближайшую неделю или месяц вы к тикету не вернетесь) - снова напишите об этом, чтобы его мог взять другой человек (вот вариант, если у вас плохо с английским: "Not working on this ticket anymore, feel free to take it.").

  3. Теперь нужно получить код, над которым вы будете работать. Для этого надо зайти в нужный репозиторий YiiSoft, форкнуть его к себе (кнопка Fork в правом верхнем углу), и уже свой репозиторий клонировать к себе на компьютер. Подробнее о том, как работать с форками, включая создание Pull Request'ов (или PR в простонародии) можно прочесть в документации гитхаба.

  4. Реализовать задачу, описанную в тикете:

    • Сделать изменения в коде.
    • Описать их в двух словах в changelog.md (если пакет уже получил версию хотя бы 1.0.0)
    • Если в репозитории есть тесты (а это так для всех пакетов, кроме совсем "сырых"), в них надо отразить произведенные изменения.
    • Не забыть закоммитить их в отдельную ветку (можно и в master/main, но будет неудобно работать с другими тикетами того же репозитория).
    • Создать Pull Request. Если на момент создания PR или после очередного пуша в ветку с уже созданным PR будут замечания по стилистике кода (code style) автоматика в лице Style CI сделает коммит от имени @samdark.
  5. В уже релизнутых пакетах Psalm настроен на level 1, тестами, написанными с помощью phpunit, покрыто ~100% кода, а за качеством этих тестов следит Infection, красоту же кода проверяет и поддерживает StyleCi. В еще не релизнутых пакетах набор может быть скромнее, но к релизу мы все пакеты дотягиваем до идеала. Этот набор инструментов помогает нам делать действительно качественные релизы. Но если вам по какой-то причине сложно соблюсти все ограничения, накладываемые ими, - не проблема, просто напишите об этом в PR и попросите помощи.

  6. После этого core-команда yii3 проведет code review, и если замечаний не будет, то смержит ваш PR в основную ветку, либо же оставит вопросы/замечания, которые потребуют какой-то реакции с вашей стороны: ответить на вопрос, реализовать в коде сделанное предложение и т.п.

  7. Профит! Мы всегда очень благодарны за любую помощь, будь то PR, новый тикет или финансы. Спасибо, что вы с нами, пользуетесь плодами наших общих трудов и помогаете фреймворку развиваться и двигаться вперед.

И, конечно же, всегда можно задать нам любые вопросы по контрибьютингу, тикетам, фреймворку и т.п. в чате @yii3ru.

(c) Виктор Бабанов, core-команда Yii3