blob: f8a47255941b04ca1df43719674f74378ad0ef56 [file] [log] [blame]
.. _docs-contrib-docs-changelog:
=================
Changelog updates
=================
This page describes how to write a bi-weekly :ref:`changelog <docs-changelog>`
update.
The :ref:`docs-contrib-docs-changelog-appendix` contains some general
information about how Pigweed approaches changelogs.
.. _docs-contrib-docs-changelog-timeline:
--------
Timeline
--------
.. _//pw_docgen/py/pw_docgen/sphinx/pigweed_live.py: https://cs.opensource.google/pigweed/pigweed/+/main:pw_docgen/py/pw_docgen/sphinx/pigweed_live.py
#. You should start working on the update on the Thursday before Pigweed Live.
The Pigweed Live schedule is listed in
`//pw_docgen/py/pw_docgen/sphinx/pigweed_live.py`_.
Follow the :ref:`docs-contrib-docs-changelog-instructions`.
#. You should have a rough draft pushed up to Gerrit and ready for review by
noon on Friday.
#. The update must be published before Pigweed Live.
.. _docs-contrib-docs-changelog-instructions:
------------
Instructions
------------
#. Use the :ref:`changelog tool <docs-contrib-docs-changelog-tool>` to kickstart
your rough draft.
This tool grabs all the commits between the start and end dates that you
specify, organizes them, and then outputs reStructuredText (reST).
#. Copy-paste the reST into ``//docs/changelog.rst``. The new text should go
right below the line that says ``.. _docs-changelog-latest:``.
#. Go to the last bi-weekly update (the one that was at the top before you added
your new text) and delete the line that contains
``.. changelog_highlights_start`` and also the line that contains
``.. changelog_highlights_end``.
These comments are how the :ref:`docs-root-changelog` section on
the homepage (``https://pigweed.dev``) is populated.
#. Review each section of the new text:
* Review each commit. You just need to get a sense of whether there were
any notable customer-facing updates; you don't need to understand every
detail of the changes.
* Add a short 1-paragraph summary describing notable changes such as new
methods or a collection of commits representing a larger body of work.
* If the commits were trivial or obvious, don't add a summary.
.. tip::
In the commit message or the updated documentation there's usually
a sentence that accurately sums up the change. When you find accurate
summaries like this, you can use that content as your changelog description.
When in doubt about anything, look at ``//docs/changelog.rst`` and follow the
previous content.
.. _docs-contrib-docs-changelog-tool:
--------------
Changelog tool
--------------
.. raw:: html
<label for="start">Start:</label>
<input type="text" id="start">
<label for="end">End:</label>
<input type="text" id="end">
<button id="generate" disabled>Generate</button>
<noscript>
It seems like you have JavaScript disabled. This tool requires JavaScript.
</noscript>
<p>
Status: <span id="status">Waiting for the start and end dates (YYYY-MM-DD format)</span>
</p>
<section id="output">Output will be rendered here...</section>
<!-- Use a relative path here so that the changelog tool also works when
you preview the page locally on a `file:///...` path. -->
<script src="../../../_static/js/changelog.js"></script>
.. _docs-contrib-docs-changelog-appendix:
--------
Appendix
--------
.. _docs-contrib-docs-changelog-release-notes:
Why "changelog" and not "release notes"?
========================================
Because Pigweed doesn't have releases.
.. _docs-contrib-docs-changelog-organization:
Why organize by module and category?
====================================
Why not organize by features, fixes, and breaking changes?
* Because some Pigweed customers only use a few modules. Organizing by module
helps them filter out all the changes that aren't relevant to them faster.
* If we keep the changelog section heading text fairly structured, we may
be able to present the changelog in other interesting ways. For example,
it should be possible to collect every ``pw_base64`` section in the changelog
and then provide a changelog for only ``pw_base64`` over in the ``pw_base64``
docs.
* The changelog tool is easily able to organize by module and category due to
how we annotate our commits. We will not be able to publish changelog updates
every 2 weeks if there is too much manual work involved.