Hi, To play devil's advocate: do we really need a CHANGELOG file? :)
I agree that we need to inform users about breaking changes and user-facing updates. However, we could simply use a "breaking-change" label on GitHub PRs and automatically populate the Release Notes at release time, rather than manually maintaining a CHANGELOG. The remainder of a typical CHANGELOG is essentially just a git log, which most users do not read anyway. I have successfully used this approach across several ASF projects. Thoughts? Regards, JB On Tue, Oct 6, 2026 at 7:08 PM Ayush Saxena <[email protected]> wrote: > Hi Everyone, > +1 on trying to find some way around solving CHANGELOG conflicts. Some > numbers in case they help make the case: over the last 60 days, 75 of > 339 commits on main touched CHANGELOG.md — roughly one in four and a > half. Every one of those is a potential conflict with every other, and > none of them is a real logical conflict. > > On Yufei's two points: > > ASF headers — I don't think fragments need them. rat already has an > exclusion list in build.gradle.kts (the RatTask block around line 55), > and it already excludes a Markdown file on exactly these grounds: > .github/pull_request_template.md. Adding changelog.d/** is one line. > Worth double checking though — but they never ship in a release > artifact, since they're consumed and deleted before the RC is cut, so > I think ASF header isn't required. > > Multi-PR features — this gets easier rather than harder. Today a > follow-up has to edit shared lines in CHANGELOG.md; with fragments it > edits or deletes one file its own feature owns, so follow-ups stop > colliding with unrelated work. > > One thing worth settling in the PR: > > Naming. changelog.d/pr-1235.md has a chicken-and-egg problem: you > don't know the PR number until the PR exists, so the first push never > has the right name. Allowing a short slug > (changelog.d/ranger-implied-grants.md), or keying off the issue number > where one exists, avoids the extra round trip. towncrier's convention > is <issue>.<type>.md with a +<slug>.md escape hatch for changes with > no issue. > > Robert's point changes my view somewhat. If resolving in the UI > doesn't dismiss the approval, the per-conflict cost is much lower than > I assumed. The one cost it does leave is CI: that merge commit re-runs > the entire pipeline for a one-line docs change.This mostly should be > solvable, that we don't trigger the entire CI flow when the change is > only in the CHANGELOG. With that plus a line in the PR template about > resolving in the UI, I think the lighter option is a genuine > alternative to the fragment directory rather than just a stopgap. > > -Ayush > > On Tue, 6 Oct 2026 at 22:23, Robert Stupp <[email protected]> wrote: > > > > CHANGELOG.md entries are usually resolvable via the GH UI. > > > > I did that today and it only required removing three Git conflict marker > > lines in total. That ended in a "merge" commit generated by GH that > didn't > > even require another approval of the PR. > > > > On Tue, Oct 6, 2026 at 6:41 PM Yufei Gu <[email protected]> wrote: > > > > > Hi Alex, > > > > > > Thanks for raising this point, it is definitely a pain point. > > > > > > To address it, I think we could create a file named after the PR > number, > > > such as changelog.d/pr-1235.md. > > > > > > A few overhead items and concerns to consider: > > > > > > 1. ASF Headers: New files will require ASF headers. While this is a > bit > > > verbose, it should be fine. > > > 2. Multi-PR Features: We may need to update the changelog when a > feature > > > is split across multiple small PRs. We could allow follow-up PRs to > modify > > > or even remove the changelog entry created by a previous PR. It should > be > > > fine as well. > > > > > > I'm open to other ideas as well. > > > > > > Yufei > > > > > > > > > On Tue, Oct 6, 2026 at 9:05 AM Alex Dutra <[email protected]> wrote: > > > > > > > Hi all, > > > > > > > > Almost every PR that touches user-facing behavior adds an entry under > > > > "## [Unreleased]" in CHANGELOG.md. Since all of those PRs edit the > > > > same few lines, they regularly conflict with each other. Contributors > > > > and reviewers then spend time rebasing and re-resolving a file that > > > > has no real logical conflicts. > > > > > > > > I'd like to propose a process change that removes this problem: > > > > instead of editing CHANGELOG.md directly, each PR adds its own small > > > > file under a new changelog.d/ directory. Because two PRs never edit > > > > the same file, they can't conflict. At release time, a script > > > > assembles the fragments into CHANGELOG.md and deletes them. > > > > > > > > What do you think? If you like the idea, I can draft a PR and flesh > > > > out the details. > > > > > > > > Thanks, > > > > Alex > > > > > > > >
