多年前决定开源时,咱们挺兴奋的:做为典型码农,“用”开源是平常,而全力投入“作”开源,对咱们绝大部分人都是头一遭。git
咱们也曾天真地觉得:“开源”能有多难呢?!不就是把代码放出去,你们一块儿用,一块儿写嘛。程序员
可是,“开源”这事儿真的是这样子么?仍是先看几个灵魂拷问吧:github
目前区块链领域的开源社区处于什么发展阶段?
开源社区的参与者是“用户”(user)为主仍是“贡献者”(contributor)为主?
项目的star数和contributor数究竟有多重要?算法
徐徐几年,众多社区伙伴围绕FISCO BCOS开源了诸多项目,覆盖了区块链核心技术、应用开发到运营运维治理的全领域。社区汇集了4万多名开发者关注者,2000多个机构,数以百计的应用已经在生产环境稳定运行,社区和产业生态活跃度在圈子里也得到了诸多好评。sql
2021年3月,国家“十四五”规划纲要发布,“开源”首次列入其中,指出要支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。json
今年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”。开源项目大抵也如此,若能再有一点极客气质,那就更赞了!
在解决了使用门槛的问题后,咱们观察到社区问题在变化。
首先,“简陋、用不起来、运行出错”这些可用性方面的问题明显减小了。
部署搭建等问题增长了,咱们分析,这是由于有更多人在实操搭链了。搭建过程当中,难免还有一些小的磕磕碰碰,又或者遇到一些概念性和体验感上的问题,须要咨询交流。固然,这也说明软件使用流程,仍是文档都还有提高空间。
功能性问题的大幅增加,佐证着咱们的技术、组件确实是被更普遍地用起来了。许多人在规划网络拓扑、写合约调接口,在分配权限、分析数据,又或者是在不一样的应用场景探索着更多区块链能力。
最使人欣喜的是,你们对区块链原理、架构、算法的探讨更多了、更深了。交流中不时迸发出火花,触发灵感。这对明确后续的优化方向,规划版本,增长特性,以及共同建设都有很是好的参考价值。
社区就像一面镜子,种种变化明晰可见,映出技术的完善,也见证社区的成长。
对于这个阶段,咱们也有一些思考:
一、不要期望聊天群能解决全部问题
咱们有“社区答疑”排班,若是值班的同窗遇到解答不上的难题,将请小组智囊团分析,总之,咱们的要求是尽快答复解决,“当日问题当日毕”;尤为是线上产生的问题,要优先跟进。
我曾经花了一个晚上翻看几个月的群记录,算了下咱们开源团队每人跟进过的问题数,量仍是比较大的(以下是其中一页)。更难能难得的是,团队成员的态度和积极性都很是到位,往往及时解决问题,并找到了优化点,他们本身也挺开心。
言无不尽地顺畅交流,聚焦解决痛点的社区答疑体系,确实在业内为咱们树立了很是不错的口碑。
聊天群的好处在于交流无比便捷,其不足也显而易见,群聊会吸引很多注意力,聊天记录难以被其余人翻查,不利于积累和复用。随着新人的不断加入,很多常见问题的重复率极高。技术论坛应该是不错的互补。固然技术论坛的搭建和维护,也是须要投入的。
而随着社区人数和领域覆盖面爆发式扩张,单凭开源工做组来在线答疑,是不是最佳解呢?咱们思考之余,以为这也算是“幸福的烦恼”吧。
二、不要期望文档解决全部问题
软件质量基本稳定后,每当看到问题,个人第一反应经常是,“是否是文档没写清楚?!”
开源项目文档包括使用手册、开发教程、术语和概念、架构原理、FAQ等等,可谓“汗牛充栋”。好在线上文档支持关键字检索,基本上能想到的知识点,均可以检索出来。
同时,在公众号、合做媒体上,咱们也发布了多角度的文章,尝试跳出技术细节,去澄清区块链思惟,科普区块链学习方法,把经验和教训传承起来。咱们真心的但愿这些文章能给不一样阶段的读者一些启发,从技术的“第一性原理”出发,触类旁通,直达区块链知识内核。
但咱们发现,理想和现实是有差距的:文档怎么写都会挂一漏万;用户的操做路径、思考模式和咱们预期的不同;以及环境不同,出的问题也会不同……
此外,受传播渠道、曝光率等诸多缘由的影响,文档并无传播到全部用户;或者由于文档目录结构太深,用户确实没看到特定知识点;即便是看到了文档,面对上百万字的浩瀚篇幅,不少人会表示:“nice,先收藏慢慢看”……种种因素均可能致使文档的有效阅读吸取率并不乐观。
其实,用户根本不太想去看长篇大论,他只想赶忙解决手头上的问题。
整体来看,文档必定要有,还要好。但文档就像宝藏,适合慢慢挖掘,难解燃眉之急。
三、不要期望本身就能解决全部问题
日拱一卒,遇到一个问题解决一个问题,就万事大吉了么?
用户问题确实是最好的方向标,若是一个问题一个星期内出现了两次以上,并且仍是由不一样的用户问到的,那么能够确定,是个须要优先解决的问题。
对不一样的问题有不一样的解法:能够迭代新版本把问题修掉,让它再也不出现;也能够是修订文档,并给出显眼的文档入口供参考;甚至能够是跟用户聊聊,对齐了概念和思路,有的问题就消解了。解法不少,但关键是要快、要准、要闭环。
实践也证实,开源工做组不可能包办一切,好比有些用户的需求比较场景化,不适合放到主版本里,由开发者拉分支定制开发更为合理。有些问题跟不一样环境、不一样业务领域有关。事实上,开源工做组对不少领域也并不是专家,只能是根据本身的理解,从技术角度切入和你们交流探讨,指望能互相启发。
本质上,若是只有开源工做组在作单向输出,用户是沉默的大多数,这样的社区势必会变得沉闷、无聊,也很快会遇到天花板。理想的模式是在整个社区造成正循环发展:老手帮助新手,新手成为老手,老手直接上手写代码,分布式解决问题和知足需求。整个过程你们都有贡献、有创新、有积累、有提高。
咱们有时候会想,开源工做组是否是要稍微日后退一小步?咱们更多的作好服务和布道的角色,以科普引导、激发鼓励为主,给社区小伙伴们更大的舞台,这样效果是否是更好?因此,咱们除了写代码,还写文档、写教材,参与国家人才标准编写,组织线上线下的沙龙、培训、黑客松,这都是“授人以鱼,不如授人以渔”。
在行业发展的爬坡期,咱们但愿帮助更多的人学起来,用起来,让人才多起来。迈过了技术门槛的用户一旦成为娴熟的开发者,那么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