Skip to content

Automate post-release announcement fan-out (forums, chat, social, mailing list) #711

Description

@kojiromike

Tracked under #706 (gap #8).

Problem

Step 19 of the release runbook — announcing a release across six channels (forums, chat, Twitter/X, Facebook, LinkedIn group + company, registered-users mailing list) — is fully manual. It's also the most error-prone of the post-release steps: each channel has its own format conventions, the maintainer has to copy/paste the same content six ways, and channels routinely get missed or fall days behind the release.

Proposed workflow

A workflow consuming openemr-tag (after the docs PR's DRAFT → FINAL flip lands, so the release notes URL resolves) that:

  1. Renders an announcement from a templated source-of-truth file in openemr-devops (e.g. tools/release/templates/announcement.md.twig), interpolating version, headline features (from the release notes), and links.
  2. Posts the announcement to each channel via that channel's API:
    • Forums — phpBB API or per-board API
    • Chat — webhook into the project chat (Discord/Matrix/Slack — confirm)
    • Twitter / X — X API v2
    • Facebook — Graph API
    • LinkedIn — Marketing Developer Platform API (group + company page)
    • Mailing list — outbound SMTP or a list-management API (Mailchimp / Sendy / etc.)
  3. Logs each post (URL/permalink) back into the workflow run for audit.

Open questions

  • Per-channel content review: do we want a 24h dry-run window where the rendered announcement is posted as a draft / opened as a PR for human review before going out? My instinct is yes for the social channels (Twitter/X especially), no for the forum/chat/mailing-list channels where the content is more uniform.
  • Credential storage and rotation: each channel needs an API token / OAuth app, owned by the project (not an individual maintainer's account).
  • Failure handling: if 2 of 6 channels fail to post, do we retry just those two, retry all six, or surface the failure for manual handling.

This is the largest of the umbrella's sub-issues; might want to split per-channel once we start scoping.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions