As a maintainer (mostly for a Ruby library) I’d love to see a github action that automatically updates releases based on a github tag and extracts the changelog from the manual file, as thats much easier to maintain when working on PRs / branches. So I guess consider that a plus one for manual files / tags, with additional automated tooling around updating GitHub etc.
On Thu, 19 Jan 2023, at 7:27 PM, Austin Ziegler wrote: > I mostly agree with Andrea. The benefit to a tool (especially one that > provides conventional-commits-like support without the header mistake that > conventional-commits makes) is that it could gather the commit messages into > a meaningful thing to assist in writing the changelog. Then again, one can do > this pretty easily with `git log LAST_TAG.. --format=%B --reverse | pbcopy`, > which I *also* do quite often in order to update a multi-commit PR message. > > I’ve heavily automated the production of the changelog for exactly one of my > projects and to some degree, it’s over-automated, but I have had no time to > pull it back into something more reasonable. > > -a > > On Thu, Jan 19, 2023 at 2:18 AM <an.leopa...@gmail.com> wrote: >> Hey Jonatan, >> >> Thanks for starting this discussion. >> >> I'm personally a fan of having changes described and available in >> CHANGELOG.md files at the root of each repository. This has the big benefit >> of not having to rely on an external service (GitHub) in order to check >> information about changes: all the information is available and >> self-contained in the repository. For this reason, in all of the >> repositories I'm involved with, we also use Git tags to tag releases. >> >> In general, for each release, we do something like this: >> >> * Update version in mix.exs >> * Go through commits since the last Git tag (that is, the last release) and >> put together a changelog entry. I personally find it important to do this >> manually and not in an automated way, since changelog entries are generally >> significantly shorter and more information-dense than just a list of commit >> messages. >> * Create a commit with the message being something like "Release vX.Y.Z" >> * Create the vX.Y.Z Git tag and push it to GitHub. >> * Release on Hex. >> >> This workflow should check the boxes you mention and also the ones I mention: >> * It leaves information about changes in the repository, making the >> repository self contained. >> * It's discoverable by tools, since tools can look for Git tags to know >> about releases. >> >> Elixir itself is not a great example to follow, because it has a more >> complex release process than probably any library out there. >> >> Last but not least, I'm not 100% convinced that we do need to standardize >> the community on an approach. >> >> Thoughts? >> >> Andrea >> >>> On 13 Jan 2023, at 17:12, Jonatan Männchen <jona...@maennchen.ch> wrote: >>> >>> Cool library, I definitely have to check that one out for some of the >>> internal projects I'm working on. >>> >>> I did think about Conventional Commits when writing this proposal but >>> decided to only include the publishing mechanism and not the contents of >>> the changelog / release notes. >>> The reason for this is, that something like Conventional Commits is a big >>> change in the development / workflows of the affected projects. >>> >>> If all involved parties are open to this massive change, it would open the >>> doors for a lot of pre-existing tooling like your library or Googles >>> release please. >>> >>> I'm not convinced myself that Conventional Commits are the way to go for >>> projects like those. The main issue I have with the convention is that >>> commits don't necessarily describe the intention of changes well. One could >>> for example make 5 commits about a specific topic but describe it as one >>> change in the release notes. >>> On Friday, January 13, 2023 at 3:32:41 PM UTC+1 zachary....@gmail.com wrote: >>>> Forgot the most relevant point: it can automatically include the generated >>>> release notes in the git tag that is generated which translates to release >>>> notes when pushed. >>>> >>>> >>>> >>>> >>>> >>>> On Fri, Jan 13 2023 at 9:31 AM, Zach Daniel <zachary....@gmail.com> wrote: >>>>> 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 <jon...@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-co...@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/603e9638-34bf-4cb6-ae75-c308322d6fbfn%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/elixir-lang-core/603e9638-34bf-4cb6-ae75-c308322d6fbfn%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/591D839A-C8EE-40F4-88AB-8B1E5AF59A71%40gmail.com >> >> <https://groups.google.com/d/msgid/elixir-lang-core/591D839A-C8EE-40F4-88AB-8B1E5AF59A71%40gmail.com?utm_medium=email&utm_source=footer>. > > > -- > Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca > http://www.halostatue.ca/ • http://twitter.com/halostatue > > > -- > 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/CAJ4ekQsn8Akf8x%2Bam7oZ3s6d_4FJg_EuJnO%2BSUdog5vXjxgJ%3Dw%40mail.gmail.com > > <https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQsn8Akf8x%2Bam7oZ3s6d_4FJg_EuJnO%2BSUdog5vXjxgJ%3Dw%40mail.gmail.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/40d3f2cf-be0f-4634-9dfc-13fd25500003%40app.fastmail.com.