惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

Compulsive curiosity, or, how I built an infinite idea machine Gift details on the subscriber portal Portal link in the archive nav The physicists who convinced Fermilab to send Brazil's emails First, add no friction: How micropayments lost and subscriptions won Filter subscribers and automations by source Automations, rebuilt What email will look like in the future Filter subscribers by bounce date and reason Email could have been X.400 times better Three features are moving behind the paywall Firewall changes and improvements Put your name and voice into your company newsletter Simplified email address settings Subscription wall Inboxes were overwhelming before we'd even named them The US government tried really hard to screw up email Public postmortem: database connection exhaustion Ask a nerd: what is the best way to unsubscribe from newsletters? Bookshop.org embeds Email was into agents before they were cool Passwordless login Rename metadata keys in bulk A spring cleaning for our legal docs Ask a nerd: what happens when you click the spam button? Passkey support for two-factor authentication How Buttondown's API versioning works Safer defaults for the email creation API How to send email to space How we enabled Content Security Policy for everyone Recovery codes for two-factor authentication Filter sent emails by engagement rate How we migrated to TypeIDs without breaking clients How we check every link in your email Use newsletter metadata in your emails Should we bring back email exploders? Sort and filter by open and click rates Custom click tracking domains More newsletter settings in the API Revamped replies Custom email templates for everyone Simplified cancellation Ask a Nerd: Does email length affect deliverability? The changelog, reborn Swedish localization Forwarding an email is not always straightforward Public descriptions for tags OpenAPI spec for archives How Rodrigo brings a humanistic view to consumer technology Survey responses on the web How Brandon Lucas Green shares his music and supports artists Subscribers can come from anywhere. Even another newsletter platform's form. Your newsletter's archives are more valuable than your list Better tag self-management Smarter automation filters Granular API keys New design settings pages Snippets Ask A Nerd: How does newsletter cadence affect deliverability? Starred views More ways to customize your archives Inbox filtering Mastodon follower analytics Ask a Nerd: What are good open, click, and response rates for an email newsletter? How we migrated our database to PlanetScale Two new archive themes Custom buttons now work in Markdown mode Ask a Nerd: Does attaching files to your newsletter hurt deliverability? Seline and Tinylytics support Unban subscribers Announcement bars for your archives Bang paths, source routing, and how email trips were planned Public postmortem: archive downtime 2025 disposables.app Russian localization Ask a Nerd: Can you improve email deliverability with a personal domain? More locale options How we interview customers at Buttondown Bluesky analytics Reply to conversations Minimum viable complexity How Jeffery Hicks goes behind-the-scenes in his newsletter Changes to our stack in 2025 2026: Emails What the hell is a UTM? TK reminders in the editor Randomize survey answer order Why we insourced analytics Scroll sync in the editor How Kelly Jensen uses Buttondown to discuss key library issues 2026: Archives How Jamie Thingelstad uses Buttondown to explore tech topics Improved filters Keeping feature creep at bay Content Security Policy in archives Open source Sniperl.ink Auto-activating RSS reader subscriptions What the hell is ActivityPub? Gift subscriptions
Start with a changelog
Justin Duke · 2024-08-16 · via

Remember opening the App Store regularly to install updates? Quaint today, but for the first five years of the App Store—from 2008’s iOS 2 until iOS 7’s launch in 2013—you had to manually install new versions of apps.

That pushed release notes into the mainstream. Suddenly everyone noticed the best changes while waiting on apps to install.

Plenty of apps took the easy way out, listing just “Enhancements and bug fixes.” Others grabbed the opportunity to have fun.

“Oh happy day: A tricksy bug was finally squished,” wrote the Slack team in an early release. They’ve kept it up, over the years. “The app is objectively better today than it was yesterday. This is a scientifically verifiable fact that cannot be challenged or undermined,” read a July 2024 update.

Just enough fun copy to get you to take notice and read what’s changed.

Automatic updates simplified everything at the cost of programmer humor. “Release notes on apps feel like a relic from 2008-2015 when most apps did maybe 2-3 updates per year at most,” as Gergely Orosz tweeted.

Yet I’d argue you should still have release notes. Changelogs. Patch notes, if you’ve built a game. Product updates, or just plain updates, or a Notion-style What’s New. Whatever you call them, they’re a way to share what’s new or changed, and why you built it, and have a bit of fun as you do so.

Your product needs a changelog. And an email list might be the best way to build it.

Email as a changelog

Odds are your product has a blog and an email newsletter. Perfect for sharing your largest releases and their headline-grabbing features. Not so much for the minutiae of new minor features, bug fixes, and breaking changes like an updated API call or modified keyboard shortcuts.

The common strategy is to build multiple blogs. Have your core blog for marketing updates, stuff everyone will read. Then a developer blog that lists API and SDK changes. And, for the most dedicated, yet another changelog blog with release notes from every new version.

Or not. Your changelog blog could simply be an email newsletter.

Folks aren’t reading your changelogs on the App Store. It’d take a special level of dedication to open your changelog blog regularly just to see what’s new. Push the updates to their inbox, though, and your most engaged users will know what’s new with your app without any extra effort–almost as good as App Store’s early years.

“Having a good changelog means having a consistently updated changelog,” advises Olivier Lacan’s Keep a Changelog site. Anything you can do to make writing and publishing changes easy makes it more likely you’ll actually do it. Emails are easy to write and send; there’s less to futz with than a blog post.

So start a new newsletter. Write an email message every time your team ships something new and substantial, detailing the changes. Make it as formulaic or human as you want—it’s your changelog. Then hit send.

Best of all, your newsletter’s archive is a bonus changelog blog for your product, for zero extra effort, with your email newsletter’s archive. Nothing else to maintain, just an easy way to write updates, push them out to everyone, and save them for posterity. There’s even the tiny bonus that it’s hosted separately from your app, so just like an uptime site it won’t go down if you accidentally push a breaking change to main and customers are looking for answers to what happened. Win/win.

What should go in a changelog?

Changelogs and release notes have been with us for as long as we’ve been coding (or, at least, since 1971, say Oxford’s etymologists). They’re a record of truth that lists what’s old, what’s new, and how we got here.

And for just as long, they’ve merged in humor and humanity. “Are you finding it frustrating when everything works on minix?,” wrote Linus Torvalds, tongue-in-cheek, in the second Linux changelog from October 5, 1991.

It’s right there in the name: A changelog should list changes. “Focus on what was changed — who, how and when are usually less important,” recommends Debian’s dev docs. GNU coding standards call for detail: Change logs (two words, to GNU) exist “so that people investigating bugs in the future will know about the changes that might have introduced the bug,” they say.

Yet that detail should be moderated for the sake of brevity. A self-depreciating story of why it took you so long to ship a bug fix might get read. A changelog detailing every push in excruciating detail won’t.

“Changelogs are for humans, not machines,” reminds Oliver Lacan. Which is why Debian moderates GNU’s strictures, advising to use common English, to not “elaborate the trivial and obvious changes,” and to “be polite, don’t swear” (which is good advice—though, I wouldn’t begrudge you an occasional, well-earned swear for especially pesky bugs).

Especially when sending changelogs via email. Have a bit of fun, be human, all in service of writing something people will want to read. “Spending a modest amount of time on writing a changelog saves every reader twice as much time,” says Common Changelog, as good a rubric as any.

With that in mind, work in the actual details. Generally, you’ll want to ship one changelog for every meaningful version. No need to push a changelog update for a tiny fix that no one would otherwise notice; too many of those, and readers will tune you out or unsubscribe. It’s not the App Store where you have to write release notes with every push. Instead, write up the bigger, headline features, and roll up smaller updates into single, larger posts, something I try to do with Buttondown’s changelog. Don’t just ship your GitHub log; use that as a baseline, and edit it into something more human-friendly.

Then think about the release note’s title. Make updates sound interesting, but also make it easy to find a specific version. List the actual version number, if you use semantic versioning. Include the release date in ISO standard, year-month-date. Buttondown tags your email archives with an ISO date by default—that might cover it, too. Your changelog should also always show the current, most up-to-date version first—exactly the way most blogs and Buttondown’s email archive works, with the most recent post first.

And, as GNU and others recommend, write in Markdown. Good practice for writing portable text, great for turning your writing into email-ready HTML especially with Markdown-powered tools (like Buttondown, ahem).

Building an email-powered changelog in Buttondown

The broad idea of using email newsletters to publish your changelog could work in any email service that includes archives. Buttondown, though, has some dev-friendly features that make it an even better fit for changelogs.

Start with the email itself. You can write updates in Markdown (complete with code samples, if you’re writing about API and SDK changes), paste them into the Buttondown editor, and send. You could POST your updates to Buttondown’s API, to schedule your changelog update directly from your dev environment. Or, you could also write your changelog in Gmail or your favorite email app, send it to newsletters@mg.buttondown.email, and Buttondown will send it on to your subscribers and add it to your archives.

Your archives will be your long-term changelog record. You could stick with Buttondown’s defaults, or customize the CSS to match your company’s branding. You could also add a custom domain, to keep your archives at changelog.yourcompany.com if you want. Personalize it with your rel=me tag. Set it to automatically cross-post updates to LinkedIn (with Facebook and Twitter/X coming soon, something you could automate in the meantime with Zapier). Share updates with your team, too, and have Buttondown post new updates to your Slack or Discord.

You could publish the exact same content in your email and your web archive. Or, if you want to include some email-specific copy, perhaps opening with a “Hi”, wrap that in the following tags, replacing “Hi everyone!” with your copy reserved for emails:

{% if medium == "email" %}
Hi everyone!
{% endif %}