frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Stop Using Conventional Commits

https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/
74•jsve•59m ago

Comments

m_m_carvalho•39m ago
As a solo developer, I rarely struggle to remember what changed yesterday. I often struggle to remember why I made a decision six months ago.

Conventional commits are most valuable to me as historical context rather than as a release-management tool.

The larger the project becomes, the more useful that context gets.

radlad•31m ago
This sounds like what regular commit messages do. How are conventional commits specifically helpful?
d0mine•21m ago
Conventional commits (especially with git emojis) show at a glance the blast radius of the change (eg whether it breaks the product itself or just some internal dev tools). Emojis help immensely when looking at dozens of commits at a time.
cperciva•31m ago
That information should still be in the commit messages. "No functional change intended." appears widely in FreeBSD commit logs when code is being refactored (or, rarely, restyled).

And the issue isn't whether you can remember what you changed yesterday; this is largely about making sure other developers can quickly identify relevant commits. If you're a solo non-OSS developer, this is entirely relevant to you.

nailer•39m ago
Asides from the well made points here ('scope is more important than type' etc).

> something like fix, feat, chore, docs, or refactor

'Docs' are also part of the program, they need fixes too, and features need docs. If the docs don't match the features because they're not being updated when the code is, the docs are a lie and waste other developers time.

Also if you were writing a standard: why would you randomly abbreviate 'feature' but not 'refactor'? That sounds like a nitpick but standards require great thought, this is a bit of a smell that there hasn't been much thought into designing 'conventional commits'.

Finally: the name 'Conventional commits' is a land grab (reminds me of when someone made a JS Standard and called it 'StandardJS', ignoring every existing popular standard). From the article, the *actual* convention is 'scope: work"

- Linux

  subsystem: description
- FreeBSD

  prefix: description
- Git

  area: description
- Go

  package: description
- nixpkgs

  pkg-name: description
d0mine•12m ago
In practice, when conventional commits are used with git emojis, they look like “scope: what is done” already (“<emoji> <issue-id> scope: …”)
brzz•38m ago
“The audience of a changelog is entirely different than the audience for a commit log!

A changelog is user-facing”

I'd say that ship has probably sailed. Most companies are happy with “Bug Fixes & Performance Improvements”. At least if they're not going to put the effort in, then a generated changelog is better than nothing.

karmakaze•30m ago
The best thing that I'd used for auto-updated software with weekly updates was to prefix user-facing visible commits with "uv:" Then each week we search for them and either use the text as-is or massage it slightly. We even got it into the product itself in the Help/Release-notes menu.

Funny to ask to stop doing something I don't do or never even heard of. I typically only mark database schema migrations or other major things with special prefixes.

beart•9m ago
I like this idea, but could see it working better as a git trailer to avoid adding noise to git log
shmerl•38m ago
I don't care much what it says as in "fix", "chore" etc, but for me the main benefit is breaking changes indicated with "<type>!", something like "feat!: ... ".

This makes neovim plugin manager highlight the change differently which brings attention to it when you update stuff.

So please do use it instead of complaining!

I do like the suggestion of

scope!: ...

if it will be treated the same way with breaking changes reactions.

gdss•32m ago
dumb take, next
rootnod3•11m ago
Elaborate?
akersten•30m ago
The author's example of a conventional commit is not correct anyway IMO, which is maybe why they think the "fix" part is redundant:

> fix: prevent foo from bar'ing

The whole idea of conventional commit is:

> fix: [problem]

so the correct conventional commit would be:

> fix: foo bar'ing

which is succinct and perfectly fine.

chrismorgan•27m ago
What you describe doesn’t match <https://www.conventionalcommits.org/en/v1.0.0/>’s examples, or any practice I’ve ever seen.

> fix: prevent racing of requests

Though the example in the actual specification, “fix: array parsing issue when multiple spaces were contained in string”, is more inconclusive (and frankly doesn’t really make sense as a description).

darknavi•17m ago
I agree, the default change logging using something like semantic-release would result in this, which feels way off:

# Bug Fixes

- foo bar'ing

SebastianKra•16m ago
yep. I'm on the fence about types generally, but "fix:" saves/standardizes a bunch of phrases like "fix an issue where", "prevent" or having to invert the message by describing the solution instead.
chrismorgan•30m ago
I have long despised Conventional Commits for pretty much these reasons. Yes, it’s structure, but it’s not useful structure. Of the five things it claims to enable, three are nonsense and the other two are actively bad.

And it’s ugly.

(But I suppose I am talking primarily about the first line part. The “BREAKING CHANGE” bit is potentially actually useful, though being incompatible with git-interpret-trailers despite leaning on git-interpret-trailers for other footers seems a bit crazy.)

mh-cx•30m ago
My main complaint with conventional commits always was that they don't include an issue number in the commit title. It's not even mentioned in their standards as optional or something.

To me this is almost the most important information in a commit message. I don't know how often in the last 15 years I was cross checking the issue description referenced by some old commit to get the full context of a change. I also felt that this habit is kind of standard - until i had to learn about "conventional commits".

I never got the hype.

IshKebab•25m ago
Why do you even want the issue number in the commit title? I find that super annoying and unfortunately GitHub kind of forces it on you if you use merge queues.

It's fine for it to be in the description.

alanwreath•17m ago
It’s very helpful to know the motivation for the commit and if that motivation was tied to a client contract/feature. Especially in cases where a commit affects multiple files or even just one file so that all commits can be grouped into a feature/contract.
hebleb•12m ago
If i'm looking at git history, the ticket number is the most useful piece of info to get more context on the changes for me
jadar•24m ago
Personally, if I am skimming a change log that is already limited in characters, I don’t care about ‘XYZ-999999’ in the main commit message. It’s good to tag as a trailer but I’d much rather see what the commit did than the Jira issue it came from.
IshKebab•28m ago
Couldn't agree more with this. The commit type tells me almost nothing and just wastes my time skipping over it. Scopes are way more useful.
voakbasda•8m ago
Many great developers seem to agree, based on the list of conventions use by the infrastructure scale projects covered in the article.
skydhash•27m ago
Mine is “ticket id - Imperative phrase”. Then I write a “why” description of the changes if needs be. As for personal project, I quite like the scoped commits style.
RVuRnvbM2e•24m ago
The thing conventional commits are really helpful for is continuous delivery. Every merge to main can be automatically tagged with semver and shipped because the thought that goes into tagging and versioning has already been done by the developers when they wrote the commit message.

I fully recognise that it doesn't make sense for huge projects like the Linux kernel to do this. But for 99% of projects conventional commits combined with semver vastly improves the release process status quo and makes it easy to automate.

herpdyderp•21m ago
I do this on my OSS projects to automate semver bumps and it's amazing! At work, I also enforce "tags" (not git tags, just strings in the PR title) based on who cares about the change and then generate changelogs for the respective teams based on those "tags".
docheinestages•24m ago
I think some structure in commit messages is helpful, but not to the point where it gets in the way of effectively reflecting what the commit contains, why it was done, and any comments for future reference, e.g. potential regressions.
Benjamin_Dobell•23m ago
Odd. The main reason to use this style of commit message is for CI/CD automation.

EDIT: I didn't see this covered in the article on my first pass. It is covered though. My apologies.

The type of the commit informs the automated workflows how to handle the commit. This is why it comes first.

For example, if you're performing CD, if you only commit a bunch of `fix: ` then only your semantic versioning patch version number is incremented. If you commit a `feat: ` then it's a minor version is bump. `feat! ` is a major version bump.

Even if you're not using CD for releases, semantic commit messages are sometimes used to automate change log generation. Granted, your change logs should not typically include the Git commit messages themselves — those are developer facing, not user facing.

drfloyd51•20m ago
No no. You see we need to get rid of conventional commits so AI can make commits easier.
layer8•15m ago
I’m pleased to report that TFA is unrelated to AI.
mcluck•19m ago
The article addresses both of these pretty clearly. Semantic versioning gets borked with reverts and the automatic changelog is targeting the wrong audience
beart•12m ago
The article is wrong about reverts (in my opinion). If a breaking change is introduced, and then removed, the removal should also most likely be considered a breaking change (both the addition and removal are changing your API). So it is correct that a major version bump should occur when reverting. Once a package has been published, the ship has sailed.
sandstrom•20m ago
I totally agree.

If one needs to put metadata in commits, usually better to just put it in a Git trailer.

https://git-scm.com/docs/git-interpret-trailers

`Co-authored-by: Alice` is a common one, but you can have anything in there.

jmull•20m ago
There’s a much less awkward way to keep a change log:

Keep a change log.

jsve•12m ago
I 100% agree. I found https://keepachangelog.com/en/1.1.0/ as I was writing the article which advocates for exactly this!
codingjoe•19m ago
I think any notation is use case specific and should be adapted to beat serve its domain.

However, actually writing a good commit message is an art form few have mastered.

I wrote a small natural language linter to teach my teams meaningful technical writing: https://github.com/codingjoe/word-weasel

flakiness•19m ago
I see more of these conventional commit-style comments recently and it feels like coming from Claude Code etc. It's a bit unsettling that not only training data but also random lines in the default system prompt affects this kind of software development norms in subtle and pervasive ways.
jsve•17m ago
I've seen Claude Code aggressively use Conventional Commits, even when the project its working on doesn't use them.
skerit•19m ago
And then you have me, using gitmoji
bowlofhummus•18m ago
I really dont care about commit messages. Just create strict rules for branches that contains issue nr + description, and squash all commits on merging the PR.
xg15•18m ago
This entire essay is just about how it should be "<scope> <optional type>" instead of "<type> <optional scope>"?
codybloem•16m ago
I quite dislike this style of writing titles. "Stop something". I seems very popular. It sounds very commanding and "I am definitely right about this". Why not write "In favour of something" or "A case against something" or something like that?
voakbasda•12m ago
Why not be direct and advocate clearly for the position that you prefer? You don’t have agree with their position, but asking them to water down their words is weak sauce.
some_furry•10m ago
https://knowyourmeme.com/memes/stop-doing-math

There is a meme that inspires some of this genre of title, fwiw

lardissone•6m ago
I came to say something similar.

I don't like conventional commits much neither, but let the people use whatever they want!

chrishill89•14m ago
Want machine-readable? Use the footers/trailers.

I can not say anything nice about conventional commits. The format takes up space in the most-read part of the message. The categories or types have little information. They can be replaced with an honest English verb embedded in the subject like a sentence. It also reads way better with just a sentence instead of three kinds of punctuation (:, (), !). Okay, I can tolerate an "area" in the subject. And that predates this conventio.

At my dayjob we make a webapp for non technical people. I can write a changelog for that just fine (in norwegian). The commit messages are irrelevant to the users. And demanding that all commits should be good enough for an end-user changelog? That's not happening for us anytime soon.

Use footers/trailers instead.

agentultra•12m ago
Definitely agree that generating change logs from commits leads to confusing change logs for people that expect to see what changed between versions. A big long list of commits is too granular. A curated and summarized list of changes is much more in-line with what most people expect when reading a change log.
dotwaffle•9m ago
The use of the word "chore" in many users of conventional commits has always riled me. I've always tended to favour the "linux kernel"[0] style of commit subject, which thankfully gets a mention here.

[0] https://www.kernel.org/doc/html/v7.0/process/submitting-patc...

jsve•8m ago
You might enjoy Rich's take: https://richvdh.org/conventional-commits-considered-harmful....
ralferoo•9m ago
The real takeaway is that different projects have different requirements.

In over 30 years of using source control, I've never once worked on something where it's useful to include the component (article calls it scope) in the description in a standardised way. It's obvious what components are affected based on where in the source tree the affected files are. Similarly "bug", "fix" or "feature" adds no useful value. It's important or it wouldn't be checked in.

The only thing I've found useful, and which the article doesn't even consider, is a link / id for the relevant change request. The commit already contains all the information about what was done in the change, what's missing is the context about why.

Even on my solo projects I include a JIRA reference in square brackets before the description. If it's just something I randomly decided to fix during the course of development, I'll create a short 1 line JIRA to get an id and explain the why there.

beart•24m ago
It isn't a standard, it is a convention. You can set a standard within your team to include the ticket id in the commit message.
a-dub•22m ago
yeah this is the actual key. an actually useful title and a stable link to the discussion around the change.

conventional commits are pleasing, but questionable actual utility. the code speaks for itself. the actually useful information is a well chosen title and the context for the change.

AlbinoDrought•17m ago
Interesting, I guess we've been doing it wrong this whole time, as we do `fix(ABC-123): some message here`, which ends up being linked great, renders very nicely into the automated release notes, etc.
jibcage•14m ago
I personally prefer including issues as git trailers:

    fix thing in foo

    Issue: ABC-123
Git has plenty of builtins for parsing and formatting these trailers, so you can easily create custom git log aliases that let you see them inline and parse them for use with CI.
chrishill89•9m ago
IMO that is only a problem for those who demand that the issue key needs to go first in the subject (which again IMO is bad for readability). I don't see why you can't just stick it somewhere after all the conventional commits junk? Issue keys ought to be something that can be janked out based on a regex like an alphanumeric prefix followed by a number, so things like this "standard" have little need to set aside a space for it.

Personally (without conventional commits) I tend to put them at the end in parentheses if the commit has something to do with that issue. But if there is a stronger relationship like that it fixes the issue, I put a `Fixes` trailer in the message as well.

layer8•9m ago
The issue is that if there was no release in between, or only a beta or similar, you now have two breaking changes indicated by the commits, although in sum there is none since the last official release.
Benjamin_Dobell•11m ago
My apologies, I missed this on first read due to the indentation style. That said, I don't agree on the commentary.

Why on Earth are people not writing commit messages for their reverts? They should have semantic commit messages just the same as any other commit.

Unless the point is that they're not following per-commit CD, and if you commit then revert that commit before a release was made. That sounds like a process failure. Which of course, process isn't infallible, and neither is the automated version management. If you screw up, use an escape hatch — just like reverting a commit that had previously gone through code review and been merged.

Re: change log generation. The article says change logs shouldn't have commit messages. I agree. Many tools (e.g. Changeset https://github.com/changesets/changesets) use the semantic commit take to sort commit messages, but require you to write user facing change log entries separately.

Astronauts on ISS told to shelter as repairs under way to fix air leaks

https://www.bbc.com/news/live/c4g44ew3g1kt
139•janpot•1h ago•77 comments

pg_durable: Microsoft open sources in-database durable execution

https://github.com/microsoft/pg_durable
48•coffeemug•39m ago•12 comments

Mouseless – keyboard-driven control of macOS/Linux/Windows

https://mouseless.click
259•riddley•2d ago•118 comments

Cooldown Support for Ruby Bundler

https://blog.rubygems.org/2026/06/03/cooldown-let-new-gems-be-vetted.html
76•calyhre•2d ago•13 comments

Tracing a powerful GNSS interference source over Europe

https://arxiv.org/abs/2606.03673
273•mimorigasaka•8h ago•122 comments

I tested every IP KVM in my Homelab

https://www.jeffgeerling.com/blog/2026/i-tested-every-ip-kvm/
48•vquemener•2h ago•10 comments

Redis 8.8: New array data structure, rate limiter, performance improvements

https://redis.io/blog/announcing-redis-8-8/
140•ksec•2d ago•62 comments

Dutch gov't will only allow European company to operate DigiD platform

https://nltimes.nl/2026/06/05/dutch-govt-will-allow-european-company-operate-digid-platform
74•TechTechTech•1h ago•22 comments

Stop Using Conventional Commits

https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/
79•jsve•59m ago•63 comments

C++: The Documentary

https://herbsutter.com/2026/06/04/c-the-documentary-released-today/
287•ingve•12h ago•201 comments

Changing how we develop Ladybird

https://ladybird.org/posts/changing-how-we-develop-ladybird/
678•EdwinHoksberg•9h ago•447 comments

Entanglement Builds Space-Time. Now "Magic" Gives It Gravity

https://www.quantamagazine.org/entanglement-builds-space-time-now-magic-gives-it-gravity-20260603/
118•rbanffy•8h ago•111 comments

Fine-tuning an LLM to write docs like it's 1995

https://passo.uno/fine-tuning-docs-llm/
155•taubek•10h ago•55 comments

Nango (YC W23, dev infra) is hiring staff back end engineers

https://nango.dev/careers
1•bastienbeurier•4h ago

ESP32 Bit Pirate, a Hardware Hacking Tool with WebCLI That Speaks Every Protocol

https://github.com/geo-tp/ESP32-Bit-Pirate
123•geotp•8h ago•39 comments

Ask HN: What is your (AI) dev tech stack / workflow? (June 2026)

34•dv35z•1h ago•29 comments

Lee Kuan Yew's Singapore Story (2023)

https://www.historytoday.com/archive/feature/lee-kuan-yews-singapore-story
115•pepys•9h ago•105 comments

Meta enables ADB on deprecated Portal devices [video]

https://fb.watch/HxPu0fSyeH/
276•jenders•15h ago•107 comments

Azure Linux 4.0 is Microsoft's first general-purpose Linux

https://www.boxofcables.dev/azure-linux-4-0-is-microsofts-first-general-purpose-linux/
151•haydenbarnes•13h ago•126 comments

U.S. Military Turned GPS into a Global "Numbers Station"

https://www.404media.co/the-u-s-military-quietly-turned-gps-into-a-global-numbers-station-evidenc...
16•awkwardpotato•32m ago•1 comments

Leap in DNA synthesis slashes time to build new genetic sequences

https://spectrum.ieee.org/faster-dna-synthesis-sidewinder
95•natalcleft•22h ago•21 comments

databow: a Rust CLI to query any database with an ADBC driver

https://columnar.tech/blog/introducing-databow//
99•hckshr•2d ago•19 comments

Anthropic's open-source framework for AI-powered vulnerability discovery

https://github.com/anthropics/defending-code-reference-harness
491•binyu•20h ago•138 comments

At the Autograph Show

https://oldster.substack.com/p/at-the-autograph-show
30•NaOH•2d ago•2 comments

I'm skeptical about efforts to revolutionize schooling

https://www.scotthyoung.com/blog/2026/05/27/revolutionize-schooling/
270•andrewstuart•2d ago•433 comments

Open Code Review – An AI-powered code review CLI tool

https://github.com/alibaba/open-code-review
240•geoffbp•16h ago•66 comments

Programmers will document for Claude, but not for each other

https://blog.plover.com/2026/03/09/#documentation-wins-2
121•surprisetalk•4h ago•117 comments

Do transformers need three projections? Systematic study of QKV variants

https://arxiv.org/abs/2606.04032
201•Anon84•17h ago•37 comments

The IsUpMap lets you check the status of over 100 major sites at once

https://isupmap.com/
109•mikelgan•11h ago•38 comments

Leak Reveals Microsoft Wants Its AI to Be 'Addictive'

https://kotaku.com/microsoft-ai-scout-addictive-satya-nadella-404-media-copilot-2000702924
50•thm•1h ago•20 comments