Блог changeloop

Релиз-ноты на практике

Две вещи, о которых мы много думаем: как писать релиз-ноты, которые кто-то прочтёт, и как перестать вести changelog вручную. Без рассылки и без регистрации. Только тексты.

  • Release notes об исправлении багов: как писать записи

    Release notes об исправлении багов работают, когда запись называет симптом, охват и действие. Примеры до и после, правила для безопасности и данных.

    Релиз-ноты на практике6 мин чтения

  • Как попросить обратную связь у клиентов в софтовом продукте

    Задайте один конкретный вопрос сразу после действия пользователя, прямо там, где он работает. Готовые формулировки для каждого момента и плохие вопросы.

    Обратная связь6 мин чтения

  • Примеры product roadmap: шесть форматов и их слабые места

    Шесть примеров product roadmap с реалистичными пунктами: Now/Next/Later, квартальный, тематический, по результатам, публичный и релизный. Кому они нужны.

    Обратная связь6 мин чтения

  • Процесс управления релизами для частых выпусков

    Процесс управления релизами для софтверных команд в семь шагов, с владельцем и критерием выхода для каждого, плюс метрики DORA и ещё один показатель.

    Инженерия6 мин чтения

  • Примеры release notes для каждого вида изменений

    Примеры release notes для новой функции, исправления, breaking change, уязвимости, депрекации, заметки в сторе и внутренней заметки, с разбором слов.

    Релиз-ноты на практике6 мин чтения

  • Версионирование API Stripe: как оно работает и что перенять

    Версионирование API Stripe привязывает аккаунт к версии с датой и даёт переопределить её в запросе. Как это работает, чего стоит и что взять малому API.

    Изменения API6 мин чтения

  • Кто пишет changelog, а кто должен

    Кто пишет changelog? Автор PR знает, что изменилось, а PM знает, почему это важно. Ни один из них в одиночку не напишет запись, полезную клиентам.

    Инженерия5 мин чтения

  • Экстренные Release Notes: Под Давлением Реального Времени

    Релизы, вызванные инцидентом, требуют заметок, написанных за минуты, а не дни, и обычный процесс написания предполагает время, которого у вас нет.

    Релиз-ноты на практике4 мин чтения

  • Breaking changes в Protobuf: что выживает на проводе

    Breaking changes в Protobuf происходят на проводе, а не в URL. Одни правки полей gRPC безопасны, другие молча ломают клиентов, а в диффе неотличимы.

    Изменения API5 мин чтения

  • Форматы файлов changelog: JSON, YAML или просто Markdown

    Формат файла changelog решает, может ли он питать страницу и виджет сразу, или его читает только человек. Markdown, JSON и YAML стоят по-разному.

    Инженерия5 мин чтения

  • Дублирующиеся запросы: объединение без потери голоса

    Группировка дублирующихся запросов на функции защищает счёт. Небрежное объединение теряет формулировку, делавшую один из них полезным, потеря поменьше.

    Обратная связь5 мин чтения

  • Изменения схемы GraphQL: депрекация без номера версии

    У GraphQL нет v1 или v2 в URL. Поля депрекируются по одному директивой, на общей схеме, которую используют все клиенты, и это меняет, что должен changelog.

    Изменения API5 мин чтения

  • Как написать гайд по миграции API

    Гайд по миграции API превращает несовместимое изменение в чек-лист вместо сбоя. Что он должен содержать, и почему одной записи недостаточно.

    Изменения API5 мин чтения

  • Проверка changelog для GitHub Actions

    Проверка changelog в GitHub Actions не пускает merge без записи: шаг, который держится на памяти, обязательно забывают. Как её настроить и что она ломает.

    Инженерия5 мин чтения

  • Как отказать в запросе на функцию, не потеряв клиентку

    Замыкание цикла обычно означает сказать кому-то, что его запрос выпущен. Более трудная половина — сказать нет, не повредив отношения с клиенткой.

    Обратная связь4 мин чтения

  • Как отслеживать запросы на функции, не теряя их

    Отслеживание запросов обычно проваливается: запросы не доходят никуда, или доходят туда, куда никто не возвращается. Система, выдерживающая оба сбоя.

    Обратная связь5 мин чтения

  • Release notes для функции за флагом: что сказать и когда

    Release notes для функции за флагом различают merge и выпуск: с флагом это разные события. Закрыв петлю рано, вы сообщите о функции, которую ещё не видно.

    Обратная связь5 мин чтения

  • Когда запрос на функцию на самом деле — отчёт об ошибке

    Тикет поддержки с просьбой новой настройки может быть обходным путём для скрытой ошибки. Неверная метка отправляет его не той владелице и не в ту очередь.

    Обратная связь4 мин чтения

  • Тикеты Поддержки vs. Запросы Функций: Чему Доверять?

    Тикет поддержки и доска запросов на функции измеряют разное, и приравнивание всплеска в одном к всплеску в другом даёт уверенные, но неверные приоритеты.

    Обратная связь5 мин чтения

  • Git-теги, релизы и ваш changelog

    Git-тег, релиз и запись changelog — три записи одного события. Их смешивание заставляет changelog дрейфовать. Как трём этим вещам следует совпадать.

    Инженерия4 мин чтения

  • Внутренние changelog API: что меняется для другой команды

    У публичного changelog API аудитория, до которой не дотянуться напрямую. У внутреннего она сидит этажом ниже, и это меняет то, что changelog ей должен.

    Изменения API5 мин чтения

  • Внутренние release notes: кому ещё нужно знать, что вышло

    Саппорт и продажи обычно узнают о запуске от растерянного клиента. Внутренние release notes это решают — в форме, отличной от той, что видят клиенты.

    Релиз-ноты на практике4 мин чтения

  • Release notes для мобильных приложений: что режет лимит

    App Store и Play Store показывают пару строк и не дают ссылок. Приёмы веб-changelog там не работают, сокращать нужно намеренно. Разбираем, что убрать.

    Релиз-ноты на практике4 мин чтения

  • Changelog монорепозитория: один, или по одному на пакет?

    Монорепозиторий может вести один changelog на весь репозиторий или по одному на пакет. Неверный выбор делает релиз либо слишком шумным, либо разрозненным.

    Инженерия4 мин чтения

  • Как анонсировать новую функцию (без тишины)

    Большинство анонсов умирает в канале, который никто не читает дважды. Где анонсировать, что сказать первым, и до кого нужно достучаться в первую очередь.

    Релиз-ноты на практике4 мин чтения

  • Как приоритизировать растущий поток запросов на функции

    Бэклог не отвечает на главный вопрос: какой запрос делать первым. Рабочие фреймворки приоритизации, где каждый ломается и что скрывает число голосов.

    Обратная связь5 мин чтения

  • Enterprise release notes: что меняется для одного аккаунта

    Enterprise release notes для клиента на приватной сборке нужно откалибровать под его инстанс. Ошибка в калибровке сливает roadmap или путает поддержку.

    Релиз-ноты на практике5 мин чтения

  • Semantic versioning и ваш changelog

    Semantic versioning ещё до чтения changelog говорит, насколько болезненным будет релиз. Что обещает каждая цифра версии и что должна сказать запись.

    Инженерия5 мин чтения

  • Заголовок Sunset у API и когда его отправлять

    Заголовок Sunset сообщает клиенту API, когда версия перестанет отвечать, в отличие от уведомления о депрекации. Что покрывает RFC 8594 и что даёт brownout.

    Изменения API5 мин чтения

  • Changelog вебхуков: breaking change, который никто не просил

    Изменение payload вебхука ломается тихо, потому что его некому отклонить. Что делает изменение payload breaking, и как его правильно версионировать.

    Изменения API5 мин чтения

  • Changelog: что это такое, с примером записи

    Changelog, или журнал изменений, это датированный список того, что изменилось в продукте. Пример записи, отличие от release notes и где его держать.

    Релиз-ноты на практике5 мин чтения

  • Changelog API: что публиковать и кто это читает

    Changelog API читают те, кто решает, будет ли их код работать через месяц. Что каждая запись им должна, где ей место, и как на неё подписаться.

    Изменения API6 мин чтения

  • Как сделать страницу changelog, за которой следят

    Страница changelog оправдывает себя, когда люди возвращаются на неё. Где ей место, что нужно каждой записи, потоки и разметка, и куда встроить виджет.

    Инженерия5 мин чтения

  • Шаблон письма об обновлении продукта, которое читают

    Письмо об обновлении продукта, которое читают, ушло тому, кто его попросил. Шаблон, четыре типа писем, рабочие темы, сегментация и согласие.

    Релиз-ноты на практике5 мин чтения

  • Как деприкейтить API, не теряя разработчиков

    Депрекация — это обещание с датой. Расписание, шаблон уведомления, заголовки ответа, и шаг, не дающий sunset превратиться в инцидент поддержки.

    Изменения API5 мин чтения

  • Лучшие практики версионирования API, ради вызывающих

    Версионируйте только то, что ломает совместимость, размещайте версию там, где её видят вызывающие, и держите старую до даты. Четыре схемы сравнены.

    Изменения API6 мин чтения

  • Breaking changes: что считается и как выпустить

    Breaking change это изменение, которое не пережил бы корректный вызывающий. Что считается, что нет, как поймать его в CI и безопасно выпустить.

    Изменения API8 мин чтения

  • Замыкание петли обратной связи со стороны changelog

    Петля обратной связи замыкается, когда запросивший знает: выпущено. Петля в четырёх шагах, где рвётся, и почему changelog — верное место для замыкания.

    Обратная связь6 мин чтения

  • Шаблон запроса функции, становящийся changelog

    Запрос функции полезен только тогда, когда его можно найти при выпуске. Шаблон, метки, которые его направляют, и поля, которые потом читает changelog.

    Обратная связь5 мин чтения

  • Публичная roadmap из вашего issue-трекера, три колонки

    Публичная roadmap это обещание о будущем. Держите её маленькой, питайте из уже отслеживаемых issue и перемещайте каждый элемент меткой на его issue.

    Обратная связь5 мин чтения

  • Автоматизация changelog и её пределы

    Автоматизируйте сбор, форматирование и публикацию. Не автоматизируйте отбор или формулировку. Где граница и что происходит, когда она сдвигается.

    Инженерия5 мин чтения

  • Changelog vs release notes: в чём разница?

    Changelog — это непрерывный реестр для того, кто что-то ищет. Release notes — это отобранное сообщение для того, кто решает, важно ли это ему.

    Релиз-ноты на практике5 мин чтения

  • От conventional commits к changelog

    Conventional commits делают changelog выводимым из истории, но не делают его читаемым. Что даёт эта конвенция, где она заканчивается и как закрыть разрыв.

    Инженерия5 мин чтения

  • Как писать release notes, которые реально читают

    «Исправления багов и улучшения производительности» — это не release note. Вопрос, на который должна отвечать каждая запись, и переписанный реальный пример.

    Релиз-ноты на практике5 мин чтения

  • Keep a Changelog, реально внедрённый

    Спецификация Keep a Changelog занимает одну страницу, но команды сбиваются при внедрении. Что она требует, что оставляет на ваше усмотрение и где подводит.

    Инженерия5 мин чтения

  • Лучшие практики release notes, которые важны

    Большинство списков лучших практик — это советы по стилю. Эти меняют поведение читателя, плюс три популярных, которые оказываются карго-культом.

    Релиз-ноты на практике5 мин чтения