mellowagain / shiro

High performance, high quality osu!Bancho C++ re-implementation
GNU Affero General Public License v3.0
40 stars 6 forks source link

Versioning Shiro: What and how #32

Open mellowagain opened 6 years ago

mellowagain commented 6 years ago

Shiro is nearing the completion of it's last major aspect. We should start versioning Shiro to keep track of updates easier and to allow the implementation of a changelog to be displayed on the frontend, Kuro.

There are multiple version schemes to choose from:

SemVer

Most widespread in software development, SemVer proposes the usage of incremental version parts. It is suggesting the usage of major.minor.fix layout. With a major breaking change, the major part of the version gets upgraded and symbolizes no backwards compatibility. The same applies to minor and fix but does not symbolize breaking backwards compatibility.

Resulting versions would look like this: v1.33.7

Date

Simple and straight forward date versioning. It displays the date of the release right in the version number. It suggests the layout of vyearmonthdate.fix. With each release, the date is updated to the day the new version gets released. If another update is released on the same day, the fix part gets incremented.

Resulting versions would look like this: v20181009.2

Build

Build numbers are straight forward incremental changes to the versioning system. Instead of having well defined parts that indicate something, the number just gets incremented every time a new update is released. It suggests the usage of buildnumber as single integer, without any other parts.

Resulting versions would look like this: b5427

Date & CI Build

A mix between Date and the continues integration build number. This versioning scheme is used by osu!lazer and newer, open-source ppy projects. In principle, it is the same as the Date versioning system but uses the CI build additionally instead of the month and day. It suggests the following layout: vyear.cibuild.fix

Resulting versions would look like this: v2018.205.3

Git Hash

Probably the most straight forward way to name a version. No thinking about if this is a minor or fix, no dates to organize or some other stuff - at the expense of being cryptic and ununderstandable to people who do not use Git as version control system.

Resulting versions would just be a git short commit hash and look like this: 22df1fe

Other

Got another suggestion or even a mix between two suggested (e.g v1.33.7-22df1fe), feel free to reply to discussion with it and it will be considered as well.

Discussion is open and I'm looking forward to input of any collaborator as well as other people.

48cf commented 6 years ago

The vyearmonthdate.fix format sound the best to me, but the major.minor.fix layout also looks okay.

Vaela-V commented 6 years ago

Agreed .

emily33901 commented 6 years ago

SemVer for library packages (following incremental, minor and major with regards to api breaking, etc) and githash for shiro binary.