home
menu
lock
Editing — Mark Versioning
arrow_back
Back
add
Create a new page
delete
Delete this page
Editing
You must be authenticated for your changes to save. Styling with
Markdown
is supported.
Semantic Versioning is better than most Versioning systems today, but because it means different things to different people, it remains more of a Social Versioning system than a semantic one. I propose a new Versioning Scheme named Mark Versioning, which aims to separate and preserve both social and semantic aspects of versioning. A *Mark* is a specific version of a software. This number is decided by social consensus, and represents major iterations / changes to a software. It starts at 0 and is incremented by 1 whenever appropriate. A *Revision* is similar to a Mark, but it represents a strict change in API. This may be a breaking or a no breaking change. Reversions start at 0 for each mark, and are incremented by one whenever an API change is detected. This should be done automatically by package management software. A *Hash* is the particular SHA-3 hash (in hex form, truncated to 8 characters) of a the source code of a software version. A Revision may have multiple different hashes. Alternatively, one can start from 0 with each Revision and automatically increment by 1 with each change. This should be done automatically. Mark Versioning can be written out in two forms: long and short. Long form: ```plain Mark
Revision
Hash
``` Short form: ```plain m
r
#
``` Here are some examples: ```plain Mark 3 Revision 16 Hash ae473ff6 ``` Same in short form: ```plain m3r16#ae473ff6 ``` Optionally, one can leave off Hash or Hash and Revision (if Hash is present, Revision must be present): ```plain Mark 0 Mark 0 Revision 0 Mark 0 Revision 0 Hash 0 m0 m0r0 m0r0#0 ``` That's all.