keep-a-changelog icon indicating copy to clipboard operation
keep-a-changelog copied to clipboard

No good way to handle changelogs for larger teams

Open Shardj opened this issue 5 years ago • 8 comments

Just having a changelog file which you write to during development is fine for smaller teams. But with larger teams this will cause git conflicts. Also it doesn't work very neatly with any kind of automated deployment as you need to manually change the unreleased tag to the version it's deploying under or use something like sed which would be very unrobust.

I don't know if any libraries exist for this (something I'm looking for) but I'd suggest each new change for the changelog is actually written as a file in a set "changes" directory. This way you get no conflicts as long as you name files after their ticket. And you can automatically write the changes to your main changelog file during packaging/build. Do this by simply adding the date and new tag/release version number to your changelog, then reading files in the changes directory and postpend their contents to the changelog file in whatever format you like, then remove the contents of the changes directory.

If this doesn't exist and the idea interests anyone I'll make a library for it.

Shardj avatar Apr 23 '19 09:04 Shardj

I threw together a quick bash script with the basic functionality of what I'm describing https://github.com/Shardj/teamchangelog

Shardj avatar Apr 24 '19 10:04 Shardj

FWIW: GitLab has a similar approach as you described. More info can be found at https://docs.gitlab.com/ee/development/changelog.html and https://gitlab.com/gitlab-org/gitlab-ce/tree/master/changelogs/unreleased

zanseb avatar May 22 '19 09:05 zanseb

Thanks @zanseb that does look like exactly what I wanted. Still looking out for other solutions though if anyone else knows of any although at this point I'm probably going with my custom built solution.

Shardj avatar May 22 '19 11:05 Shardj

SymPy uses a bot + PR template [1] which helps contributors write Changelog entries. SymPy has a lot of first-time contributors and for example, that bot points them at appropriate docs.

[1] https://github.com/sympy/sympy/wiki/Writing-Release-Notes

cbm755 avatar Jun 04 '19 07:06 cbm755

Hi @Shardj I thought for a moment your original statement, but monolithic applications came to my mind when you mentioned large teams, I think this is more suitable for microservices and two-pizza teams, which from my experience is the path the industry is following. This is of course not a rule, and I do respect large applications and large teams, but perhaps they need a different mechanism to trace logs.

iocampomx avatar Jun 09 '19 18:06 iocampomx

Hi @Shardj I thought for a moment your original statement, but monolithic applications came to my mind when you mentioned large teams, I think this is more suitable for microservices and two-pizza teams, which from my experience is the path the industry is following. This is of course not a rule, and I do respect large applications and large teams, but perhaps they need a different mechanism to trace logs.

I absolutely agree, my reasoning is this: keep-a-changelog's suggestion for changelogs pushes itself as the main standard and is suggested everywhere I look on the web. But it completely fails to address the issues I mentioned for large teams. I simply hoped a well maintained library that someone knows of could solve the issues and be mentioned on keep-a-changelog for those who are looking for something more.

Shardj avatar Jun 09 '19 23:06 Shardj

https://github.com/olivierlacan/keep-a-changelog/issues/56 helps for some use cases

GrahamTheCoder avatar Jun 16 '19 09:06 GrahamTheCoder

For what it's worth, the approach described in the original issue description is the one that core Python uses. There's a custom tool called blurb which manages creating the news entries and putting them in the right place, along with a GitHub bot that checks that every PR has a news entry (unless there's an explicitly added label saying that a news entry is unnecessary). I don't know to what extent it's possible to use blurb for projects other than core Python.

blurb: https://github.com/python/core-workflow/tree/master/blurb

mdickinson avatar Sep 02 '20 15:09 mdickinson