OCaml 平台的指导原则
OCaml 平台由一组指导原则驱动,旨在服务于社区并推动 OCaml 工具的进步。
(P1) 工具拥有良好的默认设置,并且可自定义
OCaml 平台旨在降低新手的入门门槛。 约定优于配置 减少了开发人员需要做出的决策数量。通过尽可能减少开始编码的步骤,我们简化了入门体验。
在优先考虑易用性和开箱即用体验的同时,工具应允许高级用户进行自定义,了解到项目的需求各不相同,并且平台应足够灵活以适应这些不同的需求。
(P2) 体验多样化,但无缝衔接
OCaml 平台旨在支持每个重要的开发工作流程。尽管此目标导致固有的复杂性,但最终的用户体验应是无缝的。
我们设想开发工作流程应尽可能自动化,创造一种体验,使中断成为例外情况。当完全自动化不切实际时,端到端工作流程应最大限度地减少用户交互。
(P3) 工作流程简单且可扩展
OCaml 平台旨在提供良好的用户体验。其中一个关键部分是遵守 最小惊讶原则。工具应该以大多数人预期的方式运行,用户应该能够形成工作流程的简单心理模型。
有状态工具本质上比无状态工具更复杂。在可能的情况下,工具应为无状态的,并使用“配置优于命令”,这意味着用基于配置的方法替换状态。
在优先考虑简单性的同时,工作流程仍应扩展到大型代码库。相同的工作流程应可用于单开发人员项目和工业级 OCaml 代码库。性能对于可扩展性至关重要。随着代码库的增长,工具仍应保持其性能。
(P4) 工具快速发展,但不会破坏项目
OCaml 平台已作为 OCaml 开发人员体验的支柱存在十多年。它打算在未来几十年继续这样做。OCaml 平台被设计为一系列工具的集合,这些工具遵循生命周期。这种设计源于对强大的向后兼容性和快速发展灵活性的双重需求的认识。
我们认识到工具会随着时间的推移而出现和过时;因此,我们非常重视设计独立于工具的元数据文件,这些文件将长期保存。这些文件应进行版本控制,并且工具应尽可能支持尽可能多的版本。
孵化工具只有在成熟、稳定并准备好进行大规模采用时才会提升到活动状态,旨在培养健康的竞争环境,而不会冒社区分裂的风险。但是,无论何时不可避免地发生中断,无论是出于工具改进的考虑还是用另一个工具替换工具,平台都应为用户提供平滑的迁移路径。
(P5) 工具独立,但统一
继 P4 之后,我们强调允许工具独立发展的关键重要性:OCaml 平台存在并且将继续作为可以独立使用的工具集合而存在。
然而,为了创造良好的用户体验,该平台提供了统一的体验并努力确保工具之间的交叉兼容性。
这种统一的体验意味着存在一个充当平台工具前端的单一 CLI。在编辑器上,这意味着开发工作流程应该可以直接从编辑器内部访问,避免用户需要诉诸命令行。
在这一集成过程中,我们坚定地承诺确保工具保持其独立性,并继续可以通过其自己的 CLI 访问。
(P6) 平台具有凝聚力,但可扩展
在努力实现统一体验(P5)的同时,我们旨在支持希望使用不属于平台的工具的用户。
希望在工作流程中使用其他工具的用户应该能够这样做,而不会感到自己是二等公民。
这可以通过插件系统或实现来实现,这些系统或实现足够通用以支持不同的工具。
1.0.0 版 - 2023 年 8 月 21 日
OCaml 平台指导原则的第一个版本于 2023 年 8 月被采用。您可以回顾 讨论。
1.0.1 版 — 2022 年 9 月 19 日
- 更坚决地承诺保持平台工具的独立性,并保留直接使用其 CLI 的可能性。