mirror of
https://github.com/conventional-commits/conventionalcommits.org.git
synced 2026-03-22 12:44:37 -05:00
About the meanings of "feat" #13
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @AoDev on GitHub (Dec 5, 2017).
Hello, I am not sure it's the right repo for this. If it is not, please let me know.
I wish to understand better the semantics of "feat".
Regarding the "feat" keyword. I have trouble with it depending on the perspective.
There are two points of view: the product perspective vs development perspective.
Let's say a dev introduces a new cool reusable UI component.
feat(UI): add super new generic graph visualizerThen later, this component is used to display some data.
feat(reports): display reports graph for xNow, for a generated changelog, it's a bit of a problem because we are mixing "developer features" with "product features" and releases are unclear or with unnecessary information for people only interested in the "product features".
I was wondering how people make this difference and maybe clarify the semantics on conventionalcommits.org :)
@stevemao commented on GitHub (Dec 6, 2017):
I think
featshould be a new feature to your end-user. So if your product is for a business, it'd be a business feature. If your product is a tool, then afeatis a new feature in your tool, which helps to improve the dev experience of your end-user, developers.This is also why we don't include things like
docs,ciorchorein the changelog, because they have very little to do with your end-users.You might wanna consider
build,ciorchore.@AoDev commented on GitHub (Dec 6, 2017):
I am not too sure about using build, ci or chore for "unexposed /dev features". But, if feat is meant to be for product level only, then should we reflect this in the definition?
feat: a commit of the type feat introduces a new feature
to the codebasefor the end-users of your product / library (this correlates with MINOR in semantic versioning).edit: Look at this angular commit for example:
It does not look as a user facing feature but still it's a "feat".
2e03aedc85@stevemao commented on GitHub (Dec 6, 2017):
It is, indeed, a bit ambiguous about what
featactually means.I agree. And I believe this was the original purpose too. Even with the angular team they are not writing the perfect commit messages.
@AoDev commented on GitHub (Dec 8, 2017):
@stevemao How should we proceed? I think it would be nice to update the meaning on the website.
In practice what I am doing right now in my repos is:
Possibly, I am thinking to introduce a type "internal feature for dev" to stay compliant with the original purpose. This is useful because shared modules / helpers are often in the same codebase but dev are not always aware they got a new tool to use and might reinvent the wheel.
@about-code commented on GitHub (Jan 13, 2018):
I would prefer to see something like
enhanceto classify enhancements.I would argue that development features could be classified as enhancements. IMHO an enhancement classifier would help to bridge the gap between fix and feature. E.g. a fix indicates that there must have been a bug before. A feature indicates that there is some added functionality or business value. But often I find myself to commit changes which improve some situation but which neither fix a bug nor do they add a feature.
E.g. performance usually is a non-functional requirement and can't be classified as a feature from a customer's perspective. Improving performance is usually more of an enhancement than a feature.
@damianopetrungaro commented on GitHub (May 2, 2018):
We did it some days ago :D #25 !
Thanks to @about-code and @AoDev for the great idea!
@about-code commented on GitHub (May 5, 2018):
@damianopetrungaro Thanks to @blackxored and you for writing it into the spec!