• Stars
    star
    252
  • Rank 161,312 (Top 4 %)
  • Language
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SemVer compatible version specification that has {head}.{yearweek}.{build} system.

HeadVer Specification

example

It says; the 3rd public release, at around the 24th week of 2019, from build 59.

Introduction

a version specification that has {head}.{yearweek}.{build} system.

The name HeadVer stands for "only head number is enough to maintain!" because it only allows to set the first number manually, and rest numbers are automatic. It simplifies x.y.z versioning and gurantees incremental version stamping on top of various versioning scripts introduced in this repository. HeadVer versioning system is battle-tested on the 40+ app/web services.

  • {head} - manual. Zero-based number.
  • {yearweek} - automatic. 2-digit for year and 2-digit for week number.
  • {build} - automatic. Incremental number from a build server.

Code Examples

Currently, this repository has Bash, Fastlane, and Gradle examples. You can apply it to a build server or a local machine.

Motivation

There are so many questions came out when we use a SemVer style.

  • "Oops, we accidentally released without updating the version!"
  • "Why so many products are still having 1.x.y version? Do we have any chance to increase a major up?"
  • "Why update to 1.0.3 commit should be in commit history? The version number is not a logic but just a package tag."
  • "User got a crash in version 1.4.3 but have no idea how old the version is. Is it outdated for months so?"
  • "What was the affected version and how long did we take to get fixed?"
  • "In this release, do we update a minor number or patch? We've discussed it all day long."

The HeadVer deeply thought these questions and defined some rules to cover up all of them.

Benefits

  • It embraces SemVer; Semantic Versioning. HeadVer is compatible with x.y.z style and easily moves over it.
  • Every number in a version has clear meaning.
  • The middle {yearweek} acknowledges an age of a version.
  • It only allows one manual number, the {head}, to simplify a numbering consideration and discussion.
  • The build number guarantees each release distinguishable.
  • It is enough to say a {build} to point out exact release binary.
  • No same version releases happen even we forgot to do 'version up to x.x.x' commit.
  • {yearweek} always has 4-digit long, so we have a minimum validation rule. Every version has fixed 4-digit in the middle.

Rules

1. {head}

  • The first part {head} is Zero-based manually modifiable number.
  • For example, if you try to adopt HeadVer to a software that has v2.1.0, it is good to start with head number 3.
  • In notation, you can say v3 or v.3 for the head number 3.

2. {yearweek}

  • The second part {yearweek} is a combination of 2-digit for a year and 2-digit week number. ie, 34th week in year 2021 is 2134.
  • It always has 4-digit.
  • A week number follows ISO-8601 week date system; https://en.wikipedia.org/wiki/ISO_week_date

3. {build}

  • The last part {build} is an automatically incremental number, and generally a build server stamps it.
  • We strongly recommend to setup a build server with auto-incremental counter system in front of any software releases.
  • In notation, you can say b59 or b.59 for the build 59.

Tips

  • If your team is running a weekly sprint, a middle number can be a sprint title as it raises per week. ie, 2104 can be a sprint for 4th week of 2021.
  • If your team is running a bi-weekly sprint, a middle number can also be a sprint title for odd or even numbers.
  • When should we update {head} number? We recommend to increase at every end-user receives a new version. ie, for each AppStore releases.
  • {yearweek} can be winded back to 0001 when year 2100 comes. When year 2100 comes, update {head} or use 4-digit for a year 210001.

FAQ

  1. Can we use -prerelease for a version? Yes. But practically, we recommend not to use - suffix. It is better to update {head} instead. HeadVer leads to increase {head} actively and frequently.
  2. Can we use +meta for a version? Yes, it is perfectly fine.
  3. Why not use {yyyyMMdd} but {yearweek}? Practically, week number precision is enough.

Validation

If you try to implement headver, {yearweek} requires special concerns as it should follow ISO8601. Please validate your implementation with below table.

# TestCase Date {yearweek}
1 First day is Sunday 2012-01-01 1152
2 First day is Monday 2018-01-01 1801
3 Second day is Tuesday 2018-01-02 1801
4 Seventh day is Sunday 2018-01-07 1801
5 Sixth day is Saturday 2018-01-06 1801
6 First day is Tuesday 2019-01-01 1901
7 First day is Thursday 2015-01-01 1501
8 First day is Friday 2010-01-01 0953
9 Last day is Monday 2018-12-31 1901
10 Last day is Tuesday 2019-12-31 2001
11 Last day is Thursday 2009-12-31 0953
12 Last day is Saturday 2011-12-31 1152
13 Last day is Sunday 2017-12-31 1752
14 First day of 2015 for total 53 weeks 2015-01-01 1501
15 Last day of 2015 for total 53 weeks 2015-12-31 1553
16 First day of 2016 for total 52 weeks 2016-01-01 1553
17 Last day of 2016 for total 52 weeks 2016-12-31 1652

More Repositories

1

armeria

Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Java
4,765
star
2

line-bot-sdk-python

LINE Messaging API SDK for Python
Python
1,888
star
3

promgen

Promgen is a configuration file generator for Prometheus
JavaScript
1,047
star
4

line-bot-sdk-nodejs

LINE Messaging API SDK for Node.js
TypeScript
949
star
5

line-bot-sdk-go

LINE Messaging API SDK for Go
Go
885
star
6

line-sdk-ios-swift

Provides a modern way of implementing LINE APIs.
Swift
845
star
7

line-bot-sdk-php

LINE Messaging API SDK for PHP
PHP
704
star
8

kotlin-jdsl

Kotlin library that makes it easy to build and execute queries without generated metamodel
Kotlin
702
star
9

line-bot-sdk-java

LINE Messaging API SDK for Java
Java
605
star
10

centraldogma

Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
Java
594
star
11

line-fido2-server

FIDO2(WebAuthn) server officially certified by FIDO Alliance and Relying Party examples.
Java
508
star
12

line-bot-sdk-ruby

LINE Messaging API SDK for Ruby
Ruby
479
star
13

stellite

Stellite project is a client library and server application that offers an easy way to develop, build, and implement client/server running primarily over the QUIC protocol developed by Google as part of the Chromium project.
C++
474
star
14

garr

Collection of high performance, thread-safe, lock-free go data structures
Go
370
star
15

line-liff-v2-starter

This is a small web application that demonstrates the basic functionality of the LINE Front-end Framework (LIFF).
JavaScript
334
star
16

decaton

High throughput asynchronous task processing on Apache Kafka
Java
325
star
17

ts-remove-unused

Remove unused code from your TypeScript project
TypeScript
264
star
18

abc-user-feedback

ABC User Feedback is a standalone web application that manages Voice of Customer (VoC) data. It allows you to gather and sort feedback from your customers.
TypeScript
230
star
19

apng-drawable

A lightweight and fast Animated Portable Network Graphics (APNG) image decoder for Android
Kotlin
223
star
20

flutter_line_sdk

A Flutter plugin that lets developers access LINE's native SDKs in Flutter apps with Dart.
Dart
213
star
21

rules_apple_line

LINE's Apple rules for Bazel
Starlark
207
star
22

lich

A library collection that enhances the development of Android apps.
Kotlin
191
star
23

line-login-starter

LINE Login starter application
Java
138
star
24

line-liff-starter

This is a small web application that demonstrates the basic functionality of the LINE Front-end Framework (LIFF).
JavaScript
138
star
25

armeria-examples

Armeria examples
Java
137
star
26

line-openapi

OpenAPI spec of the LINE's Public APIs
JavaScript
136
star
27

line-sdk-android

LINE SDK for Android lets you integrate LINE into your Android app to create a more engaging experience for your users.
Java
133
star
28

conflr

Post R Markdown documents to Confluence
R
130
star
29

clay

Clay is an Android library project that provides image trimming which is originally an UI component of LINE Creators Studio
Kotlin
121
star
30

line-sdk-unity

Provides a modern way of implementing LINE APIs in Unity games, for iOS and Android.
C#
118
star
31

line-simple-beacon

JavaScript
109
star
32

LibriTTS-P

LibriTTS-P: A Corpus with Speaking Style and Speaker Identity Prompts for Text-to-Speech and Style Captioning
104
star
33

jnotebook_reader

🃏 An awesome viewer to browse and render Jupyter Notebooks from local, Amazon S3, Google Cloud Storage or MinIO
JavaScript
103
star
34

feature-flag-android

A Gradle plugin to achieve feature flag based development for Android applications.
Kotlin
100
star
35

webpack.kr

Korean translation of webpack document
MDX
91
star
36

line-things-starter

The sample codes for LINE Things Developer Trial
C++
90
star
37

liff-playground

An example app to show the usage of LIFF's API functions
TypeScript
90
star
38

grow-loader

A webpack loader to split class methods by decorators
JavaScript
88
star
39

abc-kmm-location

Location Service Manager for Kotlin Multiplatform Mobile iOS and Android
Kotlin
85
star
40

gradle-scripts

Sensible multi-project defaults for Gradle
81
star
41

vue-pivot-table-plus

An enhanced pivot table component for Vue.js
Vue
77
star
42

abc-virtual-background-maker

A standalone React application designed for creating and downloading virtual background images enriched with customizable text elements.
TypeScript
76
star
43

line-platform-feedback

LINE Platform feedback
76
star
44

gradle-multi-project-support

A collection of Gradle plugins to maintain the multi-project or multi-application in the mono-repo.
Kotlin
75
star
45

line-bot-sdk-perl

LINE Messaging API SDK for Perl
Perl
72
star
46

create-liff-app

Start developing LIFF application with a simple CLI command.
TypeScript
63
star
47

ostracon

Ostracon, a consensus algorithm, is forked from Tendermint Core. We have added VRF to Tendermint BFT. It adds randomness to PoS Validator elections and improves security.
Go
60
star
48

conditional

A super lightweight library that helps you to compose multiple conditional expressions and make them asynchronous easily.
Java
59
star
49

open-universe

Open implementation of UNIVERSE and UNIVERSE++ diffusion-based speech enhancement models.
Python
58
star
50

abc-kmm-notifications

Remote Notification Manager for Kotlin Multiplatform Mobile iOS and Android
Kotlin
57
star
51

lbm-sdk

A framework for building blockchains based LINE Blockchain Mainnet that is forked from cosmos-sdk
Go
53
star
52

liff-inspector

The universal DevTools for LIFF (WebView) browser
TypeScript
51
star
53

centraldogma-go

Go client library for Central Dogma
Go
50
star
54

line-sdk-starter-ios

A starter app demonstrating usage of the LINE iOS SDK.
Objective-C
50
star
55

centraldogma-rs

Official Rust client for Central Dogma
Rust
46
star
56

lighthouse

A user-friendly library for reproducible video moment retrieval and highlight detection.
Python
46
star
57

zipkin-lens

An alternative UI for Zipkin (Distributed Tracing), this repo is no longer used as it's already merged into upstream, please go to https://github.com/openzipkin/zipkin/tree/master/zipkin-lens
JavaScript
45
star
58

LINE-DistilBERT-Japanese

DistilBERT model pre-trained on 131 GB of Japanese web text. The teacher model is BERT-base that built in-house at LINE.
44
star
59

Flagship4j

Feature toggle system API-Client SDK follow OpenFeature specification.
Java
43
star
60

line-api-use-case-messaging-api

LINE Messaging API demo application provided by LINE API Use Case
Python
37
star
61

line-sdk-starter-android-v2

A starter application that demonstrates how to use LINE SDK V2 for Android.
Java
35
star
62

liff-mock

LIFF Mock is a LIFF Plugin that make testing your LIFF app easy.
TypeScript
35
star
63

clova-cek-sdk-nodejs

SDK of the Clova CEK for Node.js
TypeScript
34
star
64

line-sdk-starter-android

A starter app demonstrating usage of the LINE Android SDK.
Java
33
star
65

kubectl-kustomize

Docker image with kubectl and kustomize
Dockerfile
33
star
66

aes-gcm-siv

AES-GCM-SIV (RFC 8452) implementation for C, Android and Java, with hardware acceleration support.
C
33
star
67

recruiting-resources-jp

Go
33
star
68

lfb

LINE Financial Blockchain forked from gaia(https://github.com/cosmos/gaia)
Go
32
star
69

demo-rich-menu-bot

Demo bot for using rich menus with the Messaging API
PHP
31
star
70

figma-translator-vue-plugin-sample

The sample of Figma translation plugin with Vue
Vue
31
star
71

line-things-dev-board

LINE Things development board - Sample codes and schematics
HTML
29
star
72

abc-kmm-shared-storage

A local storage management library for Kotlin Multiplatform Mobile iOS and Android
Kotlin
27
star
73

line-sdk-starter-ios-v2

A starter application that demonstrates how to use LINE SDK for iOS.
Objective-C
27
star
74

gradle-multi-project-support-sample

This is a sample of build-recipe-plugin in gradle-multi-project-support
Kotlin
27
star
75

line-api-use-case-reservation-hairsalon

Hair salon reservation demo application provided by LINE API Use Case
Python
27
star
76

line-blockchain-developers-sdk-js

Javascript library for line blockchain developers
TypeScript
25
star
77

Human-Interaction-Generation

Official implementation of ICCV 2023 Oral Paper "Role-Aware Interaction Generation from Textual Description"
Python
25
star
78

networking-sr

OpenStack Neutron plugin/drivers for Segment Routing IPv6
Python
24
star
79

blockchain-sample-link-cinema

A sample service of LINE Blockchain, demonstrating how to utilize LINE Blockchain Developers and LINE BITMAX Wallet.
Go
21
star
80

abc-kmm-analytics-tools

Analytics Tools for Kotlin Multiplatform Mobile iOS and Android
Kotlin
20
star
81

clova-cek-sdk-swift

SDK of the Clova CEK for Swift
Swift
20
star
82

clova-cek-sdk-python

SDK of the Clova CEK for Python
Python
19
star
83

Meta-AI-Video-Similarity-Challenge-3rd-Place-Solution

The 3rd Place Solution of the Meta AI Video Similarity Challenge : Descriptor Track and Matching Track.
Python
18
star
84

line-bot-sample-ms

C#
17
star
85

centraldogma-python

Python client library for Central Dogma
Python
17
star
86

line-api-use-case-reservation-Restaurant

Restaurant reservation demo application provided by LINE API Use Case
Python
16
star
87

BC-node-server-sample

BusinessConnect sample server with NodeJS
JavaScript
16
star
88

japanese-large-lm-instruction-sft

16
star
89

cosmwasm

Fast and reusable WebAssembly smart contract runtime(and library) for lbm-sdk.
Rust
15
star
90

gorocksdb

A `rocksdb` wrapper for golang applications. This is forked from https://github.com/tecbot/gorocksdb.
Go
15
star
91

line-api-use-case-table-order

Table order demo application provided by LINE API Use Case
Python
15
star
92

iavl

Merkleized IAVL+ Tree implementation in Go forked from cosmos/iavl(https://github.com/cosmos/iavl)
Go
14
star
93

blockchain-sample-mage-duel

A sample service implementing a card game using the blockchain, which can serve as a guide on tokenizing game money and items.
C#
14
star
94

clova-cek-sdk-java

SDK of the Clova CEK for Java
Java
13
star
95

wasmvm

Go bindings to the CosmWasm smart contract framework. In particular, it allows you to easily compile, initialize, and execute these contracts from Go.
Go
13
star
96

tm-db

Common database interface for various database backends for Ostracon and LBM SDK. This is forked from Tendermint tm-db(https://github.com/tendermint/tm-db)
Go
13
star
97

clova-cek-sdk-elixir

SDK of the Clova CEK for Elixir
Elixir
13
star
98

line-api-use-case-liff

LINE LIFF demo application provided by LINE API Use Case
CSS
12
star
99

line-bot-pyconkr2019

LINE Chatbot for PyCon KR 2019
Python
12
star
100

line-blockchain-developers-sdk-kt

Kotlin library for line blockchain developers
Kotlin
11
star