非常欢迎为 Ultralytics 的开源项目做出贡献。参与不仅能够提升代码库的质量,还能惠及整个社区。本指南将为提供清晰的指导和最佳实践,帮助开始贡献。
行为准则
为了确保一个对所有人友好和包容的环境,所有贡献者必须遵守行为准则。尊重、友善和专业是社区的核心价值。
通过 Pull Requests 贡献
非常欢迎通过 Pull Requests 的形式来贡献。为了简化审查过程,请遵循以下步骤:
首先,fork
Ultralytics YOLO 的仓库到 GitHub 账户。然后,在 forked 仓库中创建一个新的分支,分支名称应清晰且描述性强,能够反映更改内容。
在代码更改中,请确保遵循项目的风格指南,并且不引入任何新的错误或警告。在提交之前,本地测试更改以确认它们按预期工作,并且不会引起新的问题。
提交更改时,请使用简洁明了的提交信息。如果更改涉及特定问题,请在提交信息中包含问题编号。
最后,从 forked 仓库向 Ultralytics YOLO 的主仓库提交一个 pull request。请提供清晰详细的解释,说明更改以及它们如何改进项目。
签署 CLA
在可以合并 pull request 之前,需要签署Contributor License Agreement (CLA)
。这个法律协议确保贡献得到了适当的许可,允许项目继续在 AGPL-3.0 许可下分发。
提交 pull request 后,CLA 机器人将引导完成签署过程。要签署 CLA,只需在 PR 中添加一条评论,声明:“已经阅读了 CLA文档,签署 CLA”。
Google 风格的 Docstrings
当添加新的函数或类时,请包括 Google 风格的 docstrings。这些 docstrings 提供了清晰且标准化的文档,帮助其他程序员理解和维护代码。
def example_function(arg1: int, arg2: int = 4) -> bool:
"""
Demonstrates a Google-style docstring for a function.
Args:
arg1: The first argument.
arg2: The second argument with a default value of 4.
Returns:
True if the operation is successful, False otherwise.
Examples:
>>> result = example_function(1, 2) # returns False
"""
if arg1 == arg2:
return True
return False
这个示例包括了 Google 风格的 docstring 以及参数和返回值的类型提示,尽管单独使用它们中的任何一个也是可以接受的。
GitHub Actions CI测试
所有 pull requests 在合并之前必须通过 GitHub Actions 的持续集成 (CI)测试。这些测试包括 linting、单元测试和其他检查,以确保更改符合项目的质量标准。
请查看 CI 的输出并解决出现的任何问题。
报告错误
非常重视错误报告,因为它们帮助维护项目的质量。报告错误时,请提供一个最小可复现示例 - 一个简单且清晰的代码示例,能够一致地复现问题。
这使能够快速识别和解决问题。
许可证
Ultralytics 使用 GNU Affero General Public License v3.0 (AGPL-3.0) 为其代码库授权。这个许可证促进了软件开发中的开放性、透明度和协作改进。
它确保所有用户都有自由使用、修改和共享软件,促进了一个强大的协作和创新社区。鼓励所有贡献者熟悉 AGPL-3.0 许可证的条款,以便为 Ultralytics 的开源社区做出有效和道德的贡献。
感谢对 Ultralytics开源项目YOLO 的兴趣。参与对塑造软件的未来和构建一个充满活力的创新和协作社区至关重要。无论是改进代码、报告错误还是建议新功能,贡献都是无价的。