弃用极狐GitLab 功能

这篇文章包含了有关如何以及何时移除或对极狐GitLab功能进行重大更改的信息。

有关本页使用的术语的详细信息,请参见术语

减少重大更改的影响#

提前将重大更改对客户的影响降到最低,将确保干扰尽可能小。产品和工程团队应紧密合作,以了解 1) 谁会受到最大影响以及如何受到影响,以及 2) 哪些工具可能帮助我们的用户迁移。

何时可以弃用功能?#

弃用应在弃用功能移除计划上宣布。

不要在引入弃用代码更改的合并请求中包含弃用公告。使用单独的 MR 创建弃用条目。

弃用、支持结束、移除流程

API 弃用和重大更改#

我们的 API 在弃用和重大更改方面有特殊规则。

REST API v4#

REST API v4 不能进行重大更改,除非该 API 功能之前已标记为实验或测试版

请参阅重大更改的替代措施?

GraphQL API#

GraphQL API 在进行重大更改之前,要求有一个比标准周期更长的弃用周期

请参阅GraphQL 弃用流程

如何处理对弃用功能的社区贡献?#

对弃用功能的开发仅限于优先级 1 / 严重性 1 的错误修复。对弃用功能的任何社区贡献在里程碑规划期间不太可能被优先考虑。

何时可以移除/更改功能?#

功能或配置只能在主要版本中移除/更改。

它们必须提前弃用。

REST API v4 不能进行重大更改,而 GraphQL 在进行重大更改之前有一个比常规极狐GitLab功能更长的弃用周期。请参阅API 弃用和重大更改

有关配置移除,请参阅Omnibus 弃用政策

有关版本控制和升级详细信息,请参阅我们的发布和维护政策

在小版本中请求重大更改#

极狐GitLab私有化部署软件包是语义版本化的,并遵循我们的维护政策。此过程适用于一般可用的功能和 API,而不是测试版或实验版。

此维护政策旨在通过建立一个在软件行业广泛使用的清晰和可预测的模式,让我们的客户为重大更改做好准备。对于许多客户来说,极狐GitLab 是一个业务关键的应用程序,意外的更改可能会造成损害并侵蚀信任。

在小版本中引入重大更改违反了政策,因为它可能会干扰我们的客户,并引入了一个随机性的因素,要求客户在每个小版本中检查重大更改,以确保他们的业务不受影响。

重大更改在合并到代码库后部署到极狐GitLab.com,并不遵循小版本节奏。

打破我们自己的政策,特别是在小版本中发布重大更改,仅限于极狐GitLab 确定推迟重大更改总体上会对客户产生更显著负面影响的情况。评估是否授予例外的最重要标准是客户的结果。

在小版本中引入重大更改需要产品经理和工程经理遵循以下流程请求例外:

  1. 使用重大更改例外模板在产品问题跟踪器中打开一个新议题
  2. 标题应采用格式重大更改例外:描述
  3. 提供重大更改的影响评估
    1. 有多少客户受影响?
    2. 我们能否在不进行重大更改的情况下获得相同的结果?(即,没有移除)
    3. 重大更改是否可以等待到下一个主要版本,或下一个计划的升级停止,例如数据库场景
    4. 客户可以通过什么替代方案来完成重大更改将破坏的同一任务?
    5. 客户迁移到替代方案有多困难?是否有迁移计划?
  4. 提供沟通计划并建立明确的时间表,包括目标小版本。
  5. 通知支持和客户成功,以便他们可以与相关客户分享信息。
  6. 获得开发副总裁、产品管理副总裁和客户支持副总裁的批准
  7. 获得首席产品官和首席技术官的批准

更新弃用和移除文档#

弃用和移除文档是根据位于gitlab/data/deprecations的 YAML 文件生成的。

要在添加、编辑或移除 YAML 文件时更新弃用和移除页面:

  1. 从命令行,转到您的本地克隆的gitlab-org/gitlab项目。

  2. 创建、编辑或移除位于data/deprecations下的 YAML 文件。

  3. 编译弃用和移除文档:

    shell
    bin/rake gitlab:docs:compile_deprecations
  4. 如果需要,可以验证文档是否是最新的:

    shell
    bin/rake gitlab:docs:check_deprecations
  5. 提交更新的文档并推送更改。

  6. 使用弃用和移除模板创建合并请求。

更新重大更改窗口文档#

重大更改窗口文档是基于位于 gitlab/data/deprecations 的 YAML 文件中的window值生成的。

要在添加、编辑或移除 YAML 文件时更新重大更改窗口页面:

  1. 从命令行,转到您的本地克隆的 gitlab-org/gitlab 项目。

  2. 创建、编辑或移除位于 data/deprecations 下的 YAML 文件。

  3. 编译重大更改窗口文档:

    shell
    bin/rake gitlab:docs:compile_windows
  4. 如果需要,可以验证文档是否是最新的:

    shell
    bin/rake gitlab:docs:check_windows
  5. 提交更新的文档并推送更改。

  6. 创建合并请求。