文章作者:白鹿第一帅,作者主页:https://blog.csdn.net/qq_22695001,未经授权,严禁转载,侵权必究!
说明:本文素材及部分内容由因特尔物联网行业创新大使——颜国进授权,亚马逊云科技 User Group Leader,CSDN 成都城市开发者社区、数据库技术专区主理人——郭靖友情代为编辑发表。
大家好,我叫颜国进,现为英特尔边缘计算创新大使、百度飞桨开发者专家。回溯至 2021 年 12 月,那时的我,身为机械专业研一新生,仅在 C 和 Python 编程语言上有些许基础,对于深度学习的殿堂还只敢在门口窥探,对于 OpenCV 图像处理以及模型部署等技术更是所知甚少。然而,通过不懈的努力和对知识的执着追求,如今我已经能够娴熟地运用 C++、C# 等编程语言进行项目开发,并且能够使用 Python 和各类深度学习框架来训练自己的模型。值得一提的是,我已经发布并运营了一项名为 OpenVINO C# API 的开源项目,为在 C# 平台开发深度学习和计算机视觉应用的开发者提供更便捷的工具。围绕该项目,产出了多篇富有深度的技术文章,分享了我在使用 OpenVINO 部署深度学习模型过程中的洞见和体会。
在深入参与开源项目的过程中,我也广泛参考了网上的一些成功项目经验,得到了无数宝贵的经验和技能提升,这使得我的技术层次上升到了全新的高度。经过两年的探索与实践,技术能力得到了显著的提高,而更重要的是,我的努力得到了越来越多人的认可和支持,从而扩大了我在技术社区的影响力。时值我开展开源项目的两周年,我有幸应张晶老师的邀请,分享我从一个技术新手逐步成长到拥有自己开源项目的经验与感想。我希望我的分享能为刚刚踏入开源领域的新手们提供一些有价值的参考,帮助他们更迅速地融入这个富有活力和创新精神的开源社区。
下面,我将从四个层面并结合十个具体的问题分别向大家一一道来。
首先,我们来探讨一下为什么应该为开源项目和社区做出贡献。对于那些还在犹豫不决是否投身于开源项目的小伙伴们,我希望能够提供一个有力的依据。参与开源项目不仅有助于个人的技能提升和职业发展,更能推动整个技术社区的进步。通过你的贡献,我们可以共同创造一个更加开放、协作和创新的技术生态,让每个人都能从中受益。
参与开源项目和社区对个人具有多方面的积极影响。
除此之外,开源还对当前行业以及企业发展带来了更多的红利。
开源已经成为软件行业的基础——开源促进了技术的快速发展和创新:
开源已经成为当前最前沿技术的发展的强大动力——开源模式鼓励全球范围内的协作和知识共享,由于开源项目可以被任何人审查、使用、修改和改进,这样的透明度和可接触性降低了进入门槛,极大地促进了创新的速度和质量。此外开源社区的参与者可以迅速识别和修复软件中的错误,增加新的功能,并持续改进产品,这种集体智慧的应用使得技术能够快速迭代和演进,经常超出单一组织的开发速度。开源项目往往吸引来自不同组织和行业的贡献者。这种多元化的视角和专业知识结合在一起,可以解决复杂的问题,推动前沿技术的发展。开源项目还是人才发现和发展的平台,许多开发者通过参与开源项目获得实战经验,进而成为行业内的专家。最后开源项目提供了高质量的软件基础设施,许多公司和组织可以直接使用或构建自己的产品,比如 Linux 操作系统、Apache Web 服务器、MySQL 数据库、TensorFlow 机器学习框架、OpwenVINO 模型部署框架等,都是开源项目,它们为最前沿的技术发展提供了坚实的基础。开源项目围绕它们构建了强大的生态系统,这个生态系统是持续创新的土壤,帮助技术不断进步。
废话了这么多,但也很难完全表述给开源项目和社区做贡献的好处,下面我将从个人经历简单讲述一下做开源项目这两年,到底给我带来了啥?
上面只是简单总结了自己这两年以来做开源项目所获得的东西,可以看出,给开源项目和社区做贡献,在成就开源社区的同时,更大的就是成就了自己。
上面我们讲了这么多给开源项目和社区做贡献的好处,可能有一些小伙伴就开始心动了,下面我们就展开讲述一下有哪些途径可以为开源做贡献,具体是如何做的。
首先向大家介绍一下第一种方式,也是入门级别相对简单也是比较容易实现的,就是给开源项目提交 Issue。开源项目在发布时尽管发布者或者团队已经做了很详尽的测试,但由于使用对象以及使用环境等因素的影响,使用者难免会出现相关问题以及新的使用需求,因此我们提交 Issue 可以包括以下内容:
当然,这是是我列出来的常见内容,具体还是看使用者需求,因此提交 Issue 一定是该开源项目的使用者,再使用时碰到难以解决的问题时我们就可以通过提交 Issue 方式解决,这样不仅可以帮助自己解决问题,还可以促进开源项目的改进与发展,属于两全其美的事情。
再确定了你的问题以及你要提交 Issue 时,你需要先做一步问题检查,检查一下是否有小伙伴提交过相同的 Issue,这样可以避免提交重复的问题,给开源项目发布人员带来不必要的负担,也是对做开源工作对其他人员的最起码的尊重。如果你发现这是一个新的问题,之前并没有人提过,那么好,你就可以开始提交你的 Issue了,主要包括以下几个步骤。
此处以 OpenVINO 厂库为例,创建一个新的 Issue。
OpenVINO 官方提供了不同的 Issue 类型选择,此处可以根据你所需要的问题类型进行选择。
使用简洁明了的标题来描述你的问题或请求,好的标题可以快速地让维护者了解 Issue 的主要内容。
官方人员在解决你所提出来的问题时,会首先复现你所出现的问题,因此在提交 Issue 时,一定要详细描述你所提交的问题复现步骤以及结果输出情况和日志,总的来说可以包括以下几个部分:
最后就是要使用 Markdown 格式来组织你的描述,使其易于阅读。并始终保持礼貌和尊重,因为开源维护者是在免费为你提供帮助。
最后在详细描述完问题内容后就可以提交问题了,提交后就可以等待光放人员的回复,如光官方人员在复现时或者解决时有什么问题,也会向你进行反馈,因此可以时刻关注问题的动态。最后在问题解决后一定要礼貌感谢一下官方人员。
上面我们已经介绍了提交 Issue,这对于刚入门的开发者来说是十分容易的,下面我们将介绍一下进阶内容,给开源项目提交 PR。提交 PR 应该属于进阶版内容,因为他是从技术要求、编程能力以及对源码的掌握程度都会有很高的要求,所以这一块内容适合对项目十分熟悉的小伙伴。
但如果小伙伴们叨叨了这种程度或者是在使用中对项目源码做了修改使其变得更好,就可以开始向项目提交 PR 了,不过在提交前要先注意以下几点:
在确定了以上问题后,就可以开始提交你的 PR 了,这里有两种方式可以提交 PR,一种是在线直接提交,这种方式适合修改内容较少,不涉及源码修改等;第二种是本地修改后提交,这种方式适合有较大的改动,涉及到源码修改等。
(1)选择要更新的文件
通过在 GitHub 中单击它来选择更新,以 README.md 文件为例:
修改完文件内容后,点击 Commit changes 提交更改,并按照更改内容填写日志。
(4)创建 Pull Request
修改完该文件后,修改内容只存在于修改者当前分支,需要通过 Pull Request 提交到原作者仓库才可以。点击 Create pull request,创建 PR。
按要求提交后,等待代码仓库管理人员审核并通过你提交的 PR。
(1)fork 开源项目
找到要提交 PR 的项目,先将该项目 fork 自己的代码仓。
(2)克隆开源项目
将需要提交 PR 的项目克隆到本地,注意此处是克隆你 fork 到你自己厂库里的项目。
//打开CMD或者打开Git Bash Here
git clone https://github.com/grape-yan/OpenVINO-CSharp-API.git
(3)创建新的分支
提交 PR 时需要.为了防止在主分支上修改影响主分支代码,此处创建一个分支用于代码的修改。
cd OpenVINO-CSharp-API // 切换到项目路径
git checkout -b temp //创建名为temp的分支
git branch //查看已经创建的分支 如图有temp和csharp3.0两个分支
git checkout temp// 切换到分支
切换好分支后就可以直接根据自己需求修改项目了,此处你可以做一些必要的修改,但最后要进行测试,不要让你的修改影响到其他代码的性能。
(4)修改提交项目代码
将代码修改后,执行 git status 命令查看修改了哪些文件,接着使用 git add 修改的文件名添加到暂存区,最后使用 git commit -m “日志信息” 文件名提交到本地库。
git status // 查看库状态
git add 文件名 // 将修改的文件存放到暂存区
git commit -m "日志信息" 文件名 // 将修改的文件提交到本地库
最后将本地项目代码提交到远程 GitHub 上。
git push --set-upstream main mybranch
进入 GitHub 项目,切换到 mybranch 分支,查看是否修改成功。
切换到主分支,将分支 mybranch 代码合并到主分支,查看是否可以与主分支合并成功。
git checkout main // 切换到主分支
git merge mybranch // 合并派生分支到主分支
合并成功后,将主分支推送到代码仓。
git add . // 将修改的文件存放到暂存区
git commit -m "日志信息" // 将修改的文件提交到本地库
git push origin main // 推送到远程仓库
在 GitHub 切换到 master 主分支,查看是否合并成功。
(5)提交 pr 请求
进入自己 fork 的项目中,点击项目中提示的更改。
最后点击 Create pull request,提交后开源人将会收到你的合并请求。
好的,到此为止,我们已经完成了提交 PR 的步骤,后面就等待厂库官方人员审核即可。
在前文中,我们已经介绍了最常见的给开源项目做贡献的两种途径,但随着你做开源项目的深入,你可能就会发现一个新的方向并推出自己的开源项目,下面,我将结合我的讲演,向大家分享一下创建开源项目的经验。
在 GitHub 上,有很多优秀的开源项目,对于新入门开源项目的小伙伴来说,学习并模仿一些成功的开源项目是十分必要的,主要学习以下内容:
以上只是罗列了一些比较重要的内容,需要学习的内容还有很多,学习永远在路上。最好是能够将集百家之长,然后形成自己的风格,这样就可以在自己的各个项目中使用,下次再创建新的项目时直接套用模板即可。
通过学习一些优秀的开源项目,我们可以找到这些项目的共性,然后结合自己的风格,形成自己的模板。通过我创建开源项目的经验,可以很明确的告诉大家,一定要找到一个或者是固定一个适合自己的模板,这对自己后续创建项目以及维护项目是十分重要的。在固定自己模板时,应重点关注以下几点:
通过模仿成功的开源项目,这样你就可以开始创建自己的开源项目了,下面我将会在此处讲讲开源项目中的几个关键内容。
首先是撰写 README,当然这项工作是你已经完成了厂库搭建以及代码内容后进行的,属于项目的收尾阶段进行的工作。但是这确实极其重要的一步,README 是对你项目的介绍,也是对外展示你项目的主要窗口,因此 README 文件的第一印象就会决定访问者对你的项目是否感兴趣,因此既要有实用的内容,也要做的好看。
此处我总结了一些 README 文件的撰写经验,首先第一点是 README 要包含哪些内容,主要有以下方面:
以上这些内容看起来比较多,如果放在一个文件里,就会显得十分冗余,所以对于一些比较大型的项目,可以将其中的一部分包含详细内容的部分放置在另一个文件中,然后在 README 文件中提供条目以及链接,这样使用人员可以很容易找到相关的文档。
除了内容要全面之外,README 还要做的美观、大气以及有条理,能够吸引人眼球,因此,你还要学习一下 README 文件的美化。其实对于我们程序员来说,README 文档的美化并不是做的要多么花里胡哨,只要做的规整、清晰有条理即可,因此要善于使用小图标、标题等级等内容,让你的 README 文件变得十分有条理。
另外,为了更好地推广你的开源项目,你最好提供的 README 文件包括英文版以及中文版,这样对于一些其他国家的开发者也可以明白如何使用。下面链接是我推出并维护的一个开源项目的 README 文件,该文件我也是在不断学习与改进中,仅供参考:
https://github.com/guojin-yan/OpenVINO-CSharp-API/blob/csharp3.0/README.md
CONTRIBUTING 文件是一个重要的文档,用于指导贡献者如何参与项目的开发和贡献,它包含了一系列准则、规则和建议,以确保贡献者能够顺利地参与项目,并且保持代码库的质量和一致性。下面简单介绍一下 CONTRIBUTING 主要包含哪些内容:
以上就是一个简单的 CONTRIBUTING 内容,对于我们个人创建的小型项目来说,这已经足够使用了。
虽然开源社区是自由的,但是它也有一些规则和准则需要遵守。这些规则和准则是为了确保社区的秩序和协作的顺利进行。例如,尊重他人的贡献、保持礼貌和尊重、遵守项目的许可协议等。这些规则和准则有助于维护一个积极、健康和协作的社区环境。所以在此处我重点重复一下在开源社区中所需要遵守的一些进本的道德规范。
这里的重复包含很多内容,例如问题重复、项目重复、PR 重复、文章重复等等。
首先讲一下问题重复。假设您在本地计算机上安装并运行一个开源项目,但遇到了一个错误。或者您通读了文档并发现了缺失的步骤,您可能想提出一个问题来解决这个问题。但在执行此操作之前,必须检查是否提出了类似的(打开和关闭)问题或拉取请求,以避免重复。在 GitHub 上问题或拉取请求页面顶部的搜索栏中输入可能的关键字,以检查是否存在可能的重复。
然后是项目重复。如果你有一个新的想法,准备大干一场,创建一个新的开源项目,你首先要做的第一点就是检查一下当前是否有人在做相同的开源项目。可以通过 GitHub 的关键字检索,查找类似的项目,看看你的想法是否有人已经做过了。如果有人已经做过了,你可以检查一下他所做的项目与你要做的有什么差异,你所做的项目内容可能是对他项目的改进、升级等。这样的话,如果你需要创建一个新的项目,你最好可以跟原作者进行沟通,表明自己的想法,然后再创建时进行使用别名。
接着就是 PR 重复。如果你发现开源项目的一些问题你是能够解决的,这时你就需要通过提交 PR 的方式进行提交,但是在提交前,你需要做一步检查,第一点检查一下该问题是否有人已经领取,如果有人领取,但是领取人长时间没有提供回复、提供的 PR 你觉得存在问题或者你有更好的解决思路,那这样的话你可以在问题下留言,申请提交自己的 PR。
最后是文章重复,这里可以是技术文章或者是博客文章。但是,文章重复是禁止的,因为文章重复会被认为是抄袭,你可以有部分是重复的,例如技术介绍,这些不是关键部分内容,但是对于关键部分,一定不能重复。另外如果你觉得该文章比较好,你可以申请转载,在转载时注明文章来源即可。
在开源社区,一定要学会尊重和礼貌,在请教或者回复别人时,一定要有礼貌并尊重他人。首先是再请教别人时,一定要先表示感谢,然后要全面地展示一下自己的问题,最后再次表示感谢,在话语中一定要礼貌。另外在回复别人问题时,也要保持一种谦卑的语气,闻道有先后,术业有专攻,所以并没有什么优越感,要认可和尊重他人的工作成果和贡献,无论是代码、文档、设计还是其他形式的贡献,在适当的场合给予他人认可和赞誉。最后就是在自己的文章中也要保持基本的礼貌,不要含沙射影,不要谈论政治,不要涉及政治、宗教或其他具有争议性的话题,专注于项目的目标和愿景,确保所有人都能在一个中立的环境中参与和贡献。
首先是要学会帮助他人,如果你看到有人需要帮助或提问,尽量提供帮助。因为开源社区大佬很多,你帮助了他,在未来他可能也会帮助你,而且付出总会有回报,因此不要吝啬自己的帮助。另外要学会分享知识与经验,积极与社区成员分享你的经验和知识,你所经历的事情在未来别人可能也会经历,因此学会把你的经验分享出去,避免更多人踩坑。
高质量的项目更容易获得用户和开发者的信任,当用户知道项目维护良好、少有 bug,他们更愿意使用和推荐这个项目,这种信誉是开源项目成功的关键因素之一。并且随着项目质量的提高,用户基础和社区规模往往也会增长,质量高的项目更有可能持续发展,因为它们提供了一个稳固的基础,可以在其上构建新功能和改进。因此,我们要学会保证质量和追求卓越。
首先,要制定清晰的贡献指南,说明如何提交贡献、代码风格、测试要求等,帮助维护代码质量和一致性。实行代码审查制度,让其他开发者检查新的提交,以发现潜在的错误、改进代码质量,并确保新代码符合项目的标准。并且利用自动化测试来确保代码改动不会破坏现有功能。这包括单元测试、集成测试、系统测试和性能测试。
其次,就是提供详尽的文档,包括安装指南、使用教程、API 文档和开发者指南,让用户和开发者容易理解和使用项目。并且使用问题跟踪系统来管理 bug 报告和功能请求,保证所有问题都被记录和跟踪,使用版本控制系统如 Git,并采取适当的分支策略来管理代码的不同版本和功能开发。
最后就是鼓励和促进社区成员之间的交流,通过讨论和协作来提高项目质量,要学会认可社区贡献者的工作,提供激励措施(如贡献者列表、感谢信等),以鼓励更多高质量的贡献。如果可以的话,可以提供开发者指南、教程和其他教育资源,帮助新成员更快地上手,并提升整个社区的技术水平。
前面我们已经讲了如何创建自己的项目,但是,项目创建好了如果不进行推广将会很难获得大家的关注,如果长时间没人关注,也会影响开发的动力,因此,当项目做好后,一定要做好项目的推广工作,一方面可以让更多的人看到我们的工作,给有需求的提供找到我们的机会,也另一方面有助于提升自己的知名度。下面我将从以下几个方面向大家介绍如何推广自己的项目。
给自己的开源项目配备相应的技术博客是很有必要的,这也是宣传和推广我们的项目最直接和最有效的手段;而且作为我们做开源的程序员,也一定要有自己的博客,方便展示和推广自己项目工作以及增加自己的知名度。
首先是博客平台的选择,目前国内博客平台也是比较多的,比如博客园、CSDN、沙土掘金、简书等,大家可以根据自己的情况进行选择。但是选这一个即可,无需多选,但是如果你觉得比较重要的文章,你可以在多个平台上发布,让更多人看到。当前国内用的比较多的是 CSDN 平台,虽然该平台被大家诟病很厉害,但是不可否认的是该平台用户量大,而且我们遇到问题是,使用 CSDN 也是最多的。大家可以根据自己情况进行选择,无论在哪个平台,只要你把文章写好,在哪里都能被大家看到。
下面就是文章的撰写,其实在项目做完后,撰写个对应的技术博客还是比较简单的,毕竟博客大部分内容都是对你项目的介绍内容,因此针对你所做的项目,你应该会有说不完的话。但是,为了写好这个技术博客,你还是要注意一些问题的。
技术博客跟文章不同,文章的话标题可能还需要新意、修辞等,技术博客不需要考虑那么多事情。技术博客标题第一点要注意的就是简单、直接,能够准确描述博客的主题,让人看了一目了然,因为大家在看技术博客时,第一眼印象就是对你博客标题印象,因此要起一个简单直接的标题。第二点就是题目中要有主要的关键字,关键字可以是使用的主要技术、解决问题主要内容等,一方面是因为关键字可以快速吸引更多的读者观看,另一方面就是包含关键字更容易被检索出来。
不同类型的技术博客文章的层次应该是不同的。此处我以常见大项目技术博客为例,给大家简单介绍一下博客的结构层次。
(1)引言
引言部分类似于文章的摘要,要包含本项目的背景、介绍以及实现功能,能然人一眼看出你的项目有什么作用,这样才会吸引读者认真读下去。之一部分放在文章开头,可以不占用文章的章节编排。其实你平时在找相关项目时,发现题目可能相关,但是他没有一个简单的介绍,内容还比较长,你就会很难有耐心读下去,因此,有一个简单的引言是很有必要的。
另外在引言最后,一定要添加你的项目源码链接、视频链接等其他相关材料的链接,能然读者看出你这文章内容很全面,更加坚定读者读下去的信心。
(2)现状与技术介绍
接下来就是你技术博客的正文部分,这一部分可以有很多内容可写,例如详细介绍以下你的项目背景、详细介绍一下你项目中所使用的技术手段以及本项目的实现原理等。这一块内容根据你自己的安排去写即可。
(3)环境配置与项目安装
这一块内容主要分为两个方面,第一就是你项目所使用的环境配置流程以及你的项目安装配置流程。这一块是十分关键的,因为对于大多数人可能不太会关注你的项目源码,他就只会参考着你的博客进行实现,因此在写这一块时,要把自己当作一个使用者,自己如何从头开始一步步安装和配置该项目,并且对于每一步要有截图,这样才能更好的让使用者成功复现。
(4)项目关键内容讲解
下面这一块是对自己项目内容关键代码讲解,对于一个项目来说,项目代码可能会很多,因此无法在博客中做详细解释,因此在此处只需要对自己项目中的一些代码的关键部分进行解释就可以。重点是你所解决的问题那一块代码,或者是某项技术的应用代码,对这一块代码做一个简单讲解即可,也无需长篇大论,重点是让对着看到你这一块代码的重要性。
(5)项目结果展示与性能分析
上面介绍完项目内容后,接下来就是演示一下项目效果,此处最好是通过图片、视频等方式进行展示,当然使用文字也是可以的。这一块主要就是演示一下你的项目输出,方便读者查看你的项目输出效果是否达到他的预期。另外,如果你做的项目是对前人的项目优化或者是该项目高喊多个影响因素等内容,那你此处就需要做以下对比,对比一下常见的指标即可。
(6)总结
最后一步就是对自己的项目做一个总结,简单总结一下项目,可以对恶化也可以说一下自己项目的问题以及下一步要改进的地方等等,或者是感谢一下该项目中给你童工版主的人,最后增加一句感谢读者的话或这是对读者期待的话进行文章收尾。
在博客里面,我们难免要放一些代码,这也是写博客的一个很好的习惯。但是在放置代码时,一定不要直接复制全部的代码放进去,首先是要放一些关键的代码,例如项目中比较有创新的代码或者是某个关键技术应用的代码;第二点就是要注意代码的格式是否美观,我们在编辑器开发代码时,编辑器会根据代码特点增加不同颜色,因此在博客中我们也要遵循这种特色。想要实现这种方式也不难,因为现在一些博客使用的是 Markdown 语法编辑器,你可以通过设置成程序语言即可;如果你对该配色方案不满意,也可以通过一些其他的插件生成图片。
让自己的文章变得更优美。前面我们已经提到博客现在多数使用的是 Markdown 语法,你需要学习一下该语法下文章排版的技巧,例如如何首行缩进、如何添加代码、如何改变文本颜色等等。此处也不用学的太深入,只要学习一些简单的语法即可,后续慢慢积累并养成习惯,你会发现自己的文章会越来越整齐美观。
注重自己的语言艺术,不要使用一些过激的语言,对带别人的项目也要做到尊重。
在当前很长一段时间,视频依旧是一个很好的宣传媒介,尤其是在当前小视频比较火的今天,因此为自己的项目创建一个视频也是一个很不错的宣传手段。由于当前我创建的视频还比较少,很难提出一些特别有用的意见,所以在此处我先简单的介绍一下。
首先第一点就是视频类型,其实不用介绍大家也都知道视频的话可以分为两个类型,长视频与短视频,但是结合到我们的项目来说,主要对应两个内容,一个是项目演示的短视频,一个就是项目详细介绍于是用的长视频,前者是用于项目推广,后者适用于技术教学。所以在创建视频时,可以根据这两个目的来创建。
接下来就是创作软件,在本科时我做过视频,当时使用的都是 PR、AE 等专业的视频软件,虽然做出来的视频质量很高,但是难度以及效率太低,不太适合我们使用。不过好在当前小视频盛行,所以也有不少新的软件可供我们选择,比较推荐的是剪影这个软件,这也是我当前用的软件,他对新手十分友好,上手很快,并且支持 AI 功能,能够剩下我们麻烦。除此之外就是视频录制软件,我这里比较推荐的是 EV 录屏,对于简单的视频录制可以直接使用免费版使用,如果需要录制比交付炸的视频例如桌面与摄像头同屏展示,可以花点钱开个会员即可,可以说该软件目前可以满足我们的所有的需求。
最后就是视频内容。对于短视频来说,视频内容可以包括以下几个部分:项目简短介绍、项目效果展示两个部分,长度维持在 1-2 分钟最好。对于长视频的话,那就是可以自由发挥了,可以是项目的详细介绍、从安装下载到环境配置以及最后的效果演示等等,时长的话也可以根据内容进行控制,但是要保证项目内容的详细。
在创建了自己的技术博客以及视频后,接下来你就需要接住你的任何平台想办法去推广出去,在大学期间我也做过一项宣传类的工作,因此宣传这块我觉得是十分重要的,不然你的项目做出来也很少有人看到。
首先是通过你自己的博客平台、视频平台等。目前博客平台的话都会有相应的推广,因此开始阶段你需要借助一些商业的博客平台,例如博客园、 CSDN、沙土掘金、简书等,所以在开始阶段无需自己去搭建博客平台,使用这些商业的博客平台即可,等时机成熟以及你有了更大的能力后,你就可以创建自己的博客平台了。其次是视频平台,视频平台的话就比较多了,B 站、抖音、微信视频号等,但是你还是需要要有自己的规划,以一个平台为主,建议使用 B 站平台,主要是 B 站他可以上传长短视频,而抖音、微信视频好的话定位是短视频,可以用作宣传使用。最后如果你能够持续产出并且有足够的经历,可以创建一个微信公众号,但是要充分考虑自己的能力以及时间,毕竟自己运营还是比较困难的。
接下来就是借助一些开源平台进行推广,这一点需要根据你的项目中使用的技术进行决定。例如我做的项目大多是使用的是英特尔 OpenVINO,因此,在推广时我会将自己的技术文章发表在英特尔物联网微信公众号上以英特尔其他开源社区上。另外我做的一些项目还跟百度飞桨有关,因此我的项目还可以发表在百度飞桨的星河社区。所以,发布在什么社区,需要根据你的技术进行决定。
最后一点就是借助其他的一些平台,例如你的朋友圈、一些技术交流群等等。推广这个事是慢慢积累的,一方面是你的技术积累,要持续推出好的项目,才能积累更多的影响力,第二就是人员积累,慢慢积累更多的粉丝与及使用者,厚积薄发,慢慢的你就会发现,你所做的项目会有越来越多的人关注了。
如果对于上面的这些问题你已经做到了,那么恭喜你,你已经成为一位出色的开源工作者了,你可以回过头来看看,做开源这些时间以来,你学习到了什么、收获了什么、得到了什么。我相信到这一步你已经是在某一领域出色的专家了,那么如果你还想更进一步,除了可以在你所研究的领域继续深耕,或者是开阔自己的视野,继续研究其他更多的领域,也或是参与开源社区的技术布道工作并指导新加入的贡献者。下面我在此处简单讲一下参与开源社区的技术布道工作与指导新加入的贡献者,毕竟当前阶段我做的还不是很多,经验尚浅,所以有什么问题的话也欢迎广大读者进行补充。
可能对于大多数人来说,开源社区的技术布道工作是感觉一个十分陌生的领域,其实开源社区的技术布道工作主要指的就是通过传播、推广和教育活动,向更广泛的受众普及开源技术、文化和价值观的工作,旨在提高人们对开源技术的认识和理解,鼓励更多的人参与开源社区,推动开源技术和社区的发展。
具体来说,开源社区的技术布道工作可以是举办技术讲座或研讨会、制作视频教程或直播、参与开源项目并分享经验、在社交媒体上分享和传播、组织或参与技术活动等等,其实回头看,如果你之前的一些问题已经做过了,那么你已经开始开源社区的技术布道工作了。参与开源社区的技术布道工作好处也很多,可以是:
那么我们应该如何参与开源社区的技术布道工作呢?其实参与开源社区的技术布道工作也是十分简单的,在前文中我们介绍的内容中,如果你已经做到了,那么恭喜你,你已经参与到开源社区的技术布道工作了,但是如果像更全面的参与进来,你可以通过以下几个途径:
当你能力达到一定程度后,你就可以带动你身边的朋友以及你的学弟等人一起参与到开源工作中,这时你就要发挥一个导师的作用,指导并鼓励新入门的朋友。总的来说,你可以通过以下内容展开指导:
首先,向新贡献者表示欢迎,并简要介绍开源项目和社区,分享项目的目标、背景、技术栈以及社区的文化和准则,确保他们对项目有基本的了解。你可以向新入门的开发者展示一下自己在做开源项目以来所获得成果,包括你的项目、荣誉以及其他内容,者样可以激起开发者的兴趣,以及坚定他的决心,此外也可以给新入门的开发者提供一个前期方向。
其次,就是明确入门任务,为新贡献者提供一些入门级的任务,这些任务可以相对简单,帮助他们熟悉项目的代码库和工作流程。例如,修复小错误、改进文档或添加简单的功能,这些任务可以帮助他们建立信心并熟悉项目。不过你需要提供文档和资源,确保项目有清晰的文档,包括贡献指南、编码标准、开发环境设置等。这些文档可以帮助新贡献者快速上手并开始做出贡献。如果可能的话,提供一些教程或参考资料,以便他们更深入地了解项目的技术栈和架构。
第三点,就是鼓励新贡献者提问和提供反馈,他们可能对项目的某些方面感到困惑或有改进建议,为他们提供一个安全和支持性的环境,让他们感到自由地表达自己的想法和疑问。并且与新贡献者保持定期沟通,了解他们的进展和遇到的困难。通过邮件、聊天工具或定期的社区会议与他们保持联系,提供必要的支持和指导,确保他们在贡献过程中不会迷失方向。
最后,就是要提供认可和奖励,当新贡献者完成任务或做出贡献时,及时给予认可和奖励。这可以是一句简单的感谢、在社交媒体上的提及、或者在项目的致谢名单中列出他们的名字。这些认可可以激励他们继续做出贡献,并增强他们在社区中的归属感。
在本文中,我通过问题问答形式,向大家解释了如何为开源项目和社区做贡献这个话题,但是由于我的个人原因,对问题见解还不是很全面,所以对于问题的回答仅供大家参考,也希望可以帮助到新入开源这个大家庭的朋友。
此外,通过本次文章分享,我也发现了很多在做开源时没有注意到的问题,后续我也会在做自己开源项目时多加注意。另外一点就是在做开源时对其过程的总结较少,所以后续在做开源时,我会注意这点,以后会根据自己的经验推出一系列教程文章以及经验分享文章,也欢迎大家持续关注。
如果大家有什么问题,也欢迎随时和我联系;另外在做开源时,也可以参考我的一些项目。大家可以通过以下方式找到我:
E-mail:[email protected]
CSDN 博客:https://guojin.blog.csdn.net
GitHub:https://github.com/guojin-yan
Gitee:https://gitee.com/guojin-yan
我主推的开源项目 OpenVINO CSharp API:https://github.com/guojin-yan/OpenVINO-CSharp-API
视频网站:https://space.bilibili.com/222626791
微信公众号:CSharp与边缘模型部署
最后,再次感谢在我做开源过程中一直给我提供指导帮助的中国矿业大学机电工程学院教授范孟豹老师、中国矿业大学机电工程学院副教授杨雪锋老师、英特尔 AI 开发者市场部经理张晶老师、英特尔 AI 布道师武卓老师、英特尔开发者关系经理李翊玮老师以及其他在开源项目中提供指导与意见的各位开发者。期待与各位共建开源社区的明天。
说明:本文中所使用的所有插图,标注“AI 作图”标记的图片均由百度文言一心(文心大模型 4.0)生成,其图片生成思路与文字均有作者提供。
文章作者:白鹿第一帅,作者主页:https://blog.csdn.net/qq_22695001,未经授权,严禁转载,侵权必究!
我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!