Open colomet opened 7 years ago
@colomet sorry but I don't agree with you 4 digits schema.
In my opinion is not addressing the problem as it should and also not very clear.
My specification is simple, short, easy to understand and is not targeting any specific software type.
After read the article of @sapioit I am thinking in renaming it from SemanticVersioning
to ExplicitVersioning
or maybe StrictVersioning
and I hate abbreviations because they are implicit.
I´m targeting my own problem. To work with wordpress as a CMS where we do create plugins and themes integrated with other plugins and themes.
I think is it pretty simmilar to yours. What is the problem I´m not addressing? and why is not very clear?
thanks
Sorry I was not clear enough...
Then names you give to the Schema RELEASE.ENHANCED.FEATURE.PATCH
do not match the breakdown of them, that are in the order RELEASE.FEATURE.ENHANCED.PATCH
.
Also calling FEATURE to breaking changes does no make sense to me.
I don't see why my approach doesn't work for Wordpress, etc.
I also work with Prestashop and use my Semantic Versioning without any issue.
I may rename it so that becomes more readable in all scopes, like MAJOR_RELEASE.BACKWARDS_INCOMPATIBLE.CODE_IMPROVMENT.CODE_FIXES
.
Just thinking. What about Release.Major.Minor.Patch.
I don´t like to have warming names because I think a breaking is too complicate to predict.
If I have a theme and some one make a plugin for a theme, Maybe there is a problem we can not predict and we break the site just creating a new feature. And that breaking just happen to one guy in some place, not all the other ecosistem of plugins. We can not to know if we break or not all the time. Maybe is a situation with wordpress and we did nothing wrong but the situation is wrong.
Everything could be a breaking and nothing. That´s why I avoid to use such names. I would like something more general.
@xBorderie i read your article and I would like to ask your opinion. thanks
https://github.com/npm/node-semver/issues/54 @hueniverse what do you think about that version system? any idea?
@colomet if you read why I created my specification is because I really want to have an explicit digit that announce backward incompatible changes.
Release code that can break without being announced as a breaking change means that we don't have a good suite of tests in our code.
With a good suite of tests the chances of that happening are greatly reduced and when happens we just need to add one more test to the suite to make sure that will not happen again in that scenario ;).
Why not Release.Incompatible.Compatible.Fix
(or Patch
instead of Fix
)?
That is, in order to make it as universal as possible without making it interpretable.
Release
has to do with major releases, which usually mean the end of support or a new recommended versionIncompatible
says that this update breaks compatibility with previous versionsCompatible
says that this does not break compatibility with previous versionFix
/Patch
says that this fixes something that is not working as intended@sapioit sounds better your proposal while keeping the meaning and making it universal at same time.
That one I don't mind to use in my specification and at same time changing the name of the specification to ExplicitVersioning
or StrictVersioning
.
@Exadra37 I understand your point.
And I think we have an agrement of the definition in each one of the 4 components. As @sapioit just write:
What is missing is a appropiate name. Don´t you think?
I would like to extend the @sapioit definition a litle more, if you allow me:
About the names. What about:
Major.Jump.Minor.Patch
Release.Major.Minor.Patch
@colomet
The definition I use in my specification still valid for each Release.Incompatible.Compatible.Fix
but can be improved to mention the Ux bits.
@Exadra37 I don´t would like to use any type of name like incompatible or compatible or break because somebody could believe if is not a braking change, that means it is safe to update. Maybe is not a breaking change with the addons related to the plugin but maybe with other plugins in the installation.
@colomet
Your proposal just hides the problem... How can your proposal tell that is safe to upgrade?
I can´t, you never can tell is safe to upgrade. Just is safe with the FIX (we can assume that the 99.999 of the situations).
That´s why to tell one upgrade is a breaking and the other no, could make a bad idea of the reality.
@Exadra37 that is a modification of your especifications.
Given a version number A.B.C.D
, increment the:
A
version when you make incompatible API changes,B
version when you add functionality in a backwards-incompatible manner,C
version when you add functionality in a backwards-compatible manner, andD
version when you make backwards-compatible bug fixes.Additional labels for pre-release, release candidate and build metadata are available as extensions to the RELEASE.MAJOR.MINOR.PATCH format.
A
:
B
:
C
:
D
:
But I don´t understand if to write about the public API in C, if in C and B, or if just in B.
Let me try to make it more... compact, concrete and maintaining universability.
Release
is incremented when changing the API, changing the UX, switching to a new recommended version or ending support for previous versionsIncomaptible
is incremented when changing the UX and when breaking compatibility with previous versionsCompatible
is incremented when changing, adding or removing code while remaining compatible with previous versionsFix
is incremented when a bug is fixed, or a security gap is solvedWhat do you think?
Yes, simple and direct.
I think we could try to use more close sentence between Incompatibe and compatible. maybe:
Release
is incremented when changing the API, changing the UX, switching to a new recommended version or ending support for previous versions,
Incompatible
is incremented when adding, changing or removing code while breaking compatibility with previous versions or changing the UX,
Compatible
is incremented when adding, changing or removing code while remaining compatible with previous versions,
Fix
is incremented when a bug is fixed, or a security gap is solved.
And I am pro using the whole words, instead of a conmpact form. Heck, we're telling the other programmers to use variable names that are explicit, but don't do it ourselves?
#ExplicitVersioning
I tweeted this with the previous hashtag...
Once my specification already matches the Explicit Versioning and was the base for this discussion, plus I have already said before I am willing to adopt the naming @sapioit have suggested to the schema, in my opinion would make more sense to continue from my repository.
Sure, just tag me (and maybe @colomet if you want to or he is okay with it) on your repository. I forgot the link and can't find on your profile (for some reason).
The link is this one https://github.com/exadra37-versioning/explicit-versioning
My idea is to create a place for documentation. To create a changelog, a readme file and other documents and to have it all of them uder the same github organization. What if we do create a new organization and inside we start to create the repository related to documentation where other people could join us?
what about the organization name : Software Development Guidelines ?
I could always to use a fork inside of that organization.
But for me, the problem of the names of the components remain.. Incompatible and compatible... are a not apropiate name
I know you don´t like the short names, but Software Development Guidelines is too long, maybe is better SoDeGui
Hello, and thank you for asking for my input. The thing, I am unsure the PrestaShop versioning is relevant in a "let's improve SemVer" conversation.
PrestaShop's 4-digit version, for all intents and purposes, uses SemVer, only in a way that will not scare users away: moving from 1.6.1.0 to 2.0 would have been the thing to do SemVer-wise, but to us such a move would only have been warranted by a huge code rewrite. For that reason, it was chosen to keep the first two digits as the "majorness" indicators, thus moving to 1.7.0.0, the next one being 1.8.0.0, maybe someday 1.10.00, and once we get to that full rewrite, yup, sure, 2.0.0 (probably abandoning the fourth digit on that occasion).
Hence, I'd agree that having a non-semantic 4th digit, equivalent to version names, would be an interesting idea instead of having to jump to the next major at the first sight of a breaking change -- but that also forces us to better think when breaking things.
@colomet What about Development Craftsmanship
?
@xBorderie Firefox used a four digit versioning since the version 1.5, but I don't know if they used a similar type of versioning, but it seems the first digit started being updated in a support-dropping and it looks like an example of how SemVer can mess up a product's version numbers.
I mean, they reached Version 60 in only a few years. Think about Firefox about 2 decades. Version 1326?
@sapioit something like https://php-scribes.com ?
@colomet this may be the specification you want to adopt http://blog.legacyteam.info/2015/12/romver-romantic-versioning/
@Exadra37 EXACTLY !!! But they still try too hard with the semantics... they should throw an "Explicit" here and there... After all, we're not only trying to change the versioning numbers, but also the mentality of the developers.
@sapioit
Php Scribes is an idea of mine and Semantics is used in the sense Software should be easy to read, but after all this discussions I may rephrase it to Explicit ;)
Not entirely. After all, semantics are needed to understand how to read and write software, but writing explicit code (that leaves no room for interpretation) is one of the best practices (except when the end-goal is to write code as efficient as possible).
Reviewing the content from: @sapioit Release.Breaking.Feature.Fix & @Exadra37 Semantic Versioning - Semantic Versioning with 4 digits