My library git_ops https://github.com/zachdaniel/git_ops is a native elixir 
solution for managing a change log with tags for releases. Im sure it could be 
improved, but it’s a solid foundation that a lot of people are using today. 
Plus, the conventional commit format is a well known already specified pattern: 
https://www.conventionalcommits.org/en/v1.0.0/

It provides a mix task that automatically determines the next version based on 
the types of commits, and writes any relevant commits to a changelog file.

In standardizing the changelog practices, you could also standardize the 
commit/next version practices.

On Fri, Jan 13 2023 at 6:28 AM, Jonatan Männchen < jona...@maennchen.ch > wrote:

> 
> Hi Everyone,
> 
> I had a discussion with Andrea (@whatyouhide) about how to handle
> changelogs in elixir itself as well as core libraries.The way how those
> libraries implement changelogs is important both to auto-discovery of
> changes with auto updating tools like renovate and also because it is a
> place for guidance / inspiration for independent library creators.
> 
> 
> This proposal is only about the mechanism of publishing changelogs. It is
> not about the contents.
> 
> 
> *Current state:*
> 
> 
> 
> * Core
> 
> * Elixir
> 
> * per minor release: CHANGELOG.md file
> * GitHub release is automatically created
> * Artifacts are stored in release
> * manual copy of text into GitHub release
> 
> 
> 
> * ExDoc
> 
> * global CHANGELOG.md file
> * manual copy of entry into GitHub releases
> 
> 
> 
> * GenStage
> 
> * global CHANGELOG.md file
> * no GitHub releases
> 
> 
> 
> * ElixirMake
> 
> * global CHANGELOG.md file
> * no GitHub releases
> 
> 
> 
> 
> 
> 
> * Phoenix
> 
> * per minor release CHANGELOG.md
> * some GitHub releases were created, not up-to-date
> 
> 
> 
> * Tzdata
> 
> * global CHANGELOG.md
> * no GitHub releases
> 
> 
> 
> * Jason
> 
> 
> * global CHANGELOG.md
> 
> * manual GitHub releases
> 
> 
> 
> 
> * Plug Cowboy
> 
> * per major version CHANGELOG.md
> 
> * manual GitHub releases
> 
> 
> 
> 
> * Telemetry
> 
> * global CHANGELOG.md
> * outdated GitHub releases
> 
> 
> 
> 
> 
> 
> 
> *Possibilities for standardization:* (i can think of, reply with others if
> you think something is missing)
> 
> 
> 
> 
> * Only CHANGELOG.md
> 
> * Changelogs are written by hand and not published via GitHub releases
> * Drawbacks
> 
> * Hard to automatically discover changes (for example Renovate Bot)
> * not as well integrated in GitHub itself as GitHub releases
> * does not support extra artifacts like binaries
> 
> 
> 
> * Advantage
> 
> * simple
> * no extra manual labor
> 
> 
> 
> 
> 
> 
> * CHANGELOG.md + GitHub releases manual copy
> 
> * On release the CHANGELOG.md file is extended with no information. After
> the release the notes are copied over into a new GitHub release manually.
> * Drawbacks
> 
> * Needs extra manual labor
> * Entries can be missing because people forgot to do it
> 
> 
> 
> 
> 
> 
> * CHANGELOG.md & Automated GitHub release note
> 
> * On release the CHANGELOG.md file is extended and a GitHub workflow will
> parse the CHANGELOG.md and use the text to create a release.
> * Drawbacks
> 
> * Introduces some complexity & maintenance by adding CI workflows
> 
> 
> 
> 
> 
> 
> * GitHub releases & automatic appending of CHANGELOG.md file with release
> notes
> 
> * To release a person would create a GitHub release and a workflow would
> automatically prepend the changes to the CHANGELOG.md file
> * Drawbacks
> 
> * Same as the option before
> 
> * Workflow is more complicated because it would need to commit code by
> itself
> * Imposes a more rigid process on the release workflow while other options
> are more flexible.
> 
> 
> 
> 
> 
> 
> * Only GitHub releases
> 
> * Changes are only published via GitHub releases
> * Drawbacks
> 
> * not portable if the community ever migrates away from GitHub
> * the CHANGELOG.md file does either not exist in published libraries or
> would need to be generated on demand out of the releases
> 
> 
> 
> 
> 
> 
> 
> 
> *My personal favorite solution so far:*
> *
> *
> CHANGELOG.md & Automated GitHub release note
> 
> 
> The reason for that preference is that it is relatively easy to automate
> and that it offers the best if both worlds.
> 
> 
> *Implementation*
> *
> * I’m happy to provide a shared action as well as PRs for all core
> libraries.
> 
> 
> Such a shared action could possibly be hosted at ErlEF since it could be a
> „community recommendation“.
> 
> 
> Thanks & Best,
> Jonatan
> 
> 
> 
> 
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/7744dfd3-e94e-45ed-bb10-ca6d5c732550n%40googlegroups.com
> (
> https://groups.google.com/d/msgid/elixir-lang-core/7744dfd3-e94e-45ed-bb10-ca6d5c732550n%40googlegroups.com?utm_medium=email&utm_source=footer
> ).
> 
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/lcum3vai.3a0f4bc0-3666-4af2-90bc-8381592ba17b%40we.are.superhuman.com.

Reply via email to