关于区块链:开源路上的酸甜苦辣

17次阅读

共计 8153 个字符,预计需要花费 21 分钟才能阅读完成。

多年前决定开源时,咱们挺兴奋的:作为典型码农,“用”开源是日常,而全力投入“做”开源,对咱们绝大部分人都是头一遭。

咱们也曾天真地认为:“开源”能有多难呢?!不就是把代码放出去,大家一起用,一起写嘛。

然而,“开源”这事儿真的是这样子么?还是先看几个灵魂拷问吧:

目前区块链畛域的开源社区处于什么倒退阶段?
开源社区的参与者是“用户”(user)为主还是“贡献者”(contributor)为主?
我的项目的 star 数和 contributor 数到底有多重要?

徐徐几年,泛滥社区搭档围绕 FISCO BCOS 开源了诸多我的项目,笼罩了区块链核心技术、利用开发到经营运维治理的全畛域。社区汇集了 4 万多名开发者关注者,2000 多个机构,数以百计的利用曾经在生产环境稳固运行,社区和产业生态活跃度在圈子里也取得了诸多好评。

2021 年 3 月,国家“十四五”布局大纲公布,“开源”首次列入其中,指出要反对数字技术开源社区等翻新联合体倒退,欠缺开源知识产权和法律体系,激励企业凋谢软件源代码、硬件设计和应用服务。

往年 6 月,工业和信息化部、地方网络安全和信息化委员会办公室联结公布的《对于放慢推动区块链技术利用和产业倒退的领导意见》进一步激励开源并指出,要建设开源生态,放慢建设区块链开源社区,围绕底层平台、利用开发框架、测试工具等,培养一批高质量开源我的项目。

咱们深受鼓舞,回望过来,在打造良性互动的开源社区新生态方面,咱们已进行诸多摸索,这其中的酸甜苦辣,依然历历在目。

直面问题

这几年来,每天早上我醒来的第一件事就是拿起手机,看技术群里有什么问题。工作间隙看、散会间歇看、走在路上也看……沉闷的社区群,有时音讯犹如刷屏个别。

问题形形色色,从基本概念、装置部署到代码剖析,再到从产业层面切入来找案例,或者聊区块链和开源软件,以及开源商业化的……在前沿技术畛域,不同个体在不同的阶段总是能碰到新的问题。

我其实挺享受在社区里当“客服”的。在漫长的职业生涯中,我泡过技术论坛,也做过互联网公司的客服零碎,开源社区让我找回了和网友打交道的感觉——亲切、乏味、大家都在做有意思的事件。

为啥社区里会涌现出这么多的问题,咱们也有一些反思。是因为区块链畛域太新了,概念过于艰涩,导致开发者须要迈过的学习门槛较高?还是咱们的出品没做好,文档没写分明,的确难懂难用,BUG 还多呢?

有一说一,2017 年末开源的最后版本,光搭链组网就足有十几个步骤。每一个步骤都有可能因为环境和网络差别,以及软件自身不欠缺的容错能力而“跪掉”。

在那时候,能把链搭起来曾经挺吃力了,运行起来偶然会有“coredump”(过程解体),用户把 core 文件(零碎异样堆栈)发给咱们以进行详细分析时,看着异样堆栈,咱们心田其实是略有香甜的。

曾有行业专家当面吐槽:“你们代码格调个别呀”。他们原本想引入的,但看了代码格调,感觉还是等等吧。个中滋味,咱们懂。

过后,整个行业简直没有工业级可用的区块链底层平台,咱们从 0 到 1 做出的第一个版本,“能用”就是一个小 flag,也的确落地了一些利用,但整体离优良开源我的项目的差距还挺显著。

至于文档,大家都晓得,程序员写代码很 high,写正文算是任务,但写文档几乎比赶鸭子上架还难。奋笔疾书憋出了好长的一个应用文档,但相干的概念原理、异样解决办法不全面,撰文技巧和教训更是欠奉,看起来很“硬”。

在人才方面,几年前,圈子里有个无奈证实的说法,“在国内,能徒手撸出一条链的人,不会超过 200 个”。同时放眼整个中国的开源畛域,深度参加到开源我的项目中的开发者,其整体规模也并不大。

区块链行业热潮掀起时,社区开发者们激情都很高,踊跃参加开源我的项目,踊跃学习技术和发展利用。其中有不少是在校学生和学术研究人员,以及对企业级或互联网软件研发有肯定教训的开发者,还有从非技术角度切入的“理科”人士。总的来说,精通区块链原理、通读区块链我的项目源代码、能娴熟开发区块链利用的硬核区块链开发者,可遇而不可求。

无论如何,咱们不能指望一开始就有海量开发者天降神兵,踩着祥云来共建社区。

咱们没有刻意去比照国内外其余区块链我的项目的状态和教训,他人的模式不齐全实用,毕竟开源内容不同、环境和文化不同,倒退阶段和倒退模式都不同,可资借鉴的教训也寥寥。

大体上,过后国内的区块链开源社区属于“起步”阶段。

化繁为简

那段时间,开源工作组有许多深刻的探讨:方向对不对、版本优先级怎么排、能不能让内外上下游都称心……大家十分焦虑,经常探讨到凌晨一两点。

万事不决,还是回到原点:“想让他人称心,首先得让本人称心”。咱们一直自问:好用的开源我的项目应该是什么样子?

想想 Linux/Apache/Mysql/PHP(合起来就是驰名的 LAMP)这些成熟的开源软件,是不是 down 下来就能装置?装置了就能跑?用这些软件,遇到问题的话,能够读官网文档学习原理和细节;再不行,论坛上问、网上搜,买书看,总能找到答案和案例。

团队有位架构师,人称“楠哥”,他用一句话终止纠结,“如果一个软件用户 15 分钟还用不起来,他们肯定会摈弃你!”

于是,码农们掐着秒,数着命令行写代码:下载代码和软件要花多长时间?是不是一行命令就能把链搭起来?配置文件用 json 编辑起来是不是容易误操作,用 ini/toml 格局是不是更简略一些?

“多个过程多个鬼、多个步骤多个鬼。”,这是咱们的口头禅。极致的简化,把代码中的“玄学”变成确定性。“能用就行”必定是不行的,还要好用、耐操!咱们依据之前的教训,适配各种操作系统和软硬环境,预置默认组网模式和证书文件,让使用者在整个过程中连“踩坑”的机会都没有。万一还是出错,则高亮提醒、FAQ 中转,用多种策略自动检测和复原,包罗万象。

链搭起来了,接着就是打磨控制台、浏览器,让区块链看得见摸得着,用户一旦眼中见图,心里更无数。而后,内置利用模板,乃至压测样例,以使得开发者能够按图索骥,一键构建利用。更进一步,区块链上云,云上资源调配、部署交付、运维经营一站式搞定。

如果开发者有趣味持续钻研细节,咱们还有具体的使用手册和技术文档。足足有百万字规模,赶上几本书了,能够缓缓读,还能够搜寻中转知识点。

此外,软件的外围能力也没落下。大家都很相熟的“wheat”,有技术洁癖和品质强迫症,对技术攻关、架构合理性、代码格调和版本工夫线毫不妥协,代码必须通过几个人(包含他本人)穿插 review 过,而且单元测试覆盖率足够高,能力 commit。

让人快慰的是,2017 年到 2018 年,开源工作组陆续退出了许多老司机和刚毕业的小鲜肉,他们都很生猛,大大地空虚了开发力量,并随着我的项目一起成长。这也是硬核技术创新的奥义:“21 世纪,人才最可贵”。大家一起投入,性能、平安、稳固指标都达到了高水准,同时隐衷爱护、跨链、新型虚拟机、链治理等多种外围能力也逐步完善。

回首看,2019 年初与社区独特打磨进去的 FISCO BCOS 2.0 版本能够说是一个里程碑,用起来简洁快捷,工具和文档配套完备,外围能力靠谱,怎么一个“爽”字了得。成果那是空谷传声,能把区块链疾速跑起来、用起来的开发者肉眼可见的迅猛减少,社区留存率显著晋升,同时社区提交的 ISSUE、代码和文档更新也多起来了。

在此之前,社区敌人们可能会礼貌性地夸一下:“开源就是一种精力”、“开源曾经是相当有勇气了”……此刻,终于能听到有人真心实意地说:“牛!挺好用!”。

当初咱们尝试答复第二个灵魂拷问:如果开源软件没有用户,那么,也大概率不会有什么贡献者。

软件要吸引“用户”,它自身至多要稳固可用,再则应用门槛要低,最好开箱即用,交互手感要如丝般顺滑,无论是代码还是界面都要清晰优雅。唯如此,用户才不会步步惊心,甚至到处踩坑,不会迷失在繁冗的配置文件、天书一样的日志和错误信息里。

家喻户晓,互联网产品谋求“Don’t make me think”。开源我的项目大抵也如此,若能再有一点极客气质,那就更赞了!

授人以渔

在解决了应用门槛的问题后,咱们察看到社区问题在变动。

首先,“简陋、用不起来、运行出错”这些可用性方面的问题显著缩小了。

部署搭建等问题减少了,咱们剖析,这是因为有更多人在实操搭链了。搭建过程中,未免还有一些小的磕磕碰碰,又或者遇到一些概念性和体验感上的问题,须要征询交换。当然,这也阐明软件应用流程,还是文档都还有晋升空间。

功能性问题的大幅增长,佐证着咱们的技术、组件的确是被更宽泛地用起来了。许多人在布局网络拓扑、写合约调接口,在调配权限、剖析数据,又或者是在不同的利用场景摸索着更多区块链能力。

最令人欣慰的是,大家对区块链原理、架构、算法的探讨更多了、更深了。交换中不断迸发出火花,触发灵感。这对明确后续的优化方向,布局版本,减少个性,以及独特建设都有十分好的参考价值。

社区就像一面镜子,种种变动清晰可见,映出技术的欠缺,也见证社区的成长。

对于这个阶段,咱们也有一些思考:

1、不要指望聊天群能解决所有问题

咱们有“社区答疑”排班,如果值班的同学遇到解答不上的难题,将请小组智囊团剖析,总之,咱们的要求是尽快回答解决,“当日问题当日毕”;尤其是线上产生的问题,要优先跟进。

我已经花了一个早晨翻看几个月的群记录,算了下咱们开源团队每人跟进过的问题数,量还是比拟大的(如下是其中一页)。更难能可贵的是,团队成员的态度和积极性都十分到位,每每及时解决问题,并找到了优化点,他们本人也挺开心。

言无不尽地顺畅交换,聚焦解决痛点的社区答疑体系,的确在业内为咱们建立了十分不错的口碑。

聊天群的益处在于交换无比便捷,其有余也不言而喻,群聊会吸引不少注意力,聊天记录难以被其他人翻查,不利于积攒和复用。随着新人的一直退出,不少常见问题的反复率极高。技术论坛应该是不错的互补。当然技术论坛的搭建和保护,也是须要投入的。

而随着社区人数和畛域覆盖面爆发式扩张,单凭开源工作组来在线答疑,是否是最佳解呢?咱们思考之余,感觉这也算是“幸福的懊恼”吧。

2、不要指望文档解决所有问题

软件品质根本稳固后,每当看到问题,我的第一反馈经常是,“是不是文档没写分明?!”

开源我的项目文档包含使用手册、开发教程、术语和概念、架构原理、FAQ 等等,堪称“车载斗量”。好在线上文档反对关键字检索,基本上能想到的知识点,都能够检索进去。

同时,在公众号、单干媒体上,咱们也公布了多角度的文章,尝试跳出技术细节,去廓清区块链思维,科普区块链学习办法,把教训和教训传承起来。咱们真心的心愿这些文章能给不同阶段的读者一些启发,从技术的“第一性原理”登程,触类旁通,中转区块链常识内核。

但咱们发现,现实和事实是有差距的:文档怎么写都会挂一漏万;用户的操作门路、思考模式和咱们预期的不一样;以及环境不一样,出的问题也会不一样……

此外,受流传渠道、曝光率等诸多起因的影响,文档并没有流传到所有用户;或者因为文档目录构造太深,用户的确没看到特定知识点;即便是看到了文档,面对上百万字的浩瀚篇幅,很多人会示意:“nice,先珍藏缓缓看”……种种因素都可能导致文档的无效浏览吸收率并不乐观。

其实,用户基本不太想去看简明扼要,他只想连忙解决手头上的问题。

总体来看,文档肯定要有,还要好。但文档就像宝藏,适宜缓缓开掘,难解当务之急。

3、不要指望本人就能解决所有问题

日拱一卒,遇到一个问题解决一个问题,就高枕无忧了么?

用户问题的确是最好的方向标,如果一个问题一个星期内呈现了两次以上,而且还是由不同的用户问到的,那么能够必定,是个须要优先解决的问题。

对不同的问题有不同的解法:能够迭代新版本把问题修掉,让它不再呈现;也能够是订正文档,并给出显眼的文档入口供参考;甚至能够是跟用户聊聊,对齐了概念和思路,有的问题就消解了。解法很多,但要害是要快、要准、要闭环。

实际也证实,开源工作组不可能包办所有,比方有些用户的需要比拟场景化,不适宜放到主版本里,由开发者拉分支定制开发更为正当。有些问题跟不同环境、不同业务畛域无关。事实上,开源工作组对很多畛域也并非专家,只能是依据本人的了解,从技术角度切入和大家交换探讨,冀望能相互启发。

实质上,如果只有开源工作组在做单向输入,用户是缄默的大多数,这样的社区势必会变得爽朗、无聊,也很快会遇到天花板。现实的模式是在整个社区造成正循环倒退:新手帮忙老手,老手成为新手,新手间接上手写代码,分布式解决问题和满足需要。整个过程大家都有奉献、有翻新、有积攒、有晋升。

咱们有时候会想,开源工作组是不是要略微往后退一小步?咱们更多的做好服务和布道的角色,以科普疏导、激发激励为主,给社区小伙伴们更大的舞台,这样成果是不是更好?所以,咱们除了写代码,还写文档、写教材,参加国家人才规范编写,组织线上线下的沙龙、培训、黑客松,这都是“授人以鱼,不如授人以渔”。

在行业倒退的爬坡期,咱们心愿帮忙更多的人学起来,用起来,让人才多起来。迈过了技术门槛的用户一旦成为娴熟的开发者,那么 BUG 一冒头就会被修改,不同的需要疾速得以满足,软件自身也将越来越优良。

目前社区曾经自发造成了诸多 SIG(Special Interesting Group 即兴趣小组)。组员们从社区被动退出,依据本人感兴趣和有所长的技术、利用主题,开展分布式单干。下图是其中一位组长(群昵称:李大狗)在小组介绍里的一页。我感觉“乏味、求实、激励、奉献”这几个关键字演绎得十分棒!

开源工作组,社区 SIG 以及不断涌现的开发者群体,形成了立体化社区技术力量。

咱们继续聚焦软件品质和晋升体验,缩小反复问题,并疏导和推动社区往自服务阶段走,分工合作,有利于聚焦辨认更前瞻性的个性、承当更有挑战性的问题,宽广开发者能施展的空间也越来越大。

扬帆航海

逐渐成熟的社区将会出现“网络效应”,良好的口碑是“自来水”,产业人士汇集得越来越多,生态和商业模型天然会长进去。

刚开源的时候,咱们全国到处飞,去宣讲理念和技术,邀请大家关注咱们的社区。最早的社区群就是这么一个一个人的“拉”起来的。

我有个敌人始终默默地关注开源社区,把区块链交融到他们的行业产品中去,直到产品胜利上线后才通知我。

我问他:“你们齐全不须要反对的么”?

他说:“开源软件就挺好用的,咱们本人的技术团队实现业务逻辑,做一下运维配置就能够上线了”。

当初他们曾经是“社区认证合作伙伴”,继续地用区块链技术去落地利用,他们的成绩也以代码、工具、案例等形式回馈给社区。

这样的社区搭档还有许多。他们在各自的垂直行业畛域里有着粗浅造诣,与开源社区造成了互补。在区块链方面,他们只需引入开源技术,而不必反复造轮子,效率大增,老本猛降。同时,他们在行业实际中,继续挖掘出许多十分接地气的需要,奉献了大量技术成绩,其落地的实际更是对区块链技术价值的验证,他们的案例曾经成为了产业地图上的标杆。

更有意义的是,咱们发现不少企业在社区里挖掘并招募到本人须要的人才;也有的在社区遇到产业链或技术栈互补、理念又相近的产业搭档,而后欢快地建设单干关系。总之,社区搭起逾越行业和地区的桥梁,是实现精力物质双播种的平台,自发的造成气味相投、共建共赢的凋谢联盟。

这里必须介绍下,FISCO BCOS 开源工作组是由“FISCO 金链盟”发动的,金链盟目前曾经聚合 150 多家机构,别离来自金融、证券、地方性交易所、科技公司、科研机构等。作为凋谢的技术社区,汇集的 2000 多家企业,更是笼罩了工业、农业、版权等宽泛的行业畛域。

值得一提的是,有多个培训机构曾经成为社区的“培训单干认证搭档”。大家独特撰写科普材料,并联结工信部人才交流核心等国家权威机构撰写了多套区块链教材,供全国各地的高等院校和培训机构应用。培训布道工作任重道远,独木难成林,众人浇灌,来日桃李满天下。

在数字化的风口中,各畛域的企业犹如一艘艘船,纷纷开拓航道。开源技术就像风帆,能帮忙企业适应风势,带来微小能源,去摸索更大的世界。开源代码自身是否商业化,其实并不那么重要,开源的产业化模式更多是交融服务、拓展边界,推动利用落地。可想而知,如果大量的船只扬帆起航,实体经济来往沉闷,整个生态蓬勃发展,所有人都必然得以获益。

大家好,才是真的好。我认为这是开源凋谢的真谛。

有容乃大

经验过开源的兴奋、焦虑、欣慰,当初咱们曾经淡定多了。

每天的工作仍旧很空虚。已经,刚进入团队的小伙伴们认为来了就是写代码,而后发现并非如此,岂但要当“客服”,还要当“写手”,时不时进来当“网红”直播“带货”解析开源技术,或者去当“老师”,站在讲台上一讲就是几个小时。

在不同的角色之间切换,对工夫治理和注意力调配的确是一种挑战, 不习惯的时候可能会有一点点“决裂”感。尤其,对广泛有点“社恐”的码农而言,各种“出头露面”,心理压力有点大。然而换一个视角,从长时间的职业倒退来看,经此十八般武艺轮番上阵,技术写作水准、交换陈说能力,以及眼界的广度深度都能失去锤炼;最重要的是,本人写的代码,立即就会有人用,有人切磋,对本人的技术能力和成就感也有所晋升。如此于公于私,都无疑受益匪浅。

在技术团队身旁,咱们经营团队还有业余的“社区小助手”,沉闷于线上线下沙龙、展会,组织课程,即时推送热点内容,以及和社区开发者互动,帮助开发者走上开源之路。在产业单干中穿针引线,如同小蜜蜂穿梭在花丛中。当然,如果群里有人发广告,扰乱技术气氛,也很快就会被小助手请进来的。


小助手也翻过车。记得几年前有一次社区活动,对在 github 给我的项目点过 star 反对的社区小伙伴,小助手会寄送小纪念品。原本是善意的,但被有的开发者误认为是用礼物换 star,并在群里直率地反馈。咱们虚心接受并整改,尔后盲目避嫌,再也不去做和 star 相干的流动。咱们十分了解 star 是皇冠上的宝石,绝不是用来“兑换”的,应该是由真心反对、青睐我的项目的开发者自发被迫的 star。

相应的,对那些为开源我的项目做出奉献的开发者,社区也会表示感谢,并激励更多开发者继续共建共享,咱们会颁布我的项目贡献者列表和季度贡献者榜。他们会取得别致的、值得在朋友圈晒进去的社区纪念品。这次要是精力激励,搞起气氛吧。咱们置信带着感恩之心携手同行,能够让咱们走得更远。

在开源路上,碰到一些小小的挫折、误会和挑战,都很失常。诚如人和人之间,自身也有信赖建设的过程。开源社区教会咱们要“换位思考”,要有“用户思维”,因为咱们曾经不是本人在做事了; 咱们要时刻放弃谦虚,因为任何一点提高,都是来自社区的共同努力;更要放弃凋谢和通明,无论是代码还是经营,都会被社区多方检视、评判和优化,毕竟“talk is cheap,show me the code”(注:code 同时有“代码”和“行为规范”的涵义)。

从这个层面看,开源我的项目的“star”重要,但更重要的是大家打 star 的理由,以及是否继续有人 star。现实的境界是,大家都是社区的开发者,而后大家点的 star,都是给本人,给独特的社区点赞!

躬身入局

咱们再次回顾开篇的三个问题:
目前区块链畛域的开源社区处于什么倒退阶段?
开源社区参与者是“用户”(user)为主还是“贡献者”(contributor)为主?
我的项目的 star 数,contributor 数到底有多重要?

我给出集体答案,仅供参考。

首先,我认为区块链的开源社区尚在起步阶段。这跟倒退工夫、技术成熟度、人才梯度,以及利用的广度和深度,都有着必然的分割。

第二,咱们不能枉顾自然规律,揠苗助长。咱们首先要躬身入局,把技术和体验做好,让大家先能“用起来”。同时聚拢更多的人才,独特学习提高。地基扎实了,共建的人多了,user 群体里天然会涌现 contributor。

第三,开源社区的理念是“授人以渔”不是“竭泽而渔”。在播种方面,无论是我的项目的 star 还是商业化,我感觉都是顺其自然,瓜熟蒂落的事件。咱们曾经看到,不少参加到社区的搭档们,未然在产业中逐渐开花结果。

感激你看到了这里。通过这几年的酸甜苦辣,咱们曾经看到开源的将来篇章在徐徐开展。因为看见,所以置信;共信共建,咱们将携手不凡。

FISCO BCOS 的代码齐全开源且收费
下载地址↓↓↓
https://github.com/FISCO-BCOS/FISCO-BCOS

正文完
 0