-
Notifications
You must be signed in to change notification settings - Fork 52
SPEC 10: Add an initial draft for a SPEC about release documentation #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 3 commits
7369c62
32c5880
01c5a33
90d6396
9da9a55
0a35d21
b781266
585ba4e
1e6f765
d3ba716
82d19b1
e513232
03328c9
3d6a103
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
--- | ||
title: "SPEC 10 — Changelog" | ||
number: 10 | ||
date: 2024-06-03 | ||
author: | ||
- "Inessa Pawson <[email protected]>" | ||
discussion: https://discuss.scientific-python.org/t/ | ||
endorsed-by: | ||
--- | ||
|
||
## Description | ||
|
||
SPEC 10 provides guidelines and best practices for maintaining a changelog file | ||
for libraries in the Scientific Python ecosystem. | ||
|
||
### Core Project Endorsement | ||
|
||
<!-- | ||
Briefly discuss what it means for a core project to endorse this SPEC. | ||
--> | ||
|
||
### Ecosystem Adoption | ||
|
||
The endorsement of this SPEC signifies your project's support for the guidelines | ||
laid out in the document. | ||
|
||
## Implementation | ||
|
||
Keeping a clear, organized, and human-readable record of notable changes for each | ||
version of a Python library is essential for the project’s maintenance and sustainability. | ||
It promotes transparency and trust between the project’s leadership team, developers, and users. | ||
|
||
### What Is a Changelog? | ||
|
||
A changelog is a file which contains a curated, chronologically ordered list of | ||
notable changes for each version of a project. | ||
|
||
### Guiding Principles | ||
|
||
- Changelogs are meant for humans, not machines. | ||
- Every version should have an entry. | ||
- Group similar types of changes together. | ||
- Make versions and sections linkable. | ||
- List the most recent version first. | ||
- Display the release date for each version. | ||
- Indicate if you follow Semantic Versioning. | ||
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
### Types of Changes | ||
|
||
- **Added**: New features. | ||
- **Changed**: Modifications in existing functionality. | ||
- **Deprecated**: Soon-to-be-removed features. | ||
- **Removed**: Features that are now removed. | ||
- **Fixed**: Bug fixes. | ||
- **Security**: Vulnerability fixes. | ||
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Standard Changelog Format | ||
|
||
There is not one standard changelog format. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should at least list some that are recommended (and give reasons why they are recommended)? |
||
|
||
ADD EXAMPLES | ||
|
||
### Naming the Changelog File | ||
|
||
CHANGELOG, HISTORY, NEWS, or RELEASES are widely accepted names for changelog files. | ||
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### GitHub Releases | ||
|
||
TO DO | ||
InessaPawson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Automation | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. actions to be used by either towncrier systems or by direct edits of a single changelog file (both approaches have legitime use cases): https://github.com/scientific-python/action-towncrier-changelog There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. quasi-automation: I do run cosistency checking scripts before cutting a release to ensure all PRs in a release either have a changelog, or e.g. a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it would be useful to gather info from projects which use more niche workflows (like SciPy) on what stops them from moving to an automated tool, to help guide readers. There is generic dev workflow churn, but any other reasons are probably more informative. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @lucascolley Yes, there are always exemptions. Could you point me to the SciPy documentation that covers this part? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is a bit of documentation at https://scipy.github.io/devdocs/dev/core-dev/index.html#release-notes. We recently also introduced a "needs-release-note" tag to try to reduce the chance that PRs are missed. |
||
|
||
TO DO | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would recommend adding a link to the PyPI instructions for automation here: https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. but this document is not about releasing, but just the changelog, and thus automation for me means e.g. the github actions checking the existence of a changelog, or the changelog framework itself, e.g. creating one single changelog file from the fragments for towncrier There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In my mind, generating the changelog and the release are tightly coupled and usually happens at the same time, so for any automation to happen it would be in the same file. here is an example of an automated release pipeline generated with the above docs that also generates release notes automatically: https://github.com/duckdb/dbt-duckdb/blob/master/.github/workflows/release.yml There is also a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like to have the changelog available, and complete/correct during the dev process already, it's quite useful for big projects, but I also find it somewhat useful to enforce the presence the changelog at the time a contribution is made |
||
|
||
### Editing a Changelog | ||
|
||
It is generally acceptable to edit a changelog for the following reasons: | ||
|
||
- maintaining accuracy of the records about the changes in each release (e.g., | ||
adding essential information that was left out when the initial changelog was published) | ||
- improving clarity and readability of the change log. Try to avoid nitpicking when | ||
making edits to the changelog. | ||
|
||
## Notes | ||
|
||
<!-- | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Another thing @InessaPawson and I chatted about is to provide a template for a GitHub profile readme that shows OSS/Scientific Python contributions: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @guenp After giving it more thought, I wonder if this info belongs to the SPEC about release documentation. I will keep the conversation open to gather feedack from others. |
||
Include a bulleted list of annotated links, comments, | ||
and other ancillary information as needed. | ||
--> |
Uh oh!
There was an error while loading. Please reload this page.