你还在抱怨开发工具,为什么不动手优化? | 人物志
受访者 | 张乎兴
采访者 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
Red Hat 创始人 Bob Young 曾说过:“要想对世界做出实质性的改变,开源需要做到这两点:一是要让人们广泛使用开源软件;二是要让用户知道并理解这种软件开发模式能给他们带来的益处。”
有一位阿里员工便是如此做的:历经四年,他从零基础的开源小白成长为 Apache Member,并致力推广和孵化国内优秀的开源软件,吸引更多的中国开发者加入开源行业中。
他便是 Apache Dubbo 项目的负责人、阿里巴巴技术专家张乎兴。
从开源小白到 Apache Member
张乎兴花名“望陶”,含义是“仰望陶渊明,渴望追求淡薄雅致的生活”。可他这一路走来,却是稳扎稳打的:2014年,张乎兴加入阿里巴巴中间件团队才开始接触 Tomcat 的开发和运维,从零开始走上开源开发。
作为小白,他从查看 Apache 的新用户指南开始,到第一次谨慎地修改提交 Bug 后,得到社区的响应他感到很高兴,随后他积极参与到社区的讨论中……
当时阿里内部自己的 Tomcat 版本,与开源的 Tomcat 版本之间有些差异。作为国内参与开源项目数量最多的企业,阿里内部开源氛围浓厚。于是张乎兴主导将这两个版本合并成一个,方便大家的维护和使用。
公司鼓励开源、工作内容大部分涉及开源软件、自身从中获得兴趣和个人价值体现,这几个方面形成一个正反馈效应的循环,使得张乎兴不断成长:2016年,张乎兴成为 Tomcat Committer;2017年,他成为 Tomcat PMC Member。同年,他开始负责 Dubbo 的开源维护工作,随后 Dubbo 进入孵化器。
2019年,在他成为 Apache Member 后没多久,Dubbo 毕业。从他身上看到,技术人与技术是共同成长的。
2018 年,Dubbo 进入孵化器邮件
Apache 顶级项目是如何炼成的?
一个 Apache 开源项目从筹备到孵化,到社区发展,最后到毕业,这过程并不容易:据张乎兴统计,2017年有 17 个项目从 Apache 毕业,2018 年有八个项目,2019 年截至到发稿为止,仅有五个项目毕业。2018 年八个项目的平均耗时是 28 个月,而 Dubbo 是在 2019 年毕业的项目中耗时最短:只花了 15 个月的时间,与今年五月毕业成为 Apache 顶级项目。
为什么 Dubbo 能这么快毕业?
第一,Dubbo 邀请了三位经验丰富的导师做指导:Justin Mclean(Apache 基金会孵化器的 VP)、Mark Thomas(Apache 基金会董事会成员)、Dave Fisher(资深导师),张乎兴表示在导师们的指导下就会少走些弯路。
第二,Dubbo 一直有持续地迭代发布,一旦遇到问题就马上修复,同时引进更多的开发者参与到 release 的过程中,一起发现和修复问题,再将这些经验沉淀形成一个有参考意义的文档。有意思的是,有其他社区的项目孵化时,也来参考此文档。
第三,不断地扩大社区的影响力,吸引更多开发者参与。在之前 Dubbo 发布的 11 个版本里,是由 7 个不同的开发者完成的,这种情况比较难得的(因为一般项目是 2-3 位开发者)。
在社区里,开发者可以清晰地知道自己的成长路径:入门-User-Contributer-Comitter-PMC Member 是怎么走的。当然,社区在宣传上也是不遗余力的:例如在一二线城市举办 MeetUp 活动,吸引更多的开发者进社区。
在 Dubbo 的孵化这过程中,张乎兴说孵化开始的 release 是个重要的环节:需要确保准确的 License 和版权声明、符合规范的代码及依赖、准确一致的签名。张乎兴团队在这个过程里踩了不少坑:
在项目发布时,他们遇到一个 License 问题,前端需要 JavaScript 的依赖,在一个间接传递的依赖有一个简单的功能:一段文本按照一定的规律换行,并且在注释写的是输入一段文字输出结果。可由于这段文字是从罗素的书里摘抄出来,这具有文字版权的。
由于 Apache 对于商标和 License 的要求很严苛,这个依赖还隐藏得很深,张乎兴团队只能通过各种方式紧急联系依赖的原作者。
还有孵化项目对知识产权的清理也是很重要,稍不注意便会掉入大坑:团队之前已将 Dubbo 的核心代码迁移到 Apache ,但有一些 Dubbo 大生态下的项目,是放在 github.com/dubbo 下的 group,由于“Dubbo”商标已捐献给 Apache,是不允许在第三方使用的。
没办法,张乎兴团队只好将这个 group 下所有的项目清空,能捐献的项目一并捐献给 Apache,联系不上作者的项目就先迁移到其他 group。
目前这部分的工作仍在陆续迁移中。
建议开发者:
与其浪费时间抱怨工具,不如动手将它变好
面对 Dubbo 毕业,张乎兴在自豪之余,坦言“能够做到这一点的项目,国内还是并不多的。”
探索其中原因时,从项目上,张乎兴认为中国本身是有很多优秀的项目,但可能中国开发者在观念上较含蓄,不大愿意去宣传,所以外界不大了解。
从国内开发者投入到开源项目的时间上看,张乎兴认为国内开发者很多时候忙于公司的业务,而公司的很多项目和开源项目本身是割裂的,所以大家很难挤出时间来持续投入到开源项目里。
在做项目时,大多程序员先从各种各样的框架和依赖上挑选合适的,当遇到不好用的框架时,可能会有人抱怨吐槽:这个工具不好用。便舍弃不用它,再花时间寻找更好的框架。
但张乎兴表示,“与其抱怨,不如亲自动手把它变得更好”。
在这个时候,他建议开发者可以换一种想法:我能不能尝试将工具的问题修复?让框架变得更好用一点?
这样下来开发者不仅能让自己的开发效率提升,工具也会因为自己的技术变得更好用,团队和公司的人均会受益。开发者还可以从这项目入手,参与进开源项目来。
Apache Member 的使命:成为世界和中国的开源桥梁
目前张乎兴不仅在工作上忙开源项目,业务时间也会用在开源社区上:修复 Bug、回复邮件、处理问题等。令他感到欣喜的是,在从事开源软件的这几年里,他看到中国越来越多的开源软件,越来越多的公司重视开源。
谈及未来计划,张乎兴将自己比作一座“桥梁”:期待能更好地连接世界和中国的开源事业。
在成为 Apache Member 后,张乎兴可作为导师协助更多的项目进入孵化。还有,他希望能将自己的经验和方法分享出来,帮助国内开源项目去提升自己的影响力和话语权。
而作为 Dubbo 的负责人,未来张乎兴该如何规划才能让其发挥更大的社会价值呢?
未来 Dubbo 的三个发展方向
张乎兴介绍道,Dubbo 将从这三个方向深耕:核心、生态、影响力。
一、在核心上,Dubbo 分为 2.7 版本和 3.0 版本。其中,2.7 版本将会主打云原生的微服务,并做到和 Spring Cloud 的应用能相互调用,因为 Dubbo 的出厂模型需要和 Spring Cloud 的出厂模型统一起来。张乎兴透露,这个功能将会在 2.7.3 版本或者 2.7.4 版本上支持。还有 Dubbo 在云原生下的部署服务发展。
而 3.0 版本将会主打技术的先进性,将会做响应式,支持React,拥抱标准协议HTTP2.0,还会考虑和 gRPC 的支持,在大规模复查的场景下,能自适用地做到熔断限流和更智能的负载均衡等。
二、在生态上,Dubbo 支持多语言,目前已支持六种语言:Java、JS、Go、Python、PHP、Node.js。后续会完善 Go 和 Node.js 语言的支持,做到目前在 Java 上的功能也能在Go 上支持。
还有,他们将继续演进 Dubbo 的微服务,包括监控诊断、微服务分布式、协议的转换(例如将 HTTP 的协议转换成 Dubbo 的协议)、服务的权限控制等功能。
三、在影响力上,Dubbo 将会持续地做 MeetUp 活动,还可能办技术大会,针对学生开发者,阿里举办有夏令营项目,这样学生开发者也能参与进技术研究上来。
从上面可以看出,无论是 Apache Member 张乎兴,抑或是顶级开源项目 Dubbo,均是在努力推进开源软件对世界的改变。
【End】
热 文 推 荐
☞V神已抵京, 倒计时4天! 6大理由告诉你为什么要参加"2019以太坊技术及应用大会"
☞Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码