Skip to main content
Version: 3.0

提案流程(RFCs process)

caution

提案流程目前只对内开放

什么是提案流程?

提案流程(request for comments process),旨在为 NASL 引入新特性或变更时提供一致且可控的路径。

提案生命周期

一个提案经历以下阶段:

  • Manuscript: 提案未完成;
  • Pending:当该提案待评审;
  • Active:当该提案已评审通过;
  • Landed:当该提案的变更在实际版本中发布后;
  • Rejected:当该提案未通过评审。

哪些情况需要遵循此流程?

如果您想对 NASL 的以下方面进行更改、创新或删除时,需要遵循此流程:

  • NASL 的语法树
  • NASL 的语义(提供框架的声明)
  • NASL 的标准库 API(包括内置数据结构、内置函数、内置逻辑)
  • NASL 的文本语法*

其他方面如基础组件库的 API 待后续考虑。

为什么需要这样做?

很高兴您正在考虑对 NASL 提出新功能或更改建议——我们感谢您的贡献!目前有很多岗位的同学直接或间接参与到 NASL 和相关库的设计和实现中,随着低代码产品由快速增长转向完善体验的阶段,我们需要更加重视稳定性,因此必须仔细考虑我们所做的每一个变更到中间的开发实施和对最终用户的影响。

流程是怎样的?

简单来说,要对上文中提到的 NASL 几个方面进行更改、创新或删除时,需要进行提案。目前的提案方式有两种基于issue和基于MR,详细流程见下方说明。 不管使用何种方式均都需要根据此仓库中的.gitlab/issue_templates/feature_request.md模板来编写您的提案

  • 最重要的是清晰直观,重点描述变更项和具体含义,其他直接链接对应的 specification;
  • 如果有技术评审文档的,可以无内容直接链接技术评审文档。
  • 事先可以线下收集一下大家的反馈,优化提案质量。

基于issue的提案流程(轻量级,在线编辑)

  • 点击左侧Issues右侧点击New issue创建issue
  • 填写标题并在Description栏选择feature_request作为模版
  • 填写提案内容并在Labels中选择合适的标签
    • 根据提案状态(择一):Manuscript(未完成)、Pending(可以交付评审)、Active(已评审通过)、Landed(已上线)
    • 根据提案内容(可多选):标准库语义语法树
  • 点击左下角Create issue

基于MR的提案流程(重量级,本地编辑)

  • clone 这个仓库;
  • checkout 分支 feature/0005-some-rfc
  • 添加您的提案到文件中active-rfcs/0005-需求A.md
  • 提交 MR。

最终,NASL 技术委员会将决定该提案是否会引入 NASL 中。

核心成员

目前 NASL 技术委员会包括以下核心成员(按姓名拼音升序),负责处理日常提案的评审事务:

李雯燕、庞概、汪韬、杨剑飞、张炜昕、赵雨森、赵忠杰、朱子润

评审提案

线上文档评审

考虑到8位评审成员拉会成本较高,为了减少评审环节和提高效率,后续 NASL 评审统一改为线上文档评审

提案人发起提案后,可以在 issue 中添加到期日。如果是涉及当前迭代需求的提案,需要给 issue 添加 label 当前迭代来提高优先级。

然后全部评审成员在到期日之前在线上完成评审(特殊情况提案人可以单独催评审成员),针对当前迭代需求的提案在迭代第2周提升优先级集中评审。

善于线上文档评审,眼睛👁表示已阅读,点灭👎表示反对通过(不同意提案内容或需要讨论),反对需要在评论区说明理由。

NASL 提案通过标准是:NASL 技术委员会成员(排除请假等特殊情况成员,日常为8人),全部已阅读👁且0人反对👎

如果有人反对,提案人需要根据情况修改提案、在评论区讨论(推荐,将清晰的讨论过程和结论记录在评论区)、或拉会讨论(最终需要在评论区记录重点和结论)。然后通知进行下一轮评审,评审成员修改意见,直到无人反对。

周期会议

针对部分提案难确定结论,线上评审不及时的情况,制定 NASL 评审周期会议,每周二下午 14:00 - 18:00,有提案就评审,没有提案就放空。

会在上一个星期的周四提前发出来需要评审的提案。

实施提案

  • 提案的作者没有义务来实施它。当然,欢迎提案的作者在提案被接受后参与到设计和开发中。
  • 一个Active的提案需要关联一个 EP 上的 Feature 链接,然后按照正常的迭代流程执行。

灵感来源

其他

NASL 提案流程与日常产品的其他流程不冲突。NASL 提案流程和 NASL 技术委员会只关注 NASL 变更时是否一致和可控。

NASL 提案流程可以有多种输入,比如产品日常需求涉及 NASL 语义变更、开发人员提案、产品新提案等。NASL 提案流程也可以有对外输出,比如技术主动发起的 NASL 提案,影响到产品调整,这时反馈到产品进行提案。