Naming convention for version branches (Package versioning)

Hi all, I am currently writing a tool to automate the release and version bump of cabal projects. Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0: - `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1` As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank. For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix I'm curious to know what you think of those names? any suggestions or known established convention about that? Thanks -- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard

"major-fix" seems strange to me. I'd expect major to bump the 2nd component
since it's part of the major version. Likewise the PVP uses "patch" for the
4th component.
On Tue, May 19, 2015 at 7:02 PM, Alois Cochard
Hi all,
I am currently writing a tool to automate the release and version bump of cabal projects.
Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0:
- `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1`
As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank.
For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix
I'm curious to know what you think of those names? any suggestions or known established convention about that?
Thanks
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

That sounds great thanks, and I agree about `major-fix` I was just out of
inspiration.
Any idea for the very first component? simply `release` maybe?
release/major/minor/patch
On 19 May 2015 at 19:19, Adam Bergmark
"major-fix" seems strange to me. I'd expect major to bump the 2nd component since it's part of the major version. Likewise the PVP uses "patch" for the 4th component.
On Tue, May 19, 2015 at 7:02 PM, Alois Cochard
wrote: Hi all,
I am currently writing a tool to automate the release and version bump of cabal projects.
Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0:
- `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1`
As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank.
For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix
I'm curious to know what you think of those names? any suggestions or known established convention about that?
Thanks
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard

Any idea for the very first component? simply `release` maybe?
'release' is quite an overloaded term already; I would suggest something along the lines of "epoch" or "era" or similar. That being said, the official PVP calls both the first and second components "major", so you could just say something like "majorA/majorB" or similar.

I don’t know if you are aware of https://www.npmjs.com/package/semantic-release https://www.npmjs.com/package/semantic-release project It’s built for npm packages, but the same idea could be used for Haskell/cabal too. The idea is to use SCM commit message to decide which version digit to bump. - you still have to annotate changes - and if you try to cheat, but semantic-release runs old test suite again new version of the library to detect obvious breaking changes Seems there is https://github.com/blitzcode/hackage-diff https://github.com/blitzcode/hackage-diff which can be used to make the task of detecting API changes even easier. Hopefully these pointers let you make even greater tool! - Oleg
On 19 May 2015, at 20:02, Alois Cochard
wrote: Hi all,
I am currently writing a tool to automate the release and version bump of cabal projects.
Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0 http://0.0.0.0/:
- `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1`
As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank.
For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix
I'm curious to know what you think of those names? any suggestions or known established convention about that?
Thanks
-- Λ\ois http://twitter.com/aloiscochard http://twitter.com/aloiscochard http://github.com/aloiscochard http://github.com/aloiscochard_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

Hi Oleg,
I was aware of similar tools thanks to Oliver Charles who pointed me to
that great python tool: http://dzil.org/, seems like semantic-release have
some interesting features as well!
Thanks for the pointers, especially `hackage-diff` that I was not aware of.
It will help me a lot to get an even more automated tool :-)
On 19 May 2015 at 20:07, Oleg Grenrus
I don’t know if you are aware of https://www.npmjs.com/package/semantic-release project
It’s built for npm packages, but the same idea could be used for Haskell/cabal too.
The idea is to use SCM commit message to decide which version digit to bump. - you still have to annotate changes - and if you try to cheat, but semantic-release runs old test suite again new version of the library to detect obvious breaking changes
Seems there is https://github.com/blitzcode/hackage-diff which can be used to make the task of detecting API changes even easier.
Hopefully these pointers let you make even greater tool!
- Oleg
On 19 May 2015, at 20:02, Alois Cochard
wrote: Hi all,
I am currently writing a tool to automate the release and version bump of cabal projects.
Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0:
- `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1`
As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank.
For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix
I'm curious to know what you think of those names? any suggestions or known established convention about that?
Thanks
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard

I'd also recommend using a,b,c,d for the components instead of 0,1,2,3. Our
tool `bumper` uses numbers and i always have to try to remember that the
1st component is 0...
On Wed, May 20, 2015 at 11:02 AM, Alois Cochard
Hi Oleg,
I was aware of similar tools thanks to Oliver Charles who pointed me to that great python tool: http://dzil.org/, seems like semantic-release have some interesting features as well!
Thanks for the pointers, especially `hackage-diff` that I was not aware of. It will help me a lot to get an even more automated tool :-)
On 19 May 2015 at 20:07, Oleg Grenrus
wrote: I don’t know if you are aware of https://www.npmjs.com/package/semantic-release project
It’s built for npm packages, but the same idea could be used for Haskell/cabal too.
The idea is to use SCM commit message to decide which version digit to bump. - you still have to annotate changes - and if you try to cheat, but semantic-release runs old test suite again new version of the library to detect obvious breaking changes
Seems there is https://github.com/blitzcode/hackage-diff which can be used to make the task of detecting API changes even easier.
Hopefully these pointers let you make even greater tool!
- Oleg
On 19 May 2015, at 20:02, Alois Cochard
wrote: Hi all,
I am currently writing a tool to automate the release and version bump of cabal projects.
Currently you can call the tool by giving as argument the rank of the branch you want to bump, for example given 0.0.0.0:
- `cabal-release 0` bump to `1` - `cabal-release 1` bump to `0.1` - `cabal-release 2` bump to `0.0.1` - `cabal-release 3` bump to `0.0.0.1`
As we are not all robots (yet), I thought that in addition to this it would be great if the user could give a human friendly name for the rank.
For now, here is what I have for the different rank: 0 == --major 1 == --major-fix 2 == --minor 3 == --minor-fix
I'm curious to know what you think of those names? any suggestions or known established convention about that?
Thanks
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
-- *Λ\ois* http://twitter.com/aloiscochard http://github.com/aloiscochard
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
participants (4)
-
Adam Bergmark
-
Alois Cochard
-
Oleg Grenrus
-
Phil Ruffwind