summaryrefslogtreecommitdiffstats
path: root/quip-0017-Change-log-creation.rst
blob: 79fcd95c06514d364484fc0e3c2e184b7e3c822f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
QUIP: 17
Title: Change log creation
Author: Mitch Curtis
Status: Active
Type: Process
Created: 2020-08-25
Post-History: https://lists.qt-project.org/pipermail/development/2019-November/037927.html

Overview
========

The Qt framework uses change logs as a means of informing users about new
features, important behavior changes, and bug fixes. Before each release, a
change log file is generated from the section of git commit messages that start
with the [ChangeLog] keyword.

Content
=======

Do include:
- Noteworthy features
- Significant changes
- Changes that affect many users
- Changes that affect compatibility
- Changes to information about third-party code (see QUIP-4)

Do not include:

- Fixes in tests
- Documentation fixes
- Pure code cleanup or refactoring
- Fixes for regressions introduced in not-yet-released commits
- Anything that is not relevant to users

Format
======

- A [ChangeLog] entry may span multiple lines and ends with an empty line.
- You may add more than one [ChangeLog] entry, each in a separate paragraph,
  if there are several ways the change affects users.
- Each entry starts with a sequence of tags, each in square brackets, the
  first of which is [ChangeLog].

  - If the Git repository contains multiple modules, use the module name as a
    tag to indicate the area of the change, e.g. [QtCore].
  - Optionally specify a class or subtopic as an additional tag, e.g.:
    [QtNetwork][QSslSocket]
  - Other common tags are:

    - [General]
    - [Important Behavior Changes]
    - [Potentially Source-Incompatible Changes]
    - [Deprecation Notices]
    - [Platform Specific Changes]
    - [Windows]
    - [macOS]
    - [Linux/XCB]
    - [Third-Party Code]
- After the tags, describe how the change impacts users of the relevant
  component.

  - Try to integrate the ChangeLog entry into the surrounding commit message to
    avoid redundancy.
  - If the change resolves a security issue, summarise the issue and mention any
    relevant `CVE <https://cve.mitre.org>`_ or kindred identifiers.
  - The description should use either simple past ("Fixed …") or be explicit
    about referring to the current state ("… does now …").
  - Make sure the entry is reasonably self-contained. If you fail to formulate a
    meaningful description, it's probably not useful information to start with.
- In summary, the entry should look like this: ::

   [ChangeLog][module][class/topic] description of the really important change
   that was just made (on several lines).

Tools
=====

The createchangelog tool in the qtqa.git module is currently the most
feature-complete tool for change log creation. Documentation for it
can be found in its README under src/createchangelog.