🔗 Stop Using Conventional Commits →
You've almost certainly encountered Conventional Commits before. It may have reared its ugly head in the changelog of an open source project you've used. It may have been the enforced commit format for an open source project you contributed to. A lot of people swear by it. I swear at it.
Even though it is used by a large number of popular open source projects, Conventional Commits is an actively bad standard which encourages focus on the wrong things and fails to deliver on its promises.
I've recently tried to use conventional commits in some personal projects (mainly because Renovate Bot uses them), and I've got to say: I really don't think I like them.
The article gets into it, but e.g., if I expose additional functionality higher up that an already included library provides OOTB, is that a feat or a fix? I also could argue both.
But the argument that sealed it for me was the "if I'm debugging a PROD bug, do I care if it came about a feat or a fix or a chore?" No! I want to know what touched those subsystem's files, dependencies, or configs. chore(dep): upgrade doesn't give me anything; render: dependency upgrade tells me everything.
All that being said, throughout my professional life, I've had a ticketing system1 back every change we made. So I've gotten used to, and have enforced on other projects, this commit message format:
[PROJ-123] a really good one-liner description
- Additional comments about the change, usually delivered in grammatical English prose. I usually go with bullet points of changes, but that's optional.
- Basically, I would say that your entire reasoning for the change should be placed in the commit. If it was obviously explained in the code, that's great. Otherwise, it's got to go in the code comments or the commit message.
-- Another maintainer *hated* code comments because he argued that they quickly became out-of-date. I couldn't argue against that.
- I then told the story of how I once made a commit message whose body began with "Grab a cup of coffee, and let's talk about this."
- Commit messages can (and should) be long, y'all
Okay fine. It was always JIRA. ↩