Skip to content

handbook: add guide for writing changelog posts#4674

Open
sumitshinde-84 wants to merge 18 commits intomainfrom
changelog
Open

handbook: add guide for writing changelog posts#4674
sumitshinde-84 wants to merge 18 commits intomainfrom
changelog

Conversation

@sumitshinde-84
Copy link
Collaborator

@sumitshinde-84 sumitshinde-84 commented Mar 11, 2026

Description

Adds a handbook guide explaining how to write changelog posts for flowfuse.com/changelog/.

Covers when to write one, how to structure the file and frontmatter, writing style guidance, and real examples from the existing changelog as discussed with @dimitrieh

Related Issue(s)

Checklist

  • I have read the contribution guidelines
  • I have considered the performance impact of these changes
  • Suitable unit/system level tests have been added and they pass
  • Documentation has been updated
  • For blog PRs, an Art Request has been created (instructions)

@netlify
Copy link

netlify bot commented Mar 11, 2026

Deploy Preview for flowforge-website ready!

Name Link
🔨 Latest commit 22ec3f9
🔍 Latest deploy log https://app.netlify.com/projects/flowforge-website/deploys/69b10752d3c2190008551462
😎 Deploy Preview https://deploy-preview-4674--flowforge-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 89 (🔴 down 2 from production)
Accessibility: 81 (no change from production)
Best Practices: 100 (no change from production)
SEO: 91 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Mar 11, 2026

Deploy Preview for flowforge-website ready!

Name Link
🔨 Latest commit 84ad8ff
🔍 Latest deploy log https://app.netlify.com/projects/flowforge-website/deploys/69c17593df97f3000808ee79
😎 Deploy Preview https://deploy-preview-4674--flowforge-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 88 (🔴 down 1 from production)
Accessibility: 81 (no change from production)
Best Practices: 100 (no change from production)
SEO: 91 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@sumitshinde-84
Copy link
Collaborator Author

Before merging this PR, please merge #4675 as this change depends on it.

Copy link
Contributor

@dimitrieh dimitrieh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sumitshinde-84 thanks for writing this up!

Left a couple of suggestions and requested changes.

Calling in help to review this from @Steve-Mcl @cstns if possible, @n-lark as well for a fresh perspective on this ✨

cc: @allthedoll


## When to write one

Write a changelog post when you ship something a user would notice or benefit from. This includes new features, meaningful improvements to existing functionality, behaviour changes users need to be aware of, and breaking changes that require user action.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am sure engineering has an opinion on this has well. :)

@Steve-Mcl can you have a look here?


A quick search gives:

There's no handbook page that defines criteria like "write a changelog entry when X" — it seems the public-facing changelog entries at flowfuse.com/changelog are produced more by editorial judgment (product/marketing) than a written rule. That might actually be a gap worth filling, especially given the work you've been doing with Sumit and the release templates you're setting up

We have some existing documentation at https://flowfuse.com/handbook/engineering/project-management/#changelog-%26-release-communication

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@allthedoll can you have a look here?

@allthedoll
Copy link
Contributor

Before we merge this, I think it's worth taking a step back to align on a couple of things first:

  • Who is the changelog actually for? (customers on Cloud, self-hosted admins, prospects, all of the above?)
  • What outcome are we trying to drive? (awareness, trust, retention, SEO, something else?)

Once we're clear on those, we'll be in a much better position to decide who should own changelog entries, and whether that should vary by entry type.

I'm also conscious of the frequency here. Looking at what we actually ship, this isn't a once-a-month activity, it's multiple entries some weeks. If we're asking engineers to write these on top of everything else, we need to be honest about whether that's sustainable, or whether we're quietly adding to the burden every sprint without acknowledging it.

No one wants a process that makes engineers feel like they're writing marketing copy on top of shipping features. Let's make sure we understand the strategy first (who it's for, what we want it to do) and then the guidelines will follow naturally from that rather than the other way around.

@sumitshinde-84, none of this is a criticism of the work here, this is clearly well thought out. Just want to make sure we're building the right thing before we lock it in.

@dimitrieh
Copy link
Contributor

@allthedoll I agree with you. My understanding there was that we are writing these anyway and they are already established process, now making them more visible/useful and aligned for potential marketing purposes. I will put this up in the next engineering meeting for discussion so we can have the context and align on intent

Cc: @sumitshinde-84

@sumitshinde-84
Copy link
Collaborator Author

sumitshinde-84 commented Mar 19, 2026

Thanks @allthedoll , really valid points ! Could you all discuss this in the next eng meeting and share the outcome here? Happy to update the PR once there's alignment on the strategy.

@dimitrieh
Copy link
Contributor

@sumitshinde-84 there is an action point on Jamie and my plate now regarding this after the Eng meeting today. After that we'll know more :). We now got required context from the eng meeting.

@allthedoll
Copy link
Contributor

@sumitshinde-84 so we did talk about this in the engineering meeting today (cc @dimitrieh); here are my comments now that we've had that discussion!

Style Guidance

  • The style guidance and examples section are genuinely strong, and having real changelog links as models is ✨
  • ‼️ TODO: One addition to the writing style section: write in active voice. This is worth stating explicitly alongside the other style rules.
    • Compare: "Snapshot restore logic has been updated" vs. "You can now restore snapshots without leaving developer mode."
    • Active voice and user-framing tend to arrive together, but calling it out removes ambiguity.
    • For those just entering the chat, active voice is a sentence structure where the subject performs the action expressed by the verb; the subject comes before the verb. This makes for more direct, clear, engaging writing and better story telling.

The trigger

  • The current framing ("write when you ship something a user would notice") is 📈
    • But , more specifically, this is once a "ship" is verified in production (on Cloud)
    • ‼️ TODO: Let's update this to reflect that.

Noting when to make a changelog

  • ‼️ TODO: Update process for how we know when to write a changelog:
    • @FlowFuse/product will open a changelog ticket during refinement for any items requiring a changelog update
      • @FlowFuse/engineering and @FlowFuse/product are jointly responsible for remembering to ask this during refinements

Noting Cloud vs Self-hosted

  • What's live on Cloud now vs. what self-hosted customers get in the next release is actually the core purpose of the changelog. Worth making that explicit here.
  • ‼️ TODO: Let's add that the changelog should call this out (see Claude example below for inspo).

Reviewers

  • I'm worried this is too narrow. What if one or both of you is out?
  • ‼️ TODO: Let's assign @FlowFuse/marketing @FlowFuse/product and @FlowFuse/engineering and take 1-2 reviews. 💪🏼

Side note here: It's on my long-term tech debt to convert all CODEOWNERS files to teams from individuals. Best practices and all that.

Suggestion: include a Claude prompt

  • Given that we want engineers to write these without it feeling like a lift, consider adding a ready-to-use AI prompt to the doc
    • This removes a meaningful barrier to consistency, especially for engineers who are capable but don't want to context-switch into marketing-adjacent writing or for whom English is not their first language.
  • ‼️ TODO: Add an AI prompt for drafting changelogs 🤖

Example:

Drafting with AI

Paste the following prompt into LLM along with your PR description, commit messages, or technical notes:

"You are writing a FlowFuse changelog post. The audience is FlowFuse users — cloud customers and self-hosted admins — not engineers. Using the content I paste below, write a changelog post that: (1) opens with what changed, stated plainly in active voice; (2) explains the user benefit in one or two sentences; (3) includes a 'getting started' section only if user action is required; (4) ends with an availability note in this format: 'This feature is available to [tier] users of FlowFuse Cloud and [licence type] Self Hosted users from vX.Y.' Do not use PR titles or commit message language. Write for someone who just opened FlowFuse and wants to know what's new. Here is the technical context: [paste here]"


Next steps

  • I will attempt to put these into code suggestions now 👼🏼

## Writing style

Write for the user, not the engineer. Every changelog entry can tell two stories - what changed in the code, and what improved for the user. Always tell the second one.

Copy link
Contributor

@allthedoll allthedoll Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Write in _active voice_. Active voice puts the subject before the verb. The user is doing something, or something is now possible for them. When possible, write with “you” as the subject. It makes writing more direct, clear, and engaging. It also makes for better storytelling.


## When to write one

Write a changelog post when you ship something a user would notice or benefit from. This includes new features, meaningful improvements to existing functionality, behaviour changes users need to be aware of, and breaking changes that require user action.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Write a changelog post when you ship something a user would notice or benefit from. This includes new features, meaningful improvements to existing functionality, behaviour changes users need to be aware of, and breaking changes that require user action.
Write a changelog post when you ship something a user would notice or benefit from. This means the change is **live in production on FlowFuse Cloud** and visible to users.
This includes new features, meaningful improvements to existing functionality, behaviour changes users need to be aware of, and breaking changes that require user action.

Do not write changelog posts for internal tooling changes with no user-visible impact, routine dependency bumps, minor bug fixes the average user would never encounter, or changes behind a feature flag that are not yet generally available.

If you are unsure, ask: "Would a user who opens FlowFuse tomorrow notice or benefit from this?" If the answer is no, it can likely be skipped. When in doubt, make it a quick discussion with the team, involving both engineering and product.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## How changelog posts are triggered
Changelog posts should be identified during refinement, not after work is complete.
- Product creates a `changelog` ticket for any work that requires a changelog post
- Engineering and Product are jointly responsible for asking: "Does this need a changelog?" during refinement
This ensures changelog work is planned alongside delivery, rather than being remembered (or missed) at release time.

Comment on lines +94 to +100
That said, every post should answer three questions:

**What changed?** State it plainly in the opening. Do not make the user read three paragraphs before they find out what the post is about.

**Why does it matter?** Explain the benefit or the problem it solves. This is the difference between a changelog post and a bare release note. Without it, users have no reason to care.

**What do they need to do?** If the feature requires setup or user action, explain how to get started. If it just works, you do not need this.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
That said, every post should answer three questions:
**What changed?** State it plainly in the opening. Do not make the user read three paragraphs before they find out what the post is about.
**Why does it matter?** Explain the benefit or the problem it solves. This is the difference between a changelog post and a bare release note. Without it, users have no reason to care.
**What do they need to do?** If the feature requires setup or user action, explain how to get started. If it just works, you do not need this.
That said, every post should answer four questions:
**What changed?** State it plainly in the opening. Do not make the user read three paragraphs before they find out what the post is about.
**Why does it matter?** Explain the benefit or the problem it solves. This is the difference between a changelog post and a bare release note. Without it, users have no reason to care.
**What do they need to do?** If the feature requires setup or user action, explain how to get started. If it just works, you do not need this.
**Where is it available?** The change is live on FlowFuse Cloud. Self Hosted users will receive it in the next release (_vX.Y_).

/package-lock.json @FlowFuse/engineering @Yndira-E

# Changelog posts (tech writer required, product as backup)
/handbook/engineering/releases/writing-changelog @sumitshinde-84 @dimitrieh
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/handbook/engineering/releases/writing-changelog @sumitshinde-84 @dimitrieh
/handbook/engineering/releases/writing-changelog @FlowFuse/marketing @FlowFuse/product @FlowFuse/engineering @sumitshinde-84 @dimitrieh

I don't know how the handbook works and I'm guessing a team assigned will break it??


## Raising a PR

Follow the standard [Git workflow](/handbook/company/guides/git/) to raise a PR against the website repository. Changelog posts should be reviewed by a technical writer before merging. If no technical writer is available, product can review as a backup.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Follow the standard [Git workflow](/handbook/company/guides/git/) to raise a PR against the website repository. Changelog posts should be reviewed by a technical writer before merging. If no technical writer is available, product can review as a backup.
Follow the standard [Git workflow](/handbook/company/guides/git/) to raise a PR against the website repository.
Changelog posts should be reviewed by at least one of:
- Product
- Marketing
- Engineering
Aim for 1–2 reviewers to ensure accuracy and clarity. This avoids bottlenecks if specific individuals are unavailable.

Avoid jargon unless it is standard FlowFuse or Node-RED vocabulary. If a technical term is unavoidable, give enough context that a non-expert can follow.

Do not paste PR titles or commit messages. They are written for engineers. Rewrite them from the user's perspective.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Drafting with AI
If you prefer, you can use an LLM to draft a first version of your changelog post.
Paste the following prompt into your tool of choice along with your PR description, commit messages, or technical notes:
> You are writing a FlowFuse changelog post. The audience is FlowFuse users — cloud customers and self-hosted admins. Using the content I paste below, write a changelog post that:
> - Opens with what changed, stated plainly in active voice
> - Focuses on what the user can now do (use “you” where possible)
> - Explains the user benefit in one or two sentences
> - Includes a "getting started" section only if user action is required
> - Ends with: "This change is live on FlowFuse Cloud. Self Hosted users will receive it in the next release (vX.Y)."
>
> Do not use PR titles or commit message language. Write for someone who just opened FlowFuse and wants to know what’s new.
>
> Here is the technical context:
> [paste here]
Always review and edit the output before publishing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants