From 07e5ac9e0e1371713d1cdcdec7e97a2e5f22efa4 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sun, 5 Oct 2025 20:36:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20ReleaseSchedule.md=20(#460?= =?UTF-8?q?6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ReleaseSchedule.md | 121 +++++++++++++++++++++++++++++++++++++ docs/ReleaseSchedule_zh.md | 106 ++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 docs/ReleaseSchedule.md create mode 100644 docs/ReleaseSchedule_zh.md diff --git a/docs/ReleaseSchedule.md b/docs/ReleaseSchedule.md new file mode 100644 index 000000000..188995a5c --- /dev/null +++ b/docs/ReleaseSchedule.md @@ -0,0 +1,121 @@ +# Hello Minecraft! Launcher Release Schedule + + +**English** | [中文](ReleaseSchedule_zh.md) + + +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 `.` (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 `.` (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 `.0.` (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.` 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.
It is suitable for users on legacy platforms such as Windows XP. | diff --git a/docs/ReleaseSchedule_zh.md b/docs/ReleaseSchedule_zh.md new file mode 100644 index 000000000..94f262562 --- /dev/null +++ b/docs/ReleaseSchedule_zh.md @@ -0,0 +1,106 @@ +# Hello Minecraft! Launcher 发布计划 + + +[English](ReleaseSchedule.md) | **中文** + + +本文介绍了自 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 版本」选项以接收到对应通道的预览更新。 + +## 发布模型 + +```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) 版本分支, +其生命周期不会因为下一个版本分支对应的稳定版正式发布而结束。 +我们会在更长的时间中继续为这些分支移植必要的补丁。 + +长期支持版本分支列表: + +| 版本分支 | 正式发布日期 | 生命周期结束日期 | 当前受支持状态 | 备注 | +|------|:----------------:|:--------:|:-------:|:---------------------------------------------------------| +| 3.6 | 2024 年 11 月 23 日 | 未定 | 支持中 | 这是最后一个支持使用 Java 8 运行的版本分支,
该版本分支适用于 Windows XP 等旧平台用户 |