绿色检查
链接复制到剪贴板

开始为Ultralytics 开源项目做贡献的技巧

了解如何为Ultralytics 开源项目做出贡献,并探索与文档、审核 PR 和使用基本工具相关的最佳技巧。

开源软件的基础是协作、学习和共享。开放源码项目是人们聚集在一起构建比自己更大的东西的好方法。在Ultralytics ,我们将开源原则牢记于心,并始终鼓励您为我们的开源项目做出贡献。 

如果您很想贡献自己的力量,无论是通过编写文档、审查代码还是解决问题,但不知道从何入手或面临一些问题,我们将帮助您开始。在本文中,我们将向您介绍一些开始参与Ultralytics 开源项目的技巧。让我们直接进入主题!

Ultralytics 社区贡献的重要性

在了解如何贡献之前,我们先来回答为什么贡献如此重要。我们坚信Ultralytics 社区贡献的重要性。通过参与我们的开源项目,您所做的不仅仅是帮助我们构建更好的软件。贡献者在确保我们的技术保持开放、协作和不断发展方面发挥着关键作用。您的贡献使我们的项目蓬勃发展、易于访问,并使世界各地的用户和开发人员受益!

除了创建尖端软件,参与Ultralytics 项目也是您成长的绝佳机会。您可以培养自己的编码、解决问题和团队合作技能,同时与经验丰富的开发人员并肩工作,由他们提供指导并分享最佳实践。您的努力可以对全球成千上万人使用的工具产生真正的影响。参与我们的社区活动还可以帮助您扩展专业网络,开拓新的机会,并增强您的投资组合,使您在雇主面前脱颖而出。

图 1.做出贡献的原因。图片由作者提供。

如何从Ultralytics 开源贡献开始

查看 Ultralytics 官方贡献指南是一个很好的开始。该指南包含大量最佳实践和技巧,可帮助您充分利用您的贡献。第一步是通过了解贡献指南和深入研究代码,熟悉项目中已有的内容。 

无论你是想参与开发,还是只想探索最新代码,下一步都需要克隆Ultralytics 仓库。完成后,您就可以进入项目目录,以可编辑模式安装软件包,如下图代码片段所示。


# Clone the ultralytics repository
git clone https://github.com/ultralytics/ultralytics

# Navigate to the cloned directory
cd ultralytics

# Install the package in editable mode for development
pip install -e .

如果您需要帮助,我们的快速入门指南将为您提供顺利入门所需的一切。

可作出贡献的不同领域

Ultralytics 提供多种参与方式,您可以根据自己的技能和兴趣选择贡献方式。 

下面我们来看看其中的一些选择:

  • 文档:参与文档编写是深入了解项目并磨练写作技巧的好方法。您可以通过改进现有文档、添加缺失的细节或创建新指南来帮助他人更轻松地做出贡献。
  • 错误修复:如果您有一定的编码经验,可以考虑参与错误修复工作。这些工作既包括微小的调整,也包括更复杂的问题,让您有机会对项目产生切实的影响。
  • 功能增强:对于那些准备深入研究的人来说,功能增强工作既具有挑战性,又能带来丰厚的回报。这可能涉及添加新功能、改进现有功能或制定项目路线图。
  • 拉取请求审查:审查拉取请求是另一种有价值的贡献方式,尤其是在您熟悉项目标准和最佳实践的情况下。通过提供反馈和改进建议,您可以帮助维护代码库的质量和完整性。
  • 社区讨论:如果您喜欢合作和分享想法,参与社区讨论是您做出贡献的绝佳方式。参与正在进行的对话,提出新想法,或通过提供自己的见解和解决方案来帮助他人。

每个领域都提供了独特的贡献方式,您可以选择最符合自己优势和兴趣的领域。请记住,每一份贡献,无论多么微小,都会在帮助Ultralytics 发展壮大的过程中发挥关键作用。

图 2.在我们不断发展壮大的社区中,每一份贡献都会受到重视。图片来源:Envato Elements:Envato Elements.

为Ultralytics 开放源代码文档供稿

在为Ultralytics 文档撰稿时,请务必查看现有文档,并检查是否有任何问题或讨论突出了需要改进的地方。这样做有助于确保您的贡献集中在最需要的地方。 

在撰写或编辑时,请记住遵循项目指南以保持一致性是关键。以下是一些格式提示:

  • 始终使用Markdown 格式
  • 每份文件的开头都要有清晰的介绍,语言要简洁易懂。 
  • 在列表中使用项目符号,在链接中使用描述性文字,并使用 1 MB 以下的图片,以便快速加载页面。
  • 如果您对格式有疑问,一个简单的方法就是查看以前的文档是如何格式化的,从而仔细检查您的格式。
图 3.Markdown 格式化示例(左侧)和最终可视化文档(右侧)。图片由作者提供。

完成草稿后,在本地构建文档进行预览非常重要。您可以在提交前发现任何问题。要做到这一点,首先要克隆版本库并导航到项目目录:


git clone https://github.com/ultralytics/ultralytics
cd ultralytics

接下来,您可以安装必要的依赖项:


pip install -e ".[dev]"

最后,在本地提供文档,以审查您的更改:


mkdocs serve -f mkdocs.yml

您可以在网络浏览器中导航到 `http://127.0.0.1:8000/` 查看本地构建的文档。 

在审查清晰度、准确性和一致性后,您可以提交拉取请求,并清楚地描述您创建的文档。请务必根据文档的归属和最合适的位置(指南解决方案集成等)将其放入相应的部分。还请查看相关部分的 index.md 文件和整个 mkdocs.yml 文件,并根据需要进行更新。对细节的关注将有助于审核过程的顺利进行,并确保您的贡献能很好地整合到项目中。

贡献开放源代码时应注意的事项

在为Ultralytics 项目贡献代码时,必须遵循有助于确保代码整洁、可维护且易于集成的最佳实践。以下是一些需要牢记的要点:

  • 避免代码重复:尽可能重复使用现有代码,尽量减少不必要的参数。
  • 进行较小的、有针对性的修改:专注于较小的、有针对性的改动,而不是大的改动。
  • 简化或删除代码:寻找机会简化代码或删除不必要的部分。
  • 编写有效的 文档字符串:清楚地解释代码的作用,并链接到相关资源。
  • 避免不必要的依赖:只有在绝对必要时才添加依赖项。
图 4.源代码文档最佳实践。

考虑代码库的长期可维护性也很重要。在进行任何修改之前,先问问自己您的修改是否会破坏他人使用Ultralytics 的现有代码。如果会,请考虑如何解决这个问题,并确保您的修改尽可能兼容。

一旦您开发了一段代码,就需要对其进行测试。在提交之前,您可以使用pytest等框架来测试您的修改。代码格式的一致性也是非常重要的一点。Ruff Formatter 等工具可以帮助您保持风格一致,并检测代码中的任何逻辑错误或不一致之处。 

审查拉取请求

审核拉取请求(PR)是一种很好的贡献方式!当有人要求将其修改合并到主项目中时,就会提出 PR。它有助于保持Ultralytics 项目的顺利运行。在审核 PR 时,请确保您了解进行更改的原因。作者应清楚地解释更新的目的和好处,您还应在 PR 中看到彻底测试的证据。 

图 5.什么是拉取请求?

让我们来看看需要关注的几个关键问题。

  • 检查单元测试:检查 PR 是否包含对新功能或变更的测试,以确认代码是否能按预期运行,是否会引入问题。
  • 审查文档更新:验证文档是否已更新,以反映变更或新功能,包括示例、API 参考及其他相关细节。
  • 评估性能影响:考虑更改对性能的影响。如有必要,可申请性能基准或额外测试。
  • 验证 CI 测试:确保所有持续集成 (CI)测试通过,包括检查代码格式和单元测试结果。
  • 合作修复:如果任何测试失败,请在批准 PR 之前与作者合作解决问题。

作为审稿人,一定要提供具体明确的反馈意见,说明任何问题或疑虑。提出改进建议和问题,帮助作者思考潜在的问题。鼓励他们遵循编码、测试和文档方面的最佳实践,并毫不犹豫地向他们指出可以提供帮助的资源。最后但并非最不重要的一点是,一定要肯定作者在公关中所付出的努力。积极的反馈有助于保持开源社区友好协作的氛围。

投稿与社区息息相关

为Ultralytics 这样的开源项目做出贡献,可以让您感受到鼓舞人心的社区氛围。无论是编写代码、审核 PR、更新文档还是参与讨论,您的每一份努力都有助于项目的成长和发展。无论是在GitHubDiscordSubreddit 还是其他论坛上,回答问题或参与对话都是贡献力量并与他人建立联系的重要方式。请记住,您的贡献无论多么微小,都会产生重大影响,并有助于为每个人营造一个协作和支持的环境!

在Ultralytics ,我们热衷于推动开源社区的创新。访问我们的GitHub 存储库,了解我们的最新动态。加入我们充满活力的社区,了解我们如何对农业制造业等行业产生影响。

Facebook 徽标Twitter 徽标LinkedIn 徽标复制链接符号

在此类别中阅读更多内容

让我们共同打造人工智能的未来

开始您的未来机器学习之旅