blob: ba20db32cb831c83663da83c2a0049e9bde17cac [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
10* Bug fixes: fixing a security hole, fixing broken behavior, fixing
11 the build in some configuration or on some platform, ...
12* New features in the library or new platform support.
13* Changes in existing behavior. These should be rare. Changes in features
14 that are documented as experimental may or may not be announced, depending
15 on the extent of the change and how widely we expect the feature to be used.
16
17We generally don't include changelog entries for:
18
19* Documentation improvements.
20* Performance improvements, unless they are particularly significant.
21* Changes that don't impact library users directly, for example new tests or
22 changes to the test framework.
23
24Prior to Mbed TLS 2.24, we required changelog entries in more cases.
25Looking at older changelog entries is good practice for how to write a
26changelog entry, but not for deciding whether to write one.
27
Gilles Peskineb695d5e2020-03-27 20:06:12 +010028## Changelog entry file format
29
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010030A changelog entry file must have the extension `*.txt` and must have the
31following format:
32
33~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34Security
35 * Change description.
36 * Another change description.
37
38Features
Gilles Peskineb695d5e2020-03-27 20:06:12 +010039 * Yet another change description. This is a long change description that
40 spans multiple lines.
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010041 * Yet again another change description.
42
43~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44
Gilles Peskineb695d5e2020-03-27 20:06:12 +010045The permitted changelog entry categories are as follows:
46<!-- Keep this synchronized with STANDARD_CATEGORIES in assemble_changelog.py! -->
47
48 API changes
49 Default behavior changes
50 Requirement changes
51 New deprecations
52 Removals
53 Features
54 Security
55 Bugfix
56 Changes
57
Gilles Peskineece00a02020-09-30 01:16:59 +020058Use Changes for anything that doesn't fit in the other categories.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010059
60## How to write a changelog entry
61
62Each entry starts with three spaces, an asterisk and a space. Continuation
63lines start with 5 spaces. Lines wrap at 79 characters.
64
65Write full English sentences with proper capitalization and punctuation. Use
66the present tense. Use the imperative where applicable. For example: “Fix a
67bug in mbedtls_xxx() ….”
68
69Include GitHub issue numbers where relevant. Use the format “#1234” for an
70Mbed TLS issue. Add other external references such as CVE numbers where
71applicable.
72
Gilles Peskine3b4edc72020-09-30 01:13:05 +020073Credit bug reporters where applicable.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010074
75**Explain why, not how**. Remember that the audience is the users of the
76library, not its developers. In particular, for a bug fix, explain the
77consequences of the bug, not how the bug was fixed. For a new feature, explain
78why one might be interested in the feature. For an API change or a deprecation,
79explain how to update existing applications.
80
81See [existing entries](../ChangeLog) for examples.
82
83## How `ChangeLog` is updated
84
85Run [`../scripts/assemble_changelog.py`](../scripts/assemble_changelog.py)
86from a Git working copy
87to move the entries from files in `ChangeLog.d` to the main `ChangeLog` file.