从热爱到深耕,全国Top10开源软件出品人手把手教你如何做开源

Posted 华为云开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从热爱到深耕,全国Top10开源软件出品人手把手教你如何做开源相关的知识,希望对你有一定的参考价值。

摘要:DTT直播邀请到管雷鸣与广大开发者分享“如何在开源领域找到适合自己的路”。

“想象一下,你写的代码被越来越多的人使用,并极大地帮助他们提高了开发效率和稳定性。”这是不是一件很酷的事?而这正是开源的魅力…

开源作为一种推动软件开发技术创新的新模式,广受开发者的喜爱。作为拥有40余个开源项目,全国开源软件Top10的出品人,雷鸣云CEO管雷鸣深耕开源领域15年,并一直保持热爱。

开发者如何参与开源,能收获到哪些价值?本期华为云开发者社区DTT直播,邀请到管雷鸣与广大开发者分享“如何在开源领域找到适合自己的路”。

缘起:一切从热爱开始

2008年,管雷鸣开始接触SaaS自助建站,业内在当时还没有开源的相关系统,小伙伴们对此都怀抱期待,于是他想着利用空余时间写一个出来。

2010 年,他在中国站长社区发布了寻仙WAP2.0(一个用于搭建手机网站的系统),短短几个月,下载量破千,让管雷鸣受到极大鼓舞,由此热爱上了开源。

随后在2015年,管雷鸣继续接触到开源中国码云,用Java开发了一个游戏辅助工具并将源码放在了码云上,这也成为他在开源代码托管平台上发布的第一个项目。

2022年,管雷鸣参与华为云“开源开发者支持计划”,发布DataX for HuaweiCloud OBS插件,获得了华为云沃土云创一万元奖励,同时也上架到了华为云云商店,支持其他开发者云上一键部署。

“参与开源的初衷更多的是热爱,人生中应该要做一些自己喜欢的事儿。比方写代码到半夜十二点也感觉不到累,思维会极其活跃清晰,这可能就是开源开发者的信仰和追求。”管雷鸣讲到。

从0 到1参与开源项目经验分享

首先,在选择适合自己的开源项目时,要结合自己最擅长的领域,契合当前的能力和兴趣,避免因为参与开源给自己造成精神上的压力、生活中的负担。

如何找到开源项目?

管雷鸣结合自己的经验给出了几点建议:

  • 有好的想法,可以在开源项目中提 Issues。
  • 针对开源项目中,使用者在Issues提的问题及bug,可以踊跃参与实现及修复。
  • 不少开源项目作者都是业余时间进行更新维护的,时间不会很充足,可以针对开源作者所发布的一些任务进行接取,主动参与任务。
  • 某些开源组织会发布一些任务,其中涉及到各种语言及知识点,比如华为云开源&开发者示例代码仓中,就罗列出很多开源任务 https://gitee.com/HuaweiCloudDeveloper/rewarding-cloud-native-projects开发者如果在其中有恰好自己熟悉的,便可以非常方便的接取

对项目有问题想交流时,良好的沟通方式可以在最短的时间内,将信息传达给他人。例如在项目中提Issues ,也可添加项目相关的微信群、QQ群进行交流;沟通过程中,将自己的信息表达明确,尽量减少出现来回询问互动的过程。

正确阅读和理解开源代码

开源项目中的README.md及相关文档是必读的。动手之前先看文档说明,避免自己花了半天时间读代码找问题,而问题就在文档中明确有说明;在研究项目的过程中,自己一定要参与进去,可以先定一个小目标,在本地能先跑起来,之后就可以尝试改动并验证改动是否正确。

在项目中提交自己的贡献

如果项目是单自己的,可以在github或gitee上注册一个账号,创建一个仓库,进行提交上去。具体提交的步骤社区中都有非常完善的文档可以进行参考。

如果是别人的开源项目,并且自己参与会非常多时,可以联系作者把你加入到这个仓库的开发者中,改动即可直接推送上来。

在大多数情况下,你想参与别人的开源项目进行贡献时,可以Fork这个仓库。Fork后就会克隆出一个自己的仓库来。所有的修改都在克隆后自己的这个仓库,也就是自己的仓库中进行修改。需要注意的事,每次更改功能前,要同步一下自己克隆的仓库,保证自己仓库代码是最新的。改动完成后,提交一个合并请求到主仓库进行申请合并。

开源for HuaweiCloud任务实战分享

管雷鸣还分享了一个有代表性的参与开源任务的经验:给 DataX 做上华为云 OBS 的插件,且获得了华为云开源支持计划的1万元激励。开源项目obs-datax-plugins中,DataX是一个开源异步数据同步工具,可以提供各种异构数据源之间高效的数据同步,但它并不适配管雷鸣在用的华为云对象存储服务OBS,为此需要给DataX做一个适配华为云OBS的插件。

“在制作这个插件过程中,首先对其Fork了一个自己的仓库,在本地开发工具上,将克隆后的仓库拉下来,让项目在本地能够运行起来,然后按照官方的插件开发要求进行尝试。在对接OBS接口的过程中,发现其中有个SDK接口文档已过时,也没有最新的文档说明,我就在社区中联系华为云开源组织的成员说明情况。对方回应速度非常快,双方立马建立专属讨论群进行详细对接,仅用了5分钟就解决问题。让我感受到,后方的技术援助很强大,自己不是一个人在战斗。”

软件功能完成测试无误后,管雷鸣又对文档进行了补全。代码方面,在华为云开源组织的gitee中,新建了插件的仓库。为防止官方主程序仓库更新后自己的仓库代码会过时,又针对这个插件给出详细的使用步骤,最终成功完成了obs-datax-plugins的开发。基于该插件,其他开发者和企业能够快速完成华为云上OBS相关的数据迁移诉求,大大提高了效率。

对于文档的使用,管雷鸣有自己的感悟。“在参与开源项目时,代码及功能的书写只是一部分,文档的使用也占有很大的比重。文档完善,使用者可以花最少的精力运行起来,同时增加对项目的信任。另外,入门尝试不需要那么多详细的扩展,尽量让使用者能最快跑起来,验证是不是自己想要的,那么后面就愿意拿出大把的时间来详细阅读你的文档。”

开源路上有华为云相伴,收获满满

在管雷鸣看来,做好开源项目既能够帮助更多开发者,到还能收获商业回报,是一个一举多得的事情。

“自从18年创业以来,无任何销售人员,纯技术团队。因为有自身稳定可靠的产品,在BUG跟修复方面投入很少,能够大幅缩减成本,保持较高的利润率。自己开源的项目SAAS 建站系统经过多年不断完善,通过企业版授权、功能扩展定制等,去年产生了70万的销售额,这是刚开始时根本就没想到的。”

SAAS 建站系统产生的更多的定制需求,管雷鸣也会分发给一起参与的小伙伴。这样一方面降低了成本,同时伙伴们也能获得一份收益;客户方面还能节省费用,形成了正向循环。

管雷鸣的部分开源项目

“目前在gitee的华为云开源组织中,还有不少开源项目可以参与。在项目完成后,通过审核之后大家可以在软件中留名、被华为云开源组织认可,获得资源扶持及激励。”管雷鸣表示。“正是有了像华为云这样的企业,这两年国内开源环境得到了很大的改善,开源作者不再被一直薅羊毛,开源也不再被认为是不务正业了。”

为了更好的帮助开源软件开发者,华为云面向开源软件工具链与环境、开源应用构建和开源生态组件构建这三大重点场景,提供技术支持、奖金支持、活动支持,邀请更多的开发者,携手构建开源for HuaweiCloud。

共建开源生态,打开产业新增长空间

开发者将开源软件工具、开源应用和开源组件与华为云对象存储OBS、数仓DWS、云容器CCE等云服务对接,同时基于Terraform模板,上架到华为云云商店,支持其他开发者一键部署使用开源组件 ,我们称为“开源xxx for HuaweiCloud”。 下图为华为云开源&开发者示例代码仓的示例,涵盖Dromara社区、Java、Go、Python、C&C++及其他开源类项目,数量超过100。感兴趣的开发者可以点击:​华为云开源&开发者示例代码仓,了解更多。

100+华为云开源技术项目示例

不仅如此,参与贡献的开发者将有计划会获得​华为云沃土云创计划激励,领取云服务资源代金券,可用于开发部署。如果您有意愿参与,请在​issues留下您的邮箱或者主动发送邮件到​hwcdtse@huawei.com,我们会尽快联系您。

俗话说,没有目标的行为是坚持不久的。万千同管雷鸣一样的开源开发者们始终跟随着内心热爱的召唤,以及帮助他人的愉悦,在开源之路上持续前进着。也正是这份坚持,让他们在开源的路上获得更多的助力。祝开发者们越走越好,开源软件生态愈加繁荣!

 

点击关注,第一时间了解华为云新鲜技术~

手把手教你做蓝牙小车

第1节 选择Arduino开发板

1.1 Arduino是什么

对Arduino,官方有一堆解释。
作为一个软件程序猿,在我眼里,Arduino是学习“可怕硬件”的一个便捷通道。它把复杂的硬件名称,属性给我们隐藏起来,只需要一些简单的软件知识,就可以学习硬件开发。

1.2 怎么选择Arduino开发板

1.2.1 官方版本还是兼容版本

Arduino是开源项目,硬件结构,软件设计都开源。
所以不存在盗版的问题。
官方版质量肯定是杠杠的,但价格也贵。
两者价格数字差不多,一个卖人民币,一个卖美元。
不差钱就买官方版,否则兼容版也不错。

1.2.2 Uno还是Mega

Arduino有一系列各种用途的开发板,最常见的有两种,Uno和Mega。
Uno价格便宜一些,功能简单。
Mega价格比Uno贵二十多块,官方版贵二十多美元,兼容版贵二十多人民币。

大家买Arduino开发板,主要用途就是学习,要求能方便的了解到更多特性。
Uno接口太少,比如做个小车,接了四个马达后,基本就不能再添加其他模块了。
如果你要做个蓝牙小车,调试时噩梦就来了。因为Uno只有一个串口,蓝牙和USB共用。
你的先拔下蓝牙模块的连接线才能上传程序,上传完成后,然后再插上蓝牙连接线才能开始测试。
如果你不只是学习,而是要研发产品,要考虑产品的成本价。。。
选择Mega也任然没有错,你可以现在Mega上完成开发,最后在Uno上做性能测试。

所以,我的建议是选Mega。

第2节 从HelloWorld开始

我记得从学习C语言开始,都是先写个HelloWorld程序。
Arduino我们也从这里开始吧。

2.1 搭建开发环境

官网下载Arduino集成开发环境(以后都简称Arduino IDE)。
解压后,双击此目录下的arduino.exe,启动Arduino IDE。
我这里是以Windows平台为例,Mac,Linux界面、操作基本相同,也可以参照本例学习。

2.2 新建工程

启动Arduino IDE,点击菜单 文件->新建(快捷键Ctrl+N),生成新的工程。