提出一项新功能¶
我们随时欢迎大家为 BeeWare 的新功能或文档提出建议和想法。但如何提交您的想法以供考虑呢?
开始之前¶
我们已经有一长串想要实现的功能,但资源非常有限。如果您有能让 BeeWare 变得更好的想法,我们很乐意听取您的意见。如果有足够多的人提出相同的要求,核心团队可能会实现该想法。但是,提出功能请求本身不太可能导致该功能在近期内实现。
BeeWare是一个开源社区。确保功能实现的最有效方法就是自己实现。我们将竭尽所能帮助贡献者实现他们希望添加的功能。如果您要求核心团队免费为您实现某项功能,我们将不会接受。
如果您无法亲自实现某项功能,另一种加速功能开发的方法是花钱请人代为实现。如果您想讨论付费优先开发某项功能,请联系BeeWare团队。
提出新功能建议¶
最显而易见的建议就是新的 API 或功能。如果您有BeeWare目前不支持的用例,或者有BeeWare目前无法使用的本地平台功能,您可能需要提出一项变更来弥补这一不足。
在提出新功能时,请牢记 BeeWare 工具套件支持多种平台。这意味着任何新功能都必须
- 适用于所有平台并可在所有平台上实现(例如,每个图形用户界面工具包都有 "按钮 "的概念);或
- 适用于相同 "类型 "的平台,并适合忽略其他平台(例如,所有手机都有加速度计;但有加速度计的台式机并不多,因此加速度计应用程序接口适用于 iOS 和 Android,但不适用于台式机或网络平台);或
- 在不改变公共 API 的情况下,允许访问内部平台功能(例如,不能添加明显针对 Android 的功能,但可以让最终用户更容易从自己的代码中访问针对 Android 的功能)。
这并不意味着您需要负责在每个平台上实现某个功能。如果您无法使用苹果硬件,我们就不能期望您提供 macOS 或 iOS 的功能实现。不过,作为设计流程的一部分,我们需要确定有可能以您描述的方式实现某个功能。
建议编写新文档¶
您可能想提出的另一项建议是改进文档。如果您有改进 BeeWare 文档的想法,请考虑以下因素:
- 您的建议是否与现有文档重叠?您是建议制定新指南,还是对现有指南进行补充?
- 它如何融入BeeWare生态系统的其他部分?本项目是记录该想法的合适场所吗?或者我们应该在另一个项目中记录一个功能,并链接到该文档?
- 是否有高层次的概念需要解释,然后才能使任何具体说明具有意义?
- 我们是否有必要对该主题进行解释,或者是否有人已经在其他地方介绍过该主题,我们是否可以参考?
如果您对这些内容不确定,请不要担心!提交您的想法,并在初步讨论中告诉我们您的不确定之处,我们将帮助您将想法转化为适合 BeeWare 文档的形式。
提交功能建议¶
提出一项新功能
因此,您对 {{ 正式名称 }} 的改进有了一个想法。- 如何提交该想法以供考虑?
调查研究¶
第一步是搜索 BeeWare 问题跟踪器中现有的 功能问题(标记为 "增强 "的问题)。
讨论想法¶
如果您没有找到与您的想法相关的任何现有参考资料,请启动一个[讨论主题](https://github.com/beeware/beeware/discussions)。对您的想法的目的和用例进行高级描述。包括您对该功能实现后的外观的任何想法,例如 API 的总体形状、功能的视觉外观或将要添加的文档。如果适用,还应包括您就您的想法在不同平台上的表现形式所做的任何研究。
讨论主题开启后,BeeWare 团队和社区的其他成员将作出回应。核心团队的目标是在两个工作日内对您的想法提供至少一个初步印象。如果想法特别复杂,更详细的分析可能需要一周时间。节假日和会议等活动可能会导致上述时间略微延长。
这是您参与有关您想法的对话的机会。我们可能会询问更多细节或背景情况。社区的其他成员也可以参与讨论,提供其他观点、建议或反建议。讨论结果将决定接下来的步骤。
重要的是要明白,并非所有想法都会被接受。这个过程之所以从提案开始,是为了避免你投入了所有的工作,却发现你的改变不被接受是有原因的。
这并不意味着这不是一个好主意!可能有技术原因导致无法实施。例如,在以下情况下,我们可能会拒绝某个想法
- 很难或不可能在所有支持的平台上可靠地实施;或
- 难以维护,或维护需要使用尚未普及的技术或软件;或
- 它为小众用户提供服务,但对其他用户造成了巨大的开销。
如果我们认为您的想法不合适,并不一定意味着您应该放弃。虽然我们可能会拒绝某个具体的想法,但我们可能会更乐于为您添加一个插件接口或其他扩展点,让您可以将相同的功能作为外部库来维护。这样,您就可以拥有该功能,而不会因为具体的维护问题或功能限制而对项目本身造成制约。
转换为正式功能请求¶
一旦讨论就功能的形式达成共识,您就可以在 BeeWare 问题跟踪器中创建一个新的功能请求问题 ,对讨论进行总结,并链接到讨论的上下文。
您不必自己实现您的功能建议;您可以打开一个问题,详细说明您的建议。但是,仅仅发布问题并不意味着它就会为您实现。您需要等待对同一功能感兴趣的其他人(无论是其他社区成员还是核心团队)将其采纳;但这并不保证一定会发生。如果您想要保证实现,您需要自己实现,或者花钱请别人代为实现。