非常感激考虑为 Ultralytics YOLO 项目做出贡献。参与不仅能够提升代码库的质量,还能为整个社区带来益处。本指南旨在为提供清晰的指导方针和最佳实践,帮助开始贡献之旅。
行为准则
为了确保一个对所有人都友好和包容的环境,所有贡献者都必须遵守行为准则。尊重、友善和专业性是社区的核心价值。
通过 Pull Request 贡献
非常欢迎通过 Pull Request 的形式参与合作。为了使审查过程尽可能顺利,请遵循以下步骤:
- 首先,
fork
Ultralytics YOLO 仓库到 GitHub 账户。 - 创建一个新的分支,并为其命名一个清晰且描述性的名称。
- 确保代码遵守项目的风格指南,并且没有引入新的错误或警告。
- 在提交之前,本地测试更改,确保它们按预期工作,并且没有引入新的问题。
- 提交更改,并附上一个简洁且描述性的提交信息。如果更改解决了特定问题,请在提交信息中包含问题编号。
- 从 fork 仓库向Ultralytics YOLO的主仓库发起 Pull Request。请清晰且详细地描述更改点以及它们如何改善项目。
CLA 签署
在合并 Pull Request 之前,需要签署Contributor License Agreement (CLA)
。这个法律协议确保贡献被适当地许可,并且项目可以在 AGPL-3.0 许可证下继续分发。
当提交 Pull Request 后,CLA 机器人会引导完成签署过程。只需在 PR 中添加一条评论:
I have read the CLA Document and I sign the CLA
Google-风格文档字符串
当添加新的函数或类时,请包含 Google-风格的文档字符串。这些文档字符串为其他开发人员提供了清晰、标准化的文档,帮助他们理解代码并进行维护。
def example_function(arg1: int, arg2: int = 4) -> bool:
"""Example function demonstrating Google-style docstrings."""
if arg1 == arg2:
return True
return False
GitHub Actions CI 测试
所有 Pull Request 在合并前必须通过 GitHub Actions 的持续集成 (CI) 测试。这些测试包括代码检查、单元测试等,确保更改符合项目的质量标准。请检查 CI 输出,并在有问题时进行修复。
报告 Bug
非常重视 Bug 报告,以维护项目的质量。报告 Bug 时,请提供一个清晰、简洁的Minimum Reproducible Example (MRE)
,即能够一致地再现问题的简单明了的代码示例。这有助于快速定位并解决问题。
许可证
Ultralytics 使用 GNU Affero General Public License v3.0 (AGPL-3.0) 许可证。这个许可证促进了软件开发中的开放性、透明性和共同改进。它确保所有用户都有自由使用、修改和共享软件,并培养了一个强大的社区,以促进协作和创新。
建议所有贡献者熟悉 AGPL-3.0 许可证的条款,以便有效地并符合伦理地为 Ultralytics 开源社区做出贡献。
感谢对 Ultralytics YOLO 项目的贡献感兴趣。参与对于塑造软件的未来和构建一个充满活力的创新和合作社区至关重要。无论是代码改进、Bug 报告还是新功能提议,贡献都非常宝贵。