Skip to content
121 changes: 121 additions & 0 deletions docs/ReleaseSchedule.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Hello Minecraft! Launcher Release Schedule

<!-- #BEGIN LANGUAGE_SWITCHER -->
**English** | [中文](ReleaseSchedule_zh.md)
<!-- #END LANGUAGE_SWITCHER -->

This document describes the HMCL version release schedule starting from October 2025.

## Versioning Rules

### Version Branches

HMCL has multiple **version branches**, each named in the format `<major>.<minor>` (e.g., `3.7`).

The major version is incremented only when there are significant architectural changes in HMCL,
while the minor version is incremented regularly according to the release schedule.

### Version Types

HMCL has two types of versions: **Stable** and **Development**.

#### Stable Version

The HMCL stable version is suitable for users who prioritize software stability.
New features are merged into the stable version only after thorough testing.

The stable version number follows the naming rule `<version branch>.<build number>` (e.g., `3.7.1`).
The build number is calculated independently for each version branch.

#### Development Version

The HMCL development version is suitable for users who want to experience new features first.
The development version includes the latest features and bug fixes,
but may also have more issues due to insufficient testing.

The development version follows the naming rule `<version branch>.0.<build number>` (e.g., `3.7.0.300`).
The build number is shared globally across all version branches.

## Release Channels

HMCL has two main release channels: **Stable Channel** and **Development Channel**.
They are used to release the HMCL stable and development versions, respectively.

To test HMCL versions before official release, we will push updates to some users in advance.
Users can enable the "Preview HMCL versions in advance" option on the "Settings > General" page to receive preview updates from the corresponding channel.

## Release Model

```mermaid
gantt
title HMCL Version Lifecycle (Example)
section 3.9
Development Phase: a1, 2025-11-15, 30d
Preview Phase: a2, after a1, 16d
Stable Release: milestone, after a2, 0d
Maintenance Phase: a3, after a2, 31d
section 3.10
Development Phase: b1, after a1, 31d
Preview Phase: b2, after b1, 16d
Stable Release: milestone, after b2, 0d
Maintenance Phase: b3, after b2, 31d
section 3.11
Development Phase: c1, after b1, 31d
Preview Phase: c2, after c1, 16d
Stable Release: milestone, after c2, 0d
Maintenance Phase: c3, after c2, 30d
```

In general, we release a new version branch every month,
and each version branch `x.y` has a lifecycle of two and a half months.

The lifecycle of each version branch is divided into the following stages:

1. **Development Phase** (Mid-month M ~ Mid-month M+1)

During this phase, the version is developed in the Git branch `main`.

Typically, we release a development version `x.y.0.<build number>` based on this branch every week,
which includes all features and bug fixes merged during the week.

2. **Preview Phase** (Mid-month M+1 ~ End of month M+1)

In mid-month M+1, we fork the `main` branch to create the `release/x.y` branch,
which corresponds to the fixed version branch `x.y`.

At the same time, the version branch corresponding to the `main` branch is incremented to `x.y♯`,
entering the development phase of the next version branch.

After the fork, no new features will be added to this version branch;
only bug fixes and data updates will be made.

Within a few days, we will release a stable preview version `x.y.1` and
push it to users in the stable channel who have enabled preview updates.

Before the end of month M+1, the stable version corresponding to version branch `x.y` will remain in preview status.
If issues are found during the preview, we will release and push new stable preview versions (such as `x.y.2`, `x.y.3`, etc.) after fixing them.

3. **Stable Release** (End of month M+1)

At the end of month M+1, if there are no unexpected issues, we will promote the latest stable preview `x.y.z` to the official release and push it to all users in the stable channel.

4. **Maintenance Phase** (Month M+2)

In month M+2, version branch `x.y` enters the maintenance phase.
We will release stable updates irregularly based on the number and severity of issues fixed,
and push them to all users in the stable channel.

At the end of month M+2, after the official release of the stable version corresponding to version branch `x.y♯`, the lifecycle of version branch `x.y` ends, the Git branch `release/x.y` is
archived, and no longer receives updates.

## Long-Term Support Version Branches

Some special version branches are selected as Long-Term Support (LTS) branches.
Their lifecycle does not end with the official release of the next version branch's stable version.
We will continue to backport necessary patches to these branches for a longer period.

List of Long-Term Support Version Branches:

| Version Branch | Official Release Date | End of Lifecycle | Current Support Status | Notes |
|----------------|:---------------------:|:----------------:|:----------------------:|:-------------------------------------------------------------------------------------------------------------------------------------|
| 3.6 | November 23, 2024 | TBD | Supported | This is the last version branch that supports running on Java 8.<br>It is suitable for users on legacy platforms such as Windows XP. |
106 changes: 106 additions & 0 deletions docs/ReleaseSchedule_zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Hello Minecraft! Launcher 发布计划

<!-- #BEGIN LANGUAGE_SWITCHER -->
[English](ReleaseSchedule.md) | **中文**
<!-- #END LANGUAGE_SWITCHER -->

本文介绍了自 2025 年 10 月起的 HMCL 版本发布计划。

## 版本规则

### 版本分支

HMCL 存在多个**版本分支**,每个版本分支都以 `<主版本号>.<次版本号>` 的形式命名 (例如 `3.7`)。

其中,主版本号仅在 HMCL 发生重大架构变化时递增,次版本号会根据发布计划定时递增。

### 版本类型

HMCL 具有两种版本类型: **稳定版**和**开发版**。

#### 稳定版

HMCL 稳定版适合优先追求软件稳定性的用户使用。新功能在经过充分测试后才会被合并到稳定版中。

HMCL 稳定版版本号遵循 `<版本分支>.<构建号>` 的命名规则 (例如 `3.7.1`)。其中构建号对每个版本分支独立计算。

#### 开发版

HMCL 开发版适合希望优先体验新功能的用户使用。开发版会包含最新功能和 BUG 修复,但因为未经过充分测试,也可能会存在更多问题。

HMCL 开发版遵循 `<版本分支>.0.<构建号>` 的命名规则 (例如 `3.7.0.300`)。其中构建号对所有版本分支全局共享。

## 发布通道

HMCL 具有两个主要发布通道:**稳定版通道**和**开发版通道**。
它们分别用于发布 HMCL 稳定版和开发版。

为了在正式发布前测试 HMCL 版本,我们会向部分用户优先推送更新。
用户可以在「设置 > 通用」页面中打开「提前预览 HMCL 版本」选项以接收到对应通道的预览更新。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

以接收到对应通道的预览更新

此处的表达可能会让开发者误认为稳定版和开发版都有预览渠道,而实际上不存在“开发版预览”。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

开发版确实有预览渠道,只是平常不会使用。未来可能用于做灰度测试。


## 发布模型

```mermaid
gantt
title HMCL 版本生命周期 (示例)
section 3.9
开发阶段: a1, 2025-11-15, 30d
预览阶段: a2, after a1, 16d
稳定版发布: milestone, after a2, 0d
维护阶段: a3, after a2, 31d
section 3.10
开发阶段: b1, after a1, 31d
预览阶段: b2, after b1, 16d
稳定版发布: milestone, after b2, 0d
维护阶段: b3, after b2, 31d
section 3.11
开发阶段: c1, after b1, 31d
预览阶段: c2, after c1, 16d
稳定版发布: milestone, after c2, 0d
维护阶段: c3, after c2, 30d
```

通常情况下,我们每个月发布一个版本分支,每个版本分支 `x.y` 生命周期为两个半月。

每个版本分支生命周期分为以下阶段:

1. **开发阶段** (M 月中旬 ~ M+1 月中旬)

在此阶段,该版本在 Git 分支 `main` 中进行开发。

通常情况下,我们每周都会基于该分支发布一个开发版 `x.y.0.<构建号>`,其中包含当周合并的所有功能和错误修复。

2. **预览阶段** (M+1 月中旬 ~ M+1 月底)

在 M+1 月中旬,我们会基于 Git 分支 `main` 分叉出分支 `release/x.y`,其对应的版本分支固定为 `x.y`。

与此同时,Git 分支 `main` 对应的版本分支递增至 `x.y♯`,进入下一个版本分支的开发版阶段。

在完成分叉后,该版本分支不会新增更多功能,只会进行错误修复和数据更新。

我们会在数日内发布稳定版预览 `x.y.1`,并将其推送给稳定版通道且接受预览更新的用户。

在 M+1 月底前,版本分支 `x.y` 对应的稳定版将一直保持预览状态。
若在预览过程中发现问题,我们会在修复后发布并推送新稳定版预览 (如 `x.y.2`、`x.y.3` 等)。

3. **稳定版发布** (M+1 月底)

在 M+1 月底,如果没有意外情况,我们会将最新的稳定版预览 `x.y.z` 提升为正式版本,推送给稳定版通道的全部用户。

4. **维护阶段** (M+2 月)

在 M+2 月,版本分支 `x.y` 进入维护阶段。我们会根据修复的问题数量和严重程度不定期地发布稳定版更新,并推送给稳定版通道的全部用户。

在 M+2 月底,版本分支 `x.y♯` 对应的稳定版正式发布后,版本分支 `x.y` 生命周期结束,Git 分支 `release/x.y` 被存档,不再接受更新。

## 长期支持版本分支

部分特殊版本分支会被我们选择为长期支持 (LTS) 版本分支,
其生命周期不会因为下一个版本分支对应的稳定版正式发布而结束。
我们会在更长的时间中继续为这些分支移植必要的补丁。

长期支持版本分支列表:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

需要在表格内简述长期支持的理由吗?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

需要在表格内简述长期支持的理由吗?

加上应该比较好,我明天改吧。


| 版本分支 | 正式发布日期 | 生命周期结束日期 | 当前受支持状态 | 备注 |
|------|:----------------:|:--------:|:-------:|:---------------------------------------------------------|
| 3.6 | 2024 年 11 月 23 日 | 未定 | 支持中 | 这是最后一个支持使用 Java 8 运行的版本分支,<br>该版本分支适用于 Windows XP 等旧平台用户 |