如何为开源项目和社区做贡献 -- 你应该知道的十件事(一)

2024-01-01 16:20

本文主要是介绍如何为开源项目和社区做贡献 -- 你应该知道的十件事(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 前言

  大家好,我叫颜国进,现为英特尔边缘计算创新大使、百度飞桨开发者专家。回溯至2021年12月,那时的我,身为机械专业研一新生,仅在C和Python编程语言上有些许基础,对于深度学习的殿堂还只敢在门口窥探,对于OpenCV图像处理以及模型部署等技术更是所知甚少。然而,通过不懈的努力和对知识的执着追求,如今我已经能够娴熟地运用C++、C#等编程语言进行项目开发,并且能够使用Python和各类深度学习框架来训练自己的模型。值得一提的是,我已经发布并运营了一项名为OpenVINO C# API的开源项目,为在C#平台开发深度学习和计算机视觉应用的开发者提供更便捷的工具。围绕该项目,产出了多篇富有深度的技术文章,分享了我在使用OpenVINO部署深度学习模型过程中的洞见和体会。

  在深入参与开源项目的过程中,我也广泛参考了网上的一些成功项目经验,得到了无数宝贵的经验和技能提升,这使得我的技术层次上升到了全新的高度。经过两年的探索与实践,技术能力得到了显著的提高,而更重要的是,我的努力得到了越来越多人的认可和支持,从而扩大了我在技术社区的影响力。时值我开展开源项目的两周年,我有幸应张晶和李翊玮老师的邀请,以及武卓博士的悉心指导,有机会整理与分享我从一个技术新手逐步成长到拥有自己开源项目的经验与感想。我希望我的分享能为刚刚踏入开源领域的新手们提供一些有价值的参考,帮助他们更迅速地融入这个富有活力和创新精神的开源社区。
下面,我将从四个层面并结合具体的问题分别向大家:

2. 为什么要做开源

问题一、为什么要给开源项目和社区做贡献?

  首先,我们来探讨一下为什么应该为开源项目和社区做出贡献。对于那些还在犹豫不决是否投身于开源项目的小伙伴们,我希望能够提供一个有力的依据。参与开源项目不仅有助于个人的技能提升和职业发展,更能推动整个技术社区的进步。通过你的贡献,我们可以共同创造一个更加开放、协作和创新的技术生态,让每个人都能从中受益。

  • 参与开源项目和社区对个人具有多方面的积极影响。

    • 技术提升——通过参与开源项目,个人能够接触和学习到更多的技术工具和前沿技术,推动自身技术的不断提升。并且开源项目可以获取全部源码,这对你深入了解一项技术实现以及应用,会有很大的帮助。

    • 提升个人的声誉和影响力——通过专注于某一领域并在其中深耕,你可能成为该领域的专家,吸引其他技术专家的关注和求助。这些互动和认可不仅有助于建立个人的专业声誉,还可能带来一些荣誉称号,为未来的发展提供有力的支持。

    • 塑造个人的未来发展轨迹——开源的自由性和包容性使得个人能够自主选择感兴趣的领域进行探索和发展。你可以将开源项目中的经验和技能应用到自己喜欢的领域中,或者通过开源项目发展新的兴趣和专业方向。这将为个人的职业发展带来更多的可能性和机遇。总之,参与开源项目和社区对个人技术提升、声誉建立以及未来发展都具有积极的影响。这是一个充满挑战和机遇的舞台,值得每个有志于技术领域的人积极参与和贡献。

  • 开源还对当前行业以及企业发展带来了更多的红利。

    • 开源已经成为软件行业的基础——开源促进了技术的快速发展和创新,第一点,由于代码是公开的,开发者可以基于现有的项目进行创新,而不需要从零开始,这样的协作和共享精神加速了新技术的诞生和成熟。第二点,开源软件通常是免费提供的,这降低了企业和个人使用和实施新技术的成本,企业可以使用开源软件来构建复杂的系统,而无需支付昂贵的授权费用。第三点,开源软件赋予用户更大的自由度,用户可以自由地修改和改进软件以满足自己的需求,这种灵活性对于需要定制解决方案的企业和开发者来说是非常重要的。第四点,开源项目通常有一个活跃的社区,社区成员可以相互支持,解决问题,分享经验。这种广泛的协作和支持网络是传统闭源软件难以比拟的。第五点,开源项目可以非常迅速地迭代和改进,社区贡献者可以快速响应问题,提交补丁,添加新功能,从而保持软件的活力。基于此,可以看出开源软件已经深刻地影响了软件产业的各个方面,并且在很多情况下成为了技术创新和应用的基石。
      在这里插入图片描述

    • 开源已经成为当前最前沿技术的发展的强大动力——开源模式鼓励全球范围内的协作和知识共享,由于开源项目可以被任何人审查、使用、修改和改进,这样的透明度和可接触性降低了进入门槛,极大地促进了创新的速度和质量。此外开源社区的参与者可以迅速识别和修复软件中的错误,增加新的功能,并持续改进产品,这种集体智慧的应用使得技术能够快速迭代和演进,经常超出单一组织的开发速度。开源项目往往吸引来自不同组织和行业的贡献者。这种多元化的视角和专业知识结合在一起,可以解决复杂的问题,推动前沿技术的发展。开源项目还是人才发现和发展的平台,许多开发者通过参与开源项目获得实战经验,进而成为行业内的专家。最后开源项目提供了高质量的软件基础设施,许多公司和组织可以直接使用或构建自己的产品,比如Linux操作系统、Apache Web服务器、MySQL数据库、TensorFlow机器学习框架、OpwenVINO模型部署框架等,都是开源项目,它们为最前沿的技术发展提供了坚实的基础。开源项目围绕它们构建了强大的生态系统,这个生态系统是持续创新的土壤,帮助技术不断进步。
      在这里插入图片描述

  废话了这么多,但也很难完全表述给开源项目和社区做贡献的好处,下面我将从个人经历简单讲述一下做开源项目这两年,到底给我带来了啥?

  • 技术方面:刚开始做开源项目时,我的状态就是一个非计算机专业、没有编程经验和算法基础的新手小白,蜕变成为一个可以实现在C/C++、C#和Python环境下使用多种部署工具套件落地AI设备全流程开发,并且在稳定运行了多个小型开源项目。在这过程中,我学习了C++、C#以及Python编程语言,这样我就可以能够看懂开源新项目的源码;我做的主要领域时深度学习模型部署,因此我自学了OpenVINO、TensorRT、ONNX runtime 等模型部署工具,实现在各种平台下部署深度学习模型。并且由于所做工作为开源项目,为了遵循开源社区规范,自己也养成了良好的编程习惯以及代码规范,学会了开源项目从创建、提交、完善、维护、更新以及发布等全套流程。
    在这里插入图片描述

  • 开源贡献:结合自己接触的一些开源项目,自己选者了一个方向去做,主要是在C#平台部署深度学习模型。基于OpenVINO模型部署工具创建了OpenVINO C# API项目,并结合该项目,开发了当前流行的模型部署案例。截止到目前,自己已经在开源平台GitHub平台贡献了100,000多行代码,推出了10多个开源项目。除此以外,自己还结合所做的开源项目,在多个平台与开源社区发布了了多篇技术文章,获得了上千人的阅读,并且在CSDN平台打造自己的博客平台,截止目前已经发表了42篇文章,获得了80000+的阅读量以及1400+的粉丝关注,在分享自己案例指导指导其他开发者的同时,也收获了更多人的关注,提升了自己的影响力。同时由于自己专注于英特尔以及百度飞桨的开源项目工作,因此获得了英特尔边缘计算创新大使、百度飞桨开发者专家等荣誉称号。

  • 在这里插入图片描述

  上面只是简单总结了自己这两年以来做开源项目所获得的东西,可以看出,给开源项目和社区做贡献,在成就开源社区的同时,更大的就是成就了自己。

备注:本文中所使用的所有插图,标注“AI作图”标记的图片均由百度文言一心(文心大模型4.0)生成,其图片生成思路与文字均有作者提供。

这篇关于如何为开源项目和社区做贡献 -- 你应该知道的十件事(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559828

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ