跳到内容

最新提交

 

历史

历史
194行(160个位置)·11.4 KB

建议书.md

文件元数据和控件

194行(160个位置)·11.4 KB

建议

想要更改基础? 伟大的!我们很想听听你的建议。只需遵循此处列出的步骤,这样您的想法就不会失去吸引力!

TL;DR计划书生命周期快速概述:

  1. 创建问题你的想法。
  2. (如有要求)执行提案。
  3. (如有要求)品牌影响评估(打破更改是必需的)。
  4. (如有要求)请在评论中告知受影响库的补丁程序。
  5. 等待投票。
  6. (如果接受)写一份迁移指南(针对有突破性更改的提案)。

“什么”

如果你有一个想法语言扩展编译器警告,您应该遵循以下步骤GHC提案流程而不是这个。这些是编译器特定的功能,不在CLC的关注范围内。

如果你对如何提高绩效、行为、,或结构基础,太棒了!这是我们很想听到的。你应该遵循以下步骤,记住越大建议的范围越详细。

“如何”

不同的想法有不同的规模和范围。并非每个提案都符合相同的僵化格式,当你被告知必须写一份正式文件时,这让人沮丧当您只想对一两个函数进行优化时。然而,一个伟大的想法只有在你能说服别人它也是好的时候才能实现。以下是您可以采取的措施:

  • 打开问题在核心图书馆委员会GitHub页面。

    • 这将是您的提案的讨论中心。相关讨论,包括与CLC成员的讨论,将在这里进行;将请求合并到基础以及其他相关行动将在拍摄时引用此问题。

    • 标题应该清楚地说明您的提案的最终目标。例如:

      • “替换所有出现的返回具有纯净的"
      • “将助手函数从函数名称"
      • “提高分类"
    • 写一段左右(与范围成比例)关于你的提案旨在实现的目标以及您希望实现的原因。把它卖给我们!以下是一些帮助您入门的提示:

      • 现在怎么了?
      • 你考虑过变通方法吗?什么起作用了?
      • 如果今天合并,你能做什么?
    • 如果你已经准备好了一些修改草案,你可以在这里包括一些摘录,在设置拉取请求之前。

    • 如果您的提案包含破坏性更改,您必须包括一个影响评估.A型迁移向导如果破坏影响到许多库或关键库,也可能会请求。

问题创建者负责审查他们的提案。核心图书馆委员会的重点是管理,不执行:你应该为自己的提案做工作(如果你喜欢,也可以说是其他人的!)向我们展示你认为值得这么做。

更准确地说,作为提案的作者,您需要执行以下操作任务,或者找志愿者为你做这件事。你可以发布一个简短的提议在整个过程中投入时间和精力之前,要求对可行性进行反馈。

  1. 完善你的提议。
  2. 进行影响评估。
  3. 编写迁移指南。
  4. 做一些关于编写迁移补丁的工作。补丁可以几种形式提供:
    • 向受影响的项目包提交PR草案,但要明确传达该提议尚未被接受,
    • 使用补丁包创建fork存储库和a小屋项目模板使用它们,
    • 或者只共享修补程序文件,格式与头部黑客攻击做。
  5. 执行提案。
    • 注册地址:https://gitlab.haskell.org/ghc/ghc.
    • 如果您的帐户没有很快获得批准(这是一个手动过程来打击垃圾邮件),在CLC讨论线程中请求批准,有人会处理它。
    • 分出GHC存储库并实施您的提案。(最好是创建一个新分支,而不是在主人,请参见下文。)
    • 跟随GHC的“贡献补丁”指南创建MR时(例如。适当的提交消息).
    • 确保在提交消息中包含CLC讨论的链接。
    • 确保更新librarys/base/changelog.md.(您可能希望插入新条目在任意位置而不是最后一个位置,以最大限度地减少合并冲突。)
    • 提出合并请求(MR)。确保合并请求不是来自分支打电话主人因为这将导致Marge Bot出现问题。(GitLab合并请求的工作方式类似于GitHub所称的“拉请求”(pullrequest,PR)。)
    • 不要把你的MR标记为“草稿”,你实际上是想让人们注意并且尽早审查。“草案”通常被潜在的评审人员所理解作为“私人实验”。
    • 编写测试总是一个好主意,对于语义变化(如果可行)。
    • 如果您碰巧有权分配标签,请将MR标记为“核心库”和“需要CLC反馈”。
    • 如果您的建议修改现有实体的类型或添加新实体,您可能需要调整基准测试套件/测试/接口稳定性。通常你可以通过跑步来做到hadrian/build-j测试--仅=基本导出--测试接受并将更改复制到相邻文件。
    • 除非你的树枝特别大,否则最好把它挤成一次提交。目前GitLab不提供“挤压合并”功能选项,因此必须手动维护。

“何时”

如果你有一个宠物问题,那就是一直睡在邮件列表的深处有一段时间,你认为每个人都忘记了,现在是你的机会!如果其他人想要同样的东西,请双击问题页面。如果他们这样做了,就投赞成票,而不是自己做!否则,是你发亮的时候了;写一份提案,我们一定会给它适当的程序。

但唉,我听到你叹息,如果它被遗弃了怎么办再一次?好吧,这里是问题追踪者胜过邮件列表的地方:跟踪长期运行的项目是关键!通常,CLC会等待开始内部投票过程直到公众对提案的讨论结束,但如果问题创建者或主要撰稿人发现太多的自行车活动正在发生并且想要做出裁决,他们可以选择手动触发投票(“嘿,CLC,我希望你现在就投票:”)。一旦投票过程开始或没有新的评论对于7天的问题,CLC将有14天的时间得出结论,或者,如果我们无法达到目前的目标,请联系我们进一步考虑。

“谁”

我们渴望回应评论、推送请求和直接电子邮件到达后不超过14天。我们想确保哈斯克尔社区认为他们可以让我们对此负责。

为此,如果你认为我们花了太长时间作出回应,CLC没有在监控活跃问题方面进行尽职调查,或者有其他顾虑,我们认为GHC开发团队,的所有者基础图书馆,应有权撤回保管来自委员会。

影响评估

为了更清楚地了解提案的下游影响,CLC要求提案人在做出最终决定之前起草一份对其变更的影响评估。如果建议书包含以下内容,则必须完成影响评估中断更改建议使用,即使更改只是附加的,尤其是在预期名称冲突或从序曲重新导出的情况下。

  • 分叉和构建较新版本的GHC(比如,最新的官方版本),其中包括您的提案中所做的更改。您还应该对更改提出合并请求,并将其添加到提案的问题中。
  • 尝试构建clc-堆叠使用您定制的强化GHC。指出更新中的重要中断。
  • 一旦所有中断的内容都收到补丁,请在评论中告诉我们它们的提交位置。然后,委员会就可以投票了!
  • 如果您的提案获得批准,我们鼓励您对受影响的包提出拉取请求。使维护人员能够轻松适应新的更改,从而提高提案流程的效率:)

有关更多详细信息,请访问clc-堆叠如何操作.

请注意,附加或新的警告和弃用不属于破坏性更改。我们假设启用-Werror公司做出明智的选择,尽早破坏他们的构建,并尽可能致命。

提案生命周期

您的提案可能会经历相应标签所示的不同阶段:

  • 等待-盈利你的提案应该写得更详细,以产生一个可行的项目。
  • 等待-ghc-proposal在对您的提案进行进一步修改之前,应更改GHC。
  • 等待-影响评估您需要执行影响评估,以便CLC能够更好地了解断裂冲击。
  • 等待-MR您需要在基础因为以前很难投票查看实际实现。
  • 经核准的祝贺 你!你的提议被批准了。现在您需要实现它(如果你还没有这样做)并帮助其他人迁移他们的代码中断更改。
  • 拒绝您的提议已被拒绝。此时,你不需要做任何事情用它。
  • 超出范围您的提案不是CLC投票的主题。
  • 撤回你决定不明确地执行这个建议。
  • 被遗弃的提案的作者是MIA,没有人接受该提案。