从火花1.0.0,火花项目将遵循语义版本控制的指导方针有一些偏差。这些小差异占火花的自然多模块项目。
每个火花发布版本:[主要]。[功能]。(维护)
当新组件被添加到火花,他们最初可能标记为“阿尔法”。α组件没有遵守上述指导方针,然而,在最大程度上,他们应该尝试。一旦被标记为“稳定”他们必须遵循这些指导方针。
一个API是任何公共类或接口暴露在火花不是标记为“开发人员API”或“实验”。发布一个API兼容版本B如果代码编译版本编译干净对B。目前,无法保证对版本编译应用程序链接将链接干净版本B没有重新编译。链路级别兼容性是我们会尽量保证在将来的版本中。
但是请注意,即使对“开发人员API”和“试验版”特性,我们努力保持最大的兼容性。代码不应并入项目作为“试验版”如果有一个计划改变API之后,因为用户期望的最大兼容性从所有可用的API。
Spark项目力求避免破坏api或默默地改变人们的行为,甚至在主要版本。虽然这并不总是可能的,应考虑以下因素的平衡在选择打破一个API。
打破一个API几乎总是有一个非平凡的火花的用户成本。破碎的API意味着火花项目需要重写才能升级。然而,有一些思考将成本时注意事项:
API在火花多久了?
甚至是API常见的基本程序?
多久我们看到最近在JIRA或邮件列表的问题吗?
多长时间出现在StackOverflow或博客吗?
休息之后的行为——今天将一个程序是如何工作的,工作后休息?以下列出大致的顺序增加严重程度:
将有一个编译器和链接器错误?
会有一个运行时异常?
将异常发生大量的处理后做了什么?
我们会返回不同的答案吗?(很难调试,甚至可能不会注意到!)
当然,并不意味着我们将以上从来没有打破任何api。我们还必须考虑成本项目和我们的用户保持API的问题。
项目成本——每个API,我们需要测试,需要继续工作作为项目的其他部分的变化。这些成本明显加剧当外部依赖改变(JVM, Scala等)。在某些情况下,虽然不是完全在技术上不可行,维护特定API的成本会太高。
用户成本- api也有一个认知用户学习成本火花或试图理解火花程序。这种成本变得更高当问题令人困惑的API或未定义的语义。
API的情况下有一个“坏”,但成本也很高,还有别的选择,应考虑不损害现有用户,但地址的维护成本。
避免坏的api——虽然这有点明显,它是一个重要的点。随时添加一个新接口来引发我们应该考虑我们可能永远无法摆脱这个API。深入思考新api如何与现有的,以及你期望他们如何随时间而变化。
弃用的警告——所有弃用警告应该指向一个明确的选择,不应该只是说一个API是弃用。
更新的文档——文档应该指向的“最好”的推荐方式执行一个给定的任务。我们保持遗留文档的情况下,我们应该清楚地指出,新api和建议用户“正确”的方式。
社区工作——许多人学习火花StackOverflow等通过阅读博客和其他网站。然而,许多这些资源是过时了。更新它们,减少的成本最终消除弃用api。
分支是削减每年1月和7月,所以功能(“小”)发布的发生一般是6个月一次。因此,火花tripwire 2.2.0后通常会释放了大约6个月。根据需要维护版本发生在主版本之间。主要版本不会发生根据一个固定的时间表。
日期 | 事件 |
---|---|
2023年7月16日 | 代码冻结。发布分支切割。 |
2023年7月下旬 | QA周期。关注bug修复,测试,稳定性和文档。一般来说,没有新功能合并。 |
2023年8月 | 候选版本(RC),直到最终版本通过投票等 |
主版本分支,一般来说,保持与错误修正发布一段18个月。例如,2.3分支。x不再被认为是维护截至2019年9月,18个月后释放tripwire 2018年2月。2.3。x版本应该会在这一点上,即便是错误修正。
最后小发布在一个主要的发布通常会保持更长时间作为“LTS”版本。例如,测试盒框在2018年11月2日被释放,保持了31个月直到2.4.8 2021年5月发布。2.4.8是最后释放和2.4。x版本应该预期甚至bug修复。