blob: d2ea73d1c211e8dad56f95303bba0a5c8a56157b [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.
Gilles Peskineece00a02020-09-30 01:16:59 +020024
Gilles Peskinee9a1e132020-10-01 00:35:49 +020025Until Mbed TLS 2.24.0, we required changelog entries in more cases.
Gilles Peskineece00a02020-09-30 01:16:59 +020026Looking at older changelog entries is good practice for how to write a
27changelog entry, but not for deciding whether to write one.
28
Gilles Peskineb695d5e2020-03-27 20:06:12 +010029## Changelog entry file format
30
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010031A changelog entry file must have the extension `*.txt` and must have the
32following format:
33
34~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35Security
36 * Change description.
37 * Another change description.
38
39Features
Gilles Peskineb695d5e2020-03-27 20:06:12 +010040 * Yet another change description. This is a long change description that
41 spans multiple lines.
Gilles Peskine7c3f7cd2020-03-27 19:47:35 +010042 * Yet again another change description.
43
44~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45
Gilles Peskineb695d5e2020-03-27 20:06:12 +010046The permitted changelog entry categories are as follows:
47<!-- Keep this synchronized with STANDARD_CATEGORIES in assemble_changelog.py! -->
48
49 API changes
50 Default behavior changes
51 Requirement changes
52 New deprecations
53 Removals
54 Features
55 Security
56 Bugfix
57 Changes
58
Gilles Peskineece00a02020-09-30 01:16:59 +020059Use Changes for anything that doesn't fit in the other categories.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010060
61## How to write a changelog entry
62
63Each entry starts with three spaces, an asterisk and a space. Continuation
64lines start with 5 spaces. Lines wrap at 79 characters.
65
66Write full English sentences with proper capitalization and punctuation. Use
67the present tense. Use the imperative where applicable. For example: “Fix a
68bug in mbedtls_xxx() ….”
69
70Include GitHub issue numbers where relevant. Use the format “#1234” for an
71Mbed TLS issue. Add other external references such as CVE numbers where
72applicable.
73
Gilles Peskine3b4edc72020-09-30 01:13:05 +020074Credit bug reporters where applicable.
Gilles Peskineb695d5e2020-03-27 20:06:12 +010075
76**Explain why, not how**. Remember that the audience is the users of the
77library, not its developers. In particular, for a bug fix, explain the
78consequences of the bug, not how the bug was fixed. For a new feature, explain
79why one might be interested in the feature. For an API change or a deprecation,
80explain how to update existing applications.
81
82See [existing entries](../ChangeLog) for examples.
83
84## How `ChangeLog` is updated
85
86Run [`../scripts/assemble_changelog.py`](../scripts/assemble_changelog.py)
87from a Git working copy
88to move the entries from files in `ChangeLog.d` to the main `ChangeLog` file.