从热爱到深耕,全国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,我们会尽快联系您。
俗话说,没有目标的行为是坚持不久的。万千同管雷鸣一样的开源开发者们始终跟随着内心热爱的召唤,以及帮助他人的愉悦,在开源之路上持续前进着。也正是这份坚持,让他们在开源的路上获得更多的助力。祝开发者们越走越好,开源软件生态愈加繁荣!
从热爱到深耕,全国Top10开源软件出品人手把手教你如何做开源的更多相关文章
- [ionic开源项目教程] - 手把手教你使用移动跨平台开发框架Ionic开发一个新闻阅读APP
前言 这是一个系列文章,从环境搭建开始讲解,包括网络数据请求,将持续更新到项目完结.实战开发中遇到的各种问题的解决方案,也都将毫无保留的分享给大家. 关注订阅号:TongeBlog ,查看移动端跨平台 ...
- OSCHINA 公布 2019 年度最受欢迎中国开源软件
https://www.oschina.net/project 此文章从此处转载:https://www.oschina.net/project/top_cn_2019?utm_source=star ...
- 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨 ...
- 3D打印开源软件Cura分析(1) 【转】
http://www.sohu.com/a/236241465_100000368 Cura是Ultimaker公司开发的3D打印开源软件,在所有的3D打印开源软件中应属上乘之作,很有研究的价值.国内 ...
- Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏
Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏 云收藏项目已经开源3年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时 ...
- 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)
开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...
- Google、亚马逊、微软 、阿里巴巴开源软件一览
Google.亚马逊.微软 .阿里巴巴开源软件一览 大公司为什么要发布开源项目?一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑.二是开源能够倒逼工程师写出更好的代码.三是开 ...
- (转)Linux-HA开源软件Heartbeat(配置篇)
原文:http://ixdba.blog.51cto.com/2895551/548625 http://gzsamlee.blog.51cto.com/9976612/1828870 Linux-H ...
- 通过 FastAdmin 理解开源软件
通过 FastAdmin 理解开源软件 开源软件 ≠ 免费软件,免费是遵循其开源协议下的一个特性. 开源软件虽然免费,但服务是可以收费的,因为房子要钱. 开源的目的是为了用户更自由. 做开源每天会遇到 ...
- GPL协议中国第一案尘埃落定,相关开源软件应如何风控?
导读:2019年11月6日,数字天堂(北京)网络技术有限公司(以下简称 “数字天堂公司”)诉柚子(北京)科技有限公司.柚子(北京)移动技术有限公司(以下简称 “柚子公司”)侵犯计算机软件著作权纠纷一案 ...
随机推荐
- 手机设置fiddler代理后无法上网
方法一:打开防火墙设置 参考链接:https://www.jianshu.com/p/b122eab059c4 1.打开控制面板->系统和安全->Windows Defender 防火墙, ...
- fetch请求方式
Fetch请求的方式 1:GET 请求 // 未传参数 const getData = async () => { const res = await fetch('http://www.xxx ...
- bind、call、apply区别
bind.call.apply都是用来改变函数内部this指向的方法,使用上仅有细微差别 一.代码 function person(p1, p2, p3) { console.log('this: ' ...
- 不同时间格式转换问题_python2
def unix_to_cst(data): """2019-03-17 11:00:00 --> Sun, 17 Mar 2019 11:00:00 GMT+08 ...
- 给jui(dwz)的navTab换一套漂亮的图标
上次讲了给jui(dwz)的菜单树换一套漂亮的图标,这次讲一下在点击菜单后,怎么把设置的漂亮图标带到navTab上去. 官方的navTab是这样显示的,除了默认的我的主页外,tab页上只有标题没有图标 ...
- JDK 7 HashMap 并发情况下的死锁问题
目录 问题描述 详细解释 问题描述 JDK7的 HashMap 解决冲突用的是链表,在插入链表的时候用的是头插法,每次在链表的头部插入新元素.resize() 的时候用的依然是头插,头插的话,如果某个 ...
- 玩转Mybatis高级特性:让你的数据操作更上一层楼
目录 动态SQL 缓存机制 插件机制 自定义类型转换 总结 Mybatis高级特性能够帮助我们更加灵活地操作数据库,包括动态SQL.缓存机制.插件机制.自定义类型转换等.学习这些特性可以让我们更好地利 ...
- 改善与提高linux系统的音质
当初装Linux系统的时候,我就发现了,deepin和ubuntu的linux平台音质和Windows平台下的音质不一样.硬件参数没变,歌曲音频文件相同的情况下,linux播放歌曲的时候动态和音乐细节 ...
- CSS实现文字颜色渐变效果
略微搜索查阅了网上的实现方法: 1.给元素添加背景渐变色,通过背景裁剪其中文字,再将文字设置为透明即可实现.(兼容性问题请自行添加浏览器前缀) background-color:linear-grad ...
- urllib.request发送get请求
发送请求 urllib.request库 模拟浏览器发起一个HTTP请求,并获取请求响应结果 urllib.request.urlopen的语法格式 urllib(url.data = None,[t ...