Теперь, когда Godot 4.0 вышел и мы все вернулись с GDC , мы наконец-то можем уделить время утверждению нашего плана управления выпусками для выпусков 4.x (начиная с 4.1). В нашем предыдущем сообщении в блоге по этому вопросу мы упомянули, что хотели бы перейти к более мелким, более регулярным выпускам.
Во время цикла разработки 3.x мы заметили две тревожные тенденции:
- Незадолго до запланированных выпусков участники работали над добавлением больших функций в эти выпуски, поскольку они ожидали, что следующий выпуск будет еще далеко. Это создало менталитет «сейчас или никогда», что привело к тому, что мы оптимистично объединили PR, которые не были готовы.
- Наши периоды «заморозки функций» оказались довольно долгими, так как у нас часто было много больших функций, быстро втиснутых к концу, и мы продолжали объединять рискованные изменения в течение периода заморозки функций.
Мы надеемся избежать обеих этих проблем с помощью нашего нового подхода к управлению выпусками. Мы хотим уменьшить стресс, который испытывают как участники, так и сопровождающие по мере приближения выпуска релизов. Мы также хотим быть более осторожными при слиянии больших изменений.
Чтобы решить эти проблемы, наш план состоит в том, чтобы сократить цикл выпуска и заранее указать четкие даты. В то же время мы хотим разделить релизы на две фазы: фаза слияния функций и фаза исправления ошибок. По завершении этапа исправления ошибок мы выпустим новую минорную версию и повторим процесс.
Фаза слияния функций
Текущий план состоит в том, что фаза слияния функций продлится примерно 3 месяца. Для версии 4.1 это будет означать, что она охватит март, апрель и май 2023 года. На этапе объединения функций мы с удовольствием объединим все запросы на включение, которые готовы к объединению и одобрены соответствующими командами. Сюда входят новые функции, обычные исправления ошибок и более рискованные исправления ошибок, которые мы не будем объединять на этапе исправления ошибок.
Наша цель — уменьшить давление, связанное с объединением больших изменений «как раз к следующему выпуску». Поскольку до следующего релиза всегда будет всего несколько месяцев, мы можем безопасно отложить слияние до следующего релиза, чтобы дать участникам время для правильной реализации и тестирования новых функций. Мы надеемся, что это позволит нам значительно сократить этапы исправления ошибок.
Для справки, у Godot 4.0 было 6-месячное «замораживание функций», когда мы пытались избежать слияния новых функций или особо опасных ошибок. Этот период был трудным для всех, и мы хотели бы избежать таких длительных периодов заморозки функций в будущем.
На этапе слияния функций мы также выберем безопасные исправления ошибок для текущей стабильной версии (например, 4.0.x, 4.1.x и т. д.).
Мы планируем выпускать регулярные сборки «dev snapshot» на этапе слияния функций, чтобы помочь пользователям в тестировании и участникам в разделении регрессии пополам. Мы призываем пользователей тестировать эти версии на непроизводственных проектах, чтобы заранее сообщать нам о новых функциях. Как и в случае с альфа-версией 4.0, мы ожидаем предоставлять эти версии разработчикам каждые 2 недели или около того, с увеличением частоты по мере приближения к этапу исправления ошибок.
Этап исправления ошибок
Текущий план состоит в том, чтобы фаза исправления ошибок длилась примерно 1 месяц. Что касается версии 4.1, мы планируем, что этап исправления ошибок будет охватывать июнь, а ожидаемый выпуск версии 4.1 — конец июня 2023 года.
Мы ожидаем, что этот период времени потребует настройки, так как мы видим, сколько выделенного времени на исправление ошибок нам нужно, чтобы стабилизироваться после 3 месяцев слияния функций.
В отличие от нашего рабочего процесса 3.x, мы обычно выпускали младшие версии примерно раз в год. Каждый выпуск имел период заморозки функций неопределенной продолжительности, но обычно несколько месяцев.
На этапе исправления ошибок мы планируем выпускать еженедельные бета-версии и, в конечном итоге, RC-сборки, как мы это делали в последней части разработки 4.0. Мы настоятельно рекомендуем тестировать бета-версии, поскольку мы хотим быстро выявлять и исправлять регрессии.
Годо 4.2
Если вышеперечисленное пойдет хорошо, и мы выпустим Godot 4.1 к концу июня, мы нацелимся на конец октября для выпуска 4.2. Естественно, если выпуск 4.1 будет отложен, наша оценка для 4.2 будет отложена, а также мы по-прежнему будем следить за тем, чтобы мы сохраняли наши 3-месячные этапы слияния функций и 1-месячный этап исправления ошибок.
Поскольку это новый процесс, не удивляйтесь, если мы внесем коррективы в план по мере продвижения. Мы все еще пытаемся выяснить, какой процесс лучше всего работает с нашими участниками и нашими пользователями. В связи с этим, мы ценим обратную связь, поэтому, пожалуйста, не забудьте поделиться своими проблемами, чтобы мы могли сделать этот процесс выпуска доступным для всех.
Долгосрочная поддержка стабильных выпусков
Если мы будем следовать приведенному выше графику, мы будем выпускать около 3 второстепенных релизов в год. Мы ожидаем, что быстро станет сложно выбирать безопасные исправления ошибок для всех предыдущих второстепенных выпусков. В цикле Godot 3.x мы ограничивали выбор последним второстепенным выпуском и обновляли старые выпуски только тогда, когда это необходимо для исправления критических проблем.
Мы намерены свести к минимуму критические изменения в цикле выпуска 4.x, в идеале будет мало причин оставаться на более старых второстепенных выпусках. Тем не менее, мы по-прежнему хотим, чтобы пользователи старых выпусков могли пользоваться совместимыми исправлениями ошибок как можно дольше.
Сейчас мы не уверены, сколько версий мы можем поддерживать в тандеме. На данный момент мы стремимся выпускать версии 4.0.x по мере работы над версией 4.1. Как только выйдет версия 4.1 и наша разработка сместится на версию 4.2, мы, скорее всего, продолжим выпускать версии 4.0.x и 4.1.x с безопасными исправлениями ошибок. После выпуска 4.2 мы будем переоценивать, на сколько версий мы можем вернуться с выпусками с исправлениями ошибок. На этом разработка 4.0.x может остановиться.
Как всегда, мы приветствуем отзывы сообщества и будем внимательно следить за тем, сколько проектов решат остаться на 4.0.x. Если многие проекты решат остаться на 4.0.x, это повлияет на то, как долго мы будем продолжать выпускать версии 4.0.x.
Годо 3.6
Мы только что выпустили первую бета-версию Godot 3.6 и планируем выпустить стабильную версию в ближайшие несколько месяцев. Поскольку основное внимание участников уделяется Godot 4 и более поздним версиям, процесс разработки Godot 3 становится все медленнее. Таким образом, у нас нет точной даты выпуска, но мы продолжим объединять запросы на включение в ветку 3.x и выпустим 3.6, когда она будет готова.
Как только мы выпустим 3.6, мы не собираемся выпускать еще один второстепенный релиз в серии 3.x. Мы будем продолжать выпускать обновления для исправления ошибок 3.6.x до тех пор, пока мы будем получать дополнения к 3.6.
Годо 5.0?
Мы еще не начали планировать Godot 5.0. Мы надеемся продолжать разработку Godot 4.x в течение многих лет. Вместо того, чтобы планировать критические изменения, мы будем усердно работать над добавлением новых функций, не нарушая совместимости. Мы верим, что фундамент, который мы заложили в 4.0, сделает это гораздо более терпимым, чем раньше.