blob: 2fbc989dee4656e1522b5af1fd3b8e7314c40c78 [file] [log] [blame] [view]
Gilles Peskineb695d5e2020-03-27 20:06:12 +01001# Pending changelog entry directory
2
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +01003This directory contains changelog entries that have not yet been merged
4to the changelog file ([`../ChangeLog`](../ChangeLog)).
5
Gilles Peskineece00a02020-09-30 01:16:59 +02006## What requires a changelog entry?
7
8Write a changelog entry if there is a user-visible change. This includes:
9
Gilles Peskine4bcfe922020-09-30 09:55:27 +020010* Bug fixes in the library or in sample programs: fixing a security hole,
11 fixing broken behavior, fixing the build in some configuration or on some
12 platform, etc.
13* New features in the library, new sample programs, or new platform support.
Gilles Peskineece00a02020-09-30 01:16:59 +020014* Changes in existing behavior. These should be rare. Changes in features
15 that are documented as experimental may or may not be announced, depending
16 on the extent of the change and how widely we expect the feature to be used.
17
18We generally don't include changelog entries for:
19
20* Documentation improvements.
21* Performance improvements, unless they are particularly significant.
Gilles Peskine4bcfe922020-09-30 09:55:27 +020022* Changes to parts of the code base that users don't interact with directly,
23 such as test code and test data.
Dave Rodgman1de02042023-08-02 13:01:14 +010024* Fixes for compiler warnings. Releases typically contain a number of fixes
25 of this kind, so we will only mention them in the Changelog if they are
26 particularly significant.
Gilles Peskineece00a02020-09-30 01:16:59 +020027
Gilles Peskinee9a1e132020-10-01 00:35:49 +020028Until Mbed TLS 2.24.0, we required changelog entries in more cases.
Gilles Peskineece00a02020-09-30 01:16:59 +020029Looking at older changelog entries is good practice for how to write a
30changelog entry, but not for deciding whether to write one.
31
Gilles Peskineb695d5e2020-03-27 20:06:12 +010032## Changelog entry file format
33
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010034A changelog entry file must have the extension `*.txt` and must have the
35following format:
36
37~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38Security
39 * Change description.
40 * Another change description.
41
42Features
Gilles Peskineb695d5e2020-03-27 20:06:12 +010043 * Yet another change description. This is a long change description that
44 spans multiple lines.
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010045 * Yet again another change description.
46
47~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
Gilles Peskineb695d5e2020-03-27 20:06:12 +010049The permitted changelog entry categories are as follows:
50<!-- Keep this synchronized with STANDARD_CATEGORIES in assemble_changelog.py! -->
51
52 API changes
53 Default behavior changes
54 Requirement changes
55 New deprecations
56 Removals
57 Features
58 Security
59 Bugfix
60 Changes
61
Gilles Peskineece00a02020-09-30 01:16:59 +020062Use Changes for anything that doesn't fit in the other categories.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010063
64## How to write a changelog entry
65
66Each entry starts with three spaces, an asterisk and a space. Continuation
67lines start with 5 spaces. Lines wrap at 79 characters.
68
69Write full English sentences with proper capitalization and punctuation. Use
70the present tense. Use the imperative where applicable. For example: “Fix a
71bug in mbedtls_xxx() ….”
72
73Include GitHub issue numbers where relevant. Use the format “#1234” for an
74Mbed TLS issue. Add other external references such as CVE numbers where
75applicable.
76
Gilles Peskine3b4edc72020-09-30 01:13:05 +020077Credit bug reporters where applicable.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010078
79**Explain why, not how**. Remember that the audience is the users of the
80library, not its developers. In particular, for a bug fix, explain the
81consequences of the bug, not how the bug was fixed. For a new feature, explain
82why one might be interested in the feature. For an API change or a deprecation,
83explain how to update existing applications.
84
85See [existing entries](../ChangeLog) for examples.
86
87## How `ChangeLog` is updated
88
89Run [`../scripts/assemble_changelog.py`](../scripts/assemble_changelog.py)
90from a Git working copy
91to move the entries from files in `ChangeLog.d` to the main `ChangeLog` file.