| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 如何给开源项目做贡献? -> 正文阅读 |
|
[人工智能]如何给开源项目做贡献? |
作者: Adrian Boguszewski 和武卓 现如今,越来越多的开源软件被应用于千行百业。据统计1,我国在全球最大开源平台GitHub上的贡献者数量已经达到了全球第二。2020年,GitHub平台上中国贡献者数量增加了37%;而在另一个开源平台Gitee上,中国贡献者的数量更是增加了50%,总量超过了600万人。 ?????? 以OpenCV这个开源计算机视觉及机器学习库为例。OpenCV于2000年首次公开发布,已经成功地经历了20多年的发展,为全球开发者提供了2500多个优化算法。OpenCV团队团队花费了大量时间,完成了出色的工作,知道吗,其实你也可以这么做。但是,如果你这样做没有为你带来任何直接的经济收入,你还会觉得为开源项目做贡献有什么意义吗? 为什么要为开源项目做贡献?千言万语都说不完 开源项目提供源代码来帮助开发人员免费解决他们的问题,开发人员分享改进的解决方案并为开源项目做出贡献。 因此,双方都受益匪浅,形成了一个良性循环。 现在,让我们来看看为开源项目做贡献有哪些益处:
在开源项目中,你通常可以免费下载或克隆源代码。因此,你可以方便地阅读源代码,了解如何定义函数来实现特定功能,如何建立模型训练流水线等等。通过这种方式,你将学会如何使用开源项目提供的功能和工具,并能通过阅读源代码学到知识,逐步成长为高级开发人员!
如果你使用开源软件,并提出比目前更好的解决方案,欢迎你将你的工作提交给开源项目。提交后,你的工作将得到审查,并会获得有益的反馈。经过几轮修改,你的工作最终可以获得批准并合并到该项目中。最后,你的解决方案被其他人正式接受并使用,这意味着你建立起了自己的名声😊
通过贡献一个开源项目,你相当于加入了一个拥有成千上万志同道合的开发者的社区。你还将有机会通过提交你的工作并获得评审,与开发和维护开源项目的专业人员建立联系和互动。同时,你可以通过在开源平台上公开展示你的技能来创建一份优秀的简历。我们希望这将有助于你跳过面试,在5分钟的谈话后被录用! 哪里可以找到“最佳的”开源项目? ??? 你可以通过各种平台或渠道为开源项目做出贡献。这里有一些成功案例,根据我们的经验,你可以先找到一些有趣的项目和方法,让你成为开源开发者。 ??? 首先,考虑GitHub或任何其他代码托管服务。通常,开源项目有一个存储库来存储代码和相应的介绍文档。你可以通过浏览GitHub找到你感兴趣的项目。有关如何为开源项目做贡献的详细指南,一般可以在名叫“CONTRIBUTING.md”的文件中找到。 ??? 其次,还可以找到一些开发者活动(如针对全日制学生或开源初学者的谷歌代码之夏(GSoC)等)、挑战赛或项目核心开发人员和维护人员组织的竞赛。通过参加这些活动或竞赛,你可以按照组织者指定的方式做出贡献,甚至还可以顺便赢得一些奖金。 ??? 最后,可以借助你当前使用的应用程序。正如文章开头所述,今天常用的许多应用程序都是免费和开放的。你正在使用一些你非常喜欢的应用程序,很有可能是开源的——有了这个想法,你可以寻找这些应用程序的开源代码仓,然后参与这些程序的开发和维护工作,帮助它们变得更好! 接下来,我们将回答最重要的问题,“如何做出贡献?”。 本文基于OpenVINO? Toolkit–一个来自英特尔的用于优化和部署AI推理的开源项目。对于其它开源项目,请联系社区并阅读他们详细的贡献指南。 好的,现在你决定为OpenVINO ?这个开源项目做点贡献了。 首先,你应该找到该项目的网站和代码库,以了解更多关于项目需求、代码结构和贡献规则的信息。目前,你可以在这里 找到 OpenVINO ?项目的官方文档,整个代码库托管在GitHub上。想要了解这个项目,最佳选择就是把它用起来!如果你不熟悉OpenVINO?, 请克隆并运行OpenVINO Notebooks仓库,并运行其中一些notebooks代码示例来学习并享受其中的乐趣。 我们强烈建议你通过运行:
为开源项目做贡献的典型步骤如下: 第一步:分支(Fork)项目 这个项目需要你工作在自己的仓库副本上,并创建pull request来合并代码。这意味着当你准备好开始你的旅程时,你需要点击“fork”按钮来fork主仓库。 第二步:克隆(Clone)项目 现在你已经拥有了你的远程副本。是时候在你的机器上克隆整个仓库了。你可以通过以下命令来克隆: git clone git@github.com:<your_nickname>/openvino.git 如果你遇到如下图所示的错误,那可能跟你的SSH密钥有关。请参阅添加密钥指南 或者 通过https克隆 查找相应的解决方法。 第三步:编译(Compile)项目 下一步是建立你的开发环境,包括克隆子模块、安装依赖项和设置选项。我们推荐使用Ubuntu 20.04。请注意,在调试模式下编译代码将占用大约50GB的磁盘空间。如果你是经验丰富的开发人员,可以指定不同的选项来启用或禁用某些模块。请参阅此处的指南。 cd openvino/ 至此,你已经为编译做好准备了。运行以下的“make”命令行,然后等待整个过程运行结束。 make --jobs=$(nproc --all) 比较少见但是有可能出现的情况是,你的操作系统杀掉了你的编译。如果你碰到了如下图所示的情况,请以更少的并发任务,再次运行“make”命令 如果你想学习更多的关于整个编译建立的过程,请参考《如何从 OpenVINO? 的主分支构建 OpenVINO? Wheel 包?| 开发者实战》。 第四步:运行(Run)项目 为了确保每一项都正确构建了且 OpenVINO? 是可用的,你可以运行如下这个名为 hello_query_device 的示例程序,它将打印所有可用的计算设备。 cd ../bin/intel64/Debug 你应该能看到所有可以运行 OpenVINO?的设备。在我们这种情况下,包括CPU, GNA以及GPU。 第五步:选择一个问题(issue) 你已经构建了代码。现在,你已准备好进行真正的开发了。一个好的起始点是根据实际需求修复或实现一些东西,使你的工作更有价值,并增加被合并的可能性。Github上有一个Issues标签,在那里你可以找到社区报告的bug和功能请求。 在你非常熟悉代码之前,最好寻找一个容易解决问题(easy-to-fix issues)的地方开始你的开发工作。这些地方通常有特定的标签,比如“good first issue”或类似的标签。 当你决定修复/实现什么时,建议先与开发人员和社区讨论一下,以确认最终的需求并指定你自己来解决这个问题。当一切都知道后,你就可以开始编写代码了。 第六步:代码实现 在你开始之前还有一件事,那就是找到并阅读贡献指南。遵循规则和代码风格是非常重要的。在大型项目中,一致性是至关重要的。然后你可以创建一个新分支(带有有意义的名称的)并切换到它。 git branch <meaningful_branch_name> 在你喜欢的任何IDE中打开代码,或者使用像vim这样的文本编辑器开始编写代码吧!每隔一段时间测试一下你的修改,以确保它朝着正确的方向推进着。 如果你在实现功能时遇到任何的bug,请创建一个issue来上报这个错误。 第七步:测试代码 如果你实现了一个新特性或修复了一个bug,你应该为它提供单元和功能测试(如果可以的话)。例如,如果你的更改与Python API相关 (src/bindings/python/src),好的做法就在相同的模块中增加单元测试 (src/bindings/python/tests) 。当你的修改影响了推理引擎的时候(src/inference/src ),你就应该增加相应的测试目录 (src/ tests/unit/inference_engine) 。接着再编译一遍 OpenVINO?,与其他人一起运行你的测试,并检查是否一切都通过。 cd ~/openvino/bin/intel64/Debug 第八步:推送(Push)并创建拉取请求(Pull Request) 当 OpenVINO?编译和测试都通过了,你可以将你的分支推送到远程仓库。 git push -u origin <meaningful_branch_name> 创建一个PR(Pull Request),将你的更改拉向主仓库(main repo)是必须的。你可以在Pull requests选项中完成。 记得要为你的修改添加注释以及合适的标签,比如 Python API。 第九步:更新 然后,请等待主要开发团队的评估,当评估准备就绪时,请回答问题,消除开发团队的疑虑,并根据评估结果改进你的代码。同时,你需要确保所有CI测试都通过。如果没有,找到这些问题并解决它们。 第十步:合并(Merge) 最终,你的工作被合并啦! 我们鼓励你与我们长期合作😊 选择下一个issue,记得不时同步你的主分支! OpenVINO? 工具包现在是谷歌代码之夏(GSoC)的一部分啦!这可能是开启开源之旅的最佳方式之一。一起关注新闻并期待GSoC 2023吧! 数据来源: [1] 中国信息通信研究院云计算与大数据研究所《开源生态白皮书》 2021.9 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:55:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |