JDim icon indicating copy to clipboard operation
JDim copied to clipboard

alphaタグ導入による開発バージョン管理の提案

Open ma8ma opened this issue 7 months ago • 6 comments

alphaタグ導入による開発バージョン管理の提案

背景や動機

JDim のバージョンは番号、開発段階タグ、日付の3つで構成されています。

区分 説明
番号 ドット(.)で区切られた3つの数値(メジャー . マイナー . マイクロ)
開発段階タグ 開発段階を表す省略可能な文字列、機能フリーズからリリースまで beta を使用します。
日付 ソースコードが修正された日時、形式は YYYYMMDD, 例えば2024年7月10日なら 20240710 となります。
  • 番号の各桁は独立した数値として扱われるため、9 の次は 10 となります。
  • バージョンのフォーマットは <番号>-<開発段階タグ><日付> となります。

[!NOTE]
開発段階タグはGitタグとして作成するものではなく、 jdim --versionで表示するバージョン情報に含まれる開発段階を表すタグ(リリース修飾子)です。

:

  • 0.12.0-20240820
  • 0.13.0-beta20241225

現状の問題点

リリース後に修正が加えられてもバージョン番号が変わらなければ、一見して最新版かそうでないか判別できません。 このため、ユーザーがリリース版と開発版どちらを使っているか判断しづらく、issue や掲示板での対応が難しくなっています。

解決方法

edit(2024-07-09): 下記コメントで指摘がありalphaを使います。

0.12.0をリリースした後から~~dev~~ alphaタグ、ならびにバグ修正版のブランチを試験的に導入することを提案します。

alphaタグ:

リリース後から機能フリーズまでの開発期間中は、master ブランチのバージョンに alpha タグを追加します。

  • 開発中バージョンのフォーマットは <次期リリースの番号>-alpha<日付> とします。
  • alpha タグは、リリース作業直後ではなく、次の更新作業開始時に付与します。
    • リリース直後はsnapパッケージのビルドが完了していないため。
    • リリース後にGitリポジトリからソースを更新するユーザーへの配慮のため。

alphaタグを用いたバージョンの例:

  • 0.13.0-alpha20240820

バージョン表記例:

状況 現行バージョン表記 更新案バージョン表記
0.12.0 リリース 0.12.0-20240706 0.12.0-20240706
0.13.0 開発中 0.12.0-20240820 0.13.0-alpha20240820 :new:
0.13.0 機能フリーズ 0.13.0-beta20241225 0.13.0-beta20241225
0.13.0 リリース 0.13.0-20250110 0.13.0-20250110

※バージョンは例です。実際のバージョンとは異なります。

バグ修正版のブランチ:

リリース後 master ブランチに alpha タグを付与する場合、バグ修正版をリリースする必要が生じた際は旧バージョンへ戻す必要があります。 一つのブランチで管理すると、リリース版と開発版が混在し、履歴を追跡するのが困難になるため Gitリポジトリの tag が付けられたリリースのコミットからブランチを分岐して管理します。

バグ修正版のリリースは、リソース状況を考慮し、メンテナーが判断します。 バグ修正版が必要になった場合は、改めてissueを作成し、その際にブランチを作成します。

代替案

タグの案と候補から外した理由

  • ~~alpha
    理由: 多くのソフトウェアで開発版リリースに使用されていますが、 alpha版は次のバージョンに入る主要な機能が追加された段階を指すことが多く、 リリース直後の早期開発段階には合わないため候補から外しました。~~

  • nightly
    理由: 毎日更新される開発バージョンに使用されますが、 JDim は CI/CD でsnapパッケージを毎日更新しているわけではないため候補から外しました。

  • weeklymonthly
    理由: 毎週/毎月更新される開発バージョンに使用されますが、定期的リリースを行わない場合は適切ではないため候補から外しました。

  • canary
    理由: Webブラウザ Google Chrome やその派生物で使用されていますが、 JDim は Chrome と技術的に無関係であるため、誤解を避けるために候補から外しました。

  • 通常の開発では到達不可能な、次のリリースバージョンに近い値にする (例: 開発中: 0.12.99 → リリース: 0.13.0)
    理由: 一部のソフトウェアでは、大きなバージョンアップを予告するために使用されますが、 開発に関わっていないと意味やニュアンスが伝わりにくい可能性があるため、候補から外しました。

  • dev https://github.com/JDimproved/JDim/issues/1411#issuecomment-2214228914

追加の情報

~~開発中のバージョンを表すために "dev" を使用しているソフトウェアの例として、Android 用2ch互換掲示板アプリの ChMate があります。 "dev" は、ユーザーにとって他の案より馴染みのある表記である可能性が高いです。~~

バージョンの付け方の更新は開発保守に影響を与えるため RFC があるとよいですが、 まずは試験的に導入し、RFC の草案を公開して検討したいと思います。

参考資料

ma8ma avatar Jul 05 '24 13:07 ma8ma