changeloop 博客
发布说明实践
我们经常思考两件事:如何写出有人读的发布说明,以及如何不再手动维护 changelog。没有订阅,不用注册,只有文章。
缺陷修复发布说明:怎样写出读者真正会用的条目
缺陷修复发布说明想有用,每条都要写清症状、受影响的人群、起始时间和读者下一步该做什么。本文提供改写对照,并讲解安全修复、回归和数据丢失的写法。
发布说明实践阅读约 1 分钟
如何在软件产品中向客户征集反馈:时机、渠道与话术
想在软件产品里收到有用的反馈,就要在用户刚完成某个操作后,在他们工作的地方,只问一个具体的问题。本文按时机和渠道给出现成话术,并说明拿到答案后如何回复。
反馈闭环阅读约 1 分钟
产品路线图示例:六种格式,以及各自是怎样失效的
本文给出六个带真实条目的产品路线图示例:Now/Next/Later、季度时间线、主题式、结果式、公开路线图和发布路线图,说明各自适合的读者和失效之处。
反馈闭环阅读约 1 分钟
发布说明示例:针对每一种变更类型的写法,以及为什么有效
本文给出新功能、改进、缺陷修复、破坏性变更、安全修复、弃用、应用商店说明和内部说明的发布说明示例,并解释为什么有效,让你照搬形状,换上自己产品的真实事实。
发布说明实践阅读约 1 分钟
Stripe API 版本控制的运作方式,以及值得借鉴的做法
Stripe API 版本控制把每个账户固定在一个带日期的版本上,并允许单次请求覆盖它。本文讲这套机制如何运作、代价是什么,以及小型 API 可以借鉴哪些做法。
API 变更阅读约 1 分钟
紧急发布说明:如何在真实的时间压力下动笔写作
严重事故触发的紧急发布,要在几分钟内写出可用且诚实的发布说明,而通常的写作流程默认写作者有从容的时间。本文说明在时间压力下,如何面对焦虑的读者动笔。
发布说明实践阅读约 1 分钟
Protobuf 破坏性变更:线上格式到底能保住什么
Protobuf 的破坏性变更发生在线上传输的字节流里,而不是 URL 路径。有些字段改动安全免费,有些会悄悄破坏所有老客户端,在代码 diff 里却几乎一样。
API 变更阅读约 1 分钟
体验日志文件格式:JSON、YAML,还是干脆用 Markdown
体验日志的文件格式,决定它能否驱动页面和小组件,还是只能被人读一遍。本文讲 Markdown、JSON 和 YAML 各自的代价,以及何时值得迁移到结构化格式。
工程实践阅读约 1 分钟
重复的功能请求:怎么合并但不丢失原来的声音
合并重复的功能请求能保住数字,但粗心合并会丢掉让某条请求真正有用的措辞。本文讲保留措辞的合并流程、如何识别误判、是否通知提出者,以及功劳记给谁。
反馈闭环阅读约 1 分钟
GraphQL 模式变更:没有版本号的停用
GraphQL 的 URL 里没有 v1 或 v2,字段通过指令在同一份共享模式上逐个停用。本文说明这会如何改变体验日志要给调用方交代的内容。
API 变更阅读约 1 分钟
该怎样写一份真正管用的 API 迁移指南
API 迁移指南把一次不兼容的变更变成一份清单,而不是一次故障。本文说明它该写什么、何时发布、谁来写,以及为什么光靠一条体验日志记录不够。
API 变更阅读约 1 分钟
一个跑在 GitHub Actions 里的体验日志检查
这个跑在 GitHub Actions 里的体验日志检查,会在缺少记录时拒绝合并,因为依赖人记得的步骤迟早会失效。本文讲它能验证什么、不能验证什么,以及紧急热修复怎么办。
工程实践阅读约 1 分钟
该怎样拒绝一个功能请求,又不失去这位客户
闭环通常意味着告诉某人她要的东西已经发布,真正难的是说不,还要不伤害和客户的关系。本文说明什么让拒绝特别糟糕,好的拒绝怎样开口,并给出可直接使用的话术。
反馈闭环阅读约 1 分钟
Feature flag 发布说明:该说什么,又该什么时候说
Feature flag 发布说明必须分清代码合并和真正发布,因为有 flag 时两者不再同时发生。时机不对就关闭反馈闭环,是在通知别人一个看不见的功能。本文讲如何判断时机。
反馈闭环阅读约 1 分钟
功能请求应该怎样追踪,才不会把它们弄丢掉
功能请求追踪通常只有两种失败方式:请求无处可去,或有了去处却没人回头看。本文说明能扛住这两种失败的机制、好用的分诊标签,以及如何决定优先级并做好闭环。
反馈闭环阅读约 1 分钟
支持工单对功能请求:你到底应该相信哪一个
支持工单和功能请求看板衡量的是两种不同的信号,来自两类不同的用户。把一个渠道的激增与另一个渠道的激增直接等同,只会得出自信却完全错误的优先级排序。
反馈闭环阅读约 1 分钟
一条功能请求,实际上很可能是一份缺陷报告
一张要求新增设置项的支持工单,很可能只是在绕开一个隐藏的缺陷。贴错标签会把它送到错的负责人和队列,浪费优先级信号,还拖慢真正的修复。本文讲如何分辨两者。
反馈闭环阅读约 1 分钟
Git 标签、发布记录和你的体验日志该怎样对应
Git 标签、一次发布和一条体验日志记录,是同一事件的三份记录,用途和读者各不相同。把它们混为一谈,正是体验日志偏离实际发布的原因,本文说明如何对应。
工程实践阅读约 1 分钟
对内 API 体验日志:对另一个团队来说,到底什么变了
对外的 API 体验日志面对无法联系的读者,对内的读者可能就在两层楼之外,这改变了它的责任。本文讲这些差别、谁来维护调用方名单,以及和 monorepo 的关系。
API 变更阅读约 1 分钟
对内发布说明:除了客户,还有谁必须知道到底发生了什么
支持和销售团队常从一头雾水的客户口中,才第一次得知有新功能上线。对内发布说明能解决这个问题,本文讲它该怎么写、谁来写、何时写,以及如何比客户更早送达。
发布说明实践阅读约 1 分钟
移动应用的发布说明:字数上限到底会砍掉什么
App Store 和 Play Store 只给几行可见文字,一个链接都不给,网页版的写法在这样的预算下会失灵。本文用真实例子讲如何取舍,别把最重要的一句挤出预览区。
发布说明实践阅读约 1 分钟
Monorepo 的体验日志:到底该合成一份,还是按包拆开
Monorepo 可以为整个仓库维护一份体验日志,也可以每个包各一份,选错会让发布要么太吵,要么信息分散。本文讲如何判断,以及标签、版本号和提交说明怎样配合。
工程实践阅读约 1 分钟
该怎样发布一条新功能公告(而不是悄无声息)
大多数新功能公告,最后都死在了一个没人会看第二遍的渠道里。本文说明该在哪里发布、第一句话说什么、怎样直接触达提出过请求的人,以及四种渠道如何搭配使用。
发布说明实践阅读约 1 分钟
功能请求越堆越多的时候,到底该怎样排优先级
功能请求都已跟踪、分组、打好标签后,仍有个更难的问题:该先做哪一个。本文讲几种管用的优先级框架、RICE 是否适合功能请求,以及原始投票数掩盖了什么。
反馈闭环阅读约 1 分钟
企业发布说明:一个账户到底会变成什么样子
企业发布说明必须针对运行私有构建版本的具体客户实例校准,不能照搬公开通用版本。校准出错,要么用客户还没有的改动让他们困惑,要么泄露内部路线图。
发布说明实践阅读约 1 分钟
API 的 Sunset 响应头:什么时候该发送它
API 的 Sunset 响应头告诉客户端一个版本何时彻底停止应答,这和只说将来会停用的通知是两回事。本文讲 RFC 8594 的规定、这个响应头能否信任,以及提前限时停机。
API 变更阅读约 1 分钟
Webhook 体验日志:没人要求过的破坏性变更
Webhook payload 的改动会悄无声息地出问题,因为没人能拒绝它,接收方可能带着错误值运行好几天。本文讲什么样的改动算破坏性变更,以及如何加版本并安全迁移。
API 变更阅读约 1 分钟
API 体验日志: 该公开什么内容,又是谁在读它
API 体验日志的读者,是要判断自己的代码下个月还能否正常运行的人。本文说明每条记录应该交代什么、放在哪里,以及调用方如何订阅。
API 变更阅读约 1 分钟
如何搭建一个人们真的会持续关注的体验日志页面
体验日志页面只有让人一次次回来看,才值得认真搭建。本文说明它放在哪里、每条记录需要什么内容、信息流和标记语言怎么处理,以及小组件放在哪。
工程实践阅读约 1 分钟
面向调用方设计的 API 版本控制最佳实践
只对真正破坏兼容性的内容做版本管理,把版本号放在调用方看得见的地方,让旧版本运行到明确的截止日期。本文比较四种常见方案,并以对调用方的要求高低为标准。
API 变更阅读约 1 分钟
最终能够真正变成体验日志条目的功能请求模板
功能请求要有用,前提是功能上线时还能把它找出来。本文说明模板该长什么样、把请求分流到正确位置的标签有哪些,以及体验日志之后会读取哪些字段。
反馈闭环阅读约 1 分钟
用 issue 追踪系统打造三列式公开路线图
公开路线图归根到底是一份关于未来的承诺,所以要保持精简,直接从已在追踪的 issue 生成,并靠 issue 上的一个标签让项目在各列之间移动。本文说明整套机制。
反馈闭环阅读约 1 分钟
从 conventional commits 到一份体验日志
Conventional commits 能让体验日志内容被自动推导出来,但不会因此自动变得好读。本文说明这个约定带来什么好处、在哪里走到尽头,以及如何弥补两者之间的差距。
工程实践阅读约 1 分钟
体验日志与发布说明二者之间的区别到底是什么
体验日志是供人查找的持续累积的记录,发布说明则是写给还在犹豫是否关心这次更新的人的一条精选消息。两者面向的读者不同,需要区别对待,本文说明如何划分。
发布说明实践阅读约 1 分钟
如何写出用户真正愿意花时间读完的发布说明
只写错误修复和性能改进,算不上一条合格的发布说明。本文说明每条发布说明都必须回答的核心问题,并用一个真实案例对比修改前后的两个版本,展示该怎样写。
发布说明实践阅读约 1 分钟
Keep a Changelog,真正落地实践之后的心得
Keep a Changelog 这份规范只有短短一页,可真正落实时,大多数团队会渐渐偏离。本文说明它写了什么、刻意没回答什么,以及执行时常在哪里出错。
工程实践阅读约 1 分钟
值得团队真正长期坚持采用的发布说明最佳实践
关于发布说明的大多数最佳实践清单,只是写作风格建议,并没触及问题的本质。本文谈的是能切实改变读者行为的做法,以及另外三个流传很广却几乎没有价值的常见误区。
发布说明实践阅读约 1 分钟