最近,githuber 发布了一份“ GitHub 中国开发者 2014 年度报告”,比较详尽地分析了中国开源的发展现状,其中对 star 排名前几位的开源项目负责人进行了访谈,InfoQ 整理了其中比较通用的部分,尝试总结出这些大牛们对中国开源的发展看法和建议。
githuber 采访的开源大牛分别是:
- ECharts 林峰
- ThinkJS 李成银
- Cocos2d-x 林顺
- Pen 小鱼
- Vue 尤雨溪
对国内开源现状的看法
李成银:
目前国内的开源项目基本上都是团队内部在开发,即使是非常成功的项目 PR 也非常非常少,所以目前来说国内的开源环境仍然不够活跃不够开放。一个项目出来会被很多人骂,不过关键就是别人骂了我们我们还不知道,也就无法改进。我们觉得骂本身不是坏事,说明用户还是需要你的项目的,只是项目不够好而已。但是关键是骂也要去 Issue 里骂,这样我们才能看到。总体来说国内的开源环境已经比之前要好了,Issue 多起来了,PR 也有一些,不过目前来说还不够成熟,不能像国外的项目一样能够通过 PR 完成很多功能。
其实也不能怪大家,国内和国外的工作情况就不一样。国外大家把编程当兴趣来做,工作也没有国内这么忙,所以有更多的时间和兴趣投入开源项目中。国内经常加班,压力很大,大家对于开源的热情就不高,更多的是把开源项目当做一个宝库,遇到问题的时候去找现成的解决办法,而不是参与其中。
此外,大家更喜欢用国外开源项目还有一个原因,就是国外的项目更加稳定,不太容易出现项目无人维护的情况。国内的开源项目有时候开发者会放弃并停止更新,这样依赖这些项目构建的项目就会很难处理,而国外的开源项目即使维护者停止更新,他也会找到其他人继续维护,比如前段时间的 Express,这就让用户很有安全感。
个人、团队、公司在开源项目的不同角色和选择
可以总结一下 ECharts 的发展模式吗?比如先从兴趣出发最后得到公司支持,或者从诞生就由公司支持和运作等等。如果其他开发者也想遵循这个模式的话,有什么话想对他们说吗?
林峰:我很幸运,这事本身就是自己的兴趣,也是公司的需要,遇到各种好领导放任自如的让我随意发挥,并且当事情越做越大的时候能够不断的给于支持和帮助。
做好一个项目,最最重要的,团队的力量,要找到那些志同道合,才华横溢的小伙伴与你并肩,ECharts 团队是个跨部门的虚拟组织,我们面向百度全体 FE 招募,组建时我立了个规矩,“如果你忙或者没时间做这件事情,请暂时离开,我们随时欢迎你归来”,刚开始几个月我两周清一次场,各种进进出出,但半年后团队就基本稳定至今了,用叮叮的话我们也成了一个小小的家庭。
你觉得公司在开源项目中扮演的是什么角色呢?在当前国内的大环境下,如何在公司中做一个成功的开源项目呢?
林峰:公司是不会无缘无故启动一个跟自身业务无关或者自己都用不到的项目。好的项目能获得更多人的关注、反馈、代码贡献,开源后如果能让这个项目发展更好不仅对公司自身项目需求有意义,甚至可以让公司在某个领域确立自己的技术领导地位(想想看 Android、Linux、jQ、Bootstrap),这无疑是对公司极好的事情。
公司是否可以运作一个开源项目跟公司状况和基因有关,这个真不好说。只能说一点,在公司内做开源项目,这个项目本身是否对公司带来价值是关键,短期的长期的都最好要有。
什么事都是有利有弊,你觉得公司主导的开源项目相比个人或者社区主导的开源项目利在哪里,弊又在哪里呢?
林顺:有公司或者资本提供支持的开源项目,相对于个人或者没有资本支持的开源项目的优势:有更多的资源投入,对开源项目的后期发展至关重要,允许有更多专职的研发人员,产品的迭代周期和质量也能得到很好的控制,提供更加持续长久的维护,可以让开源产品走的更高、更远。至于弊端,那就得看对开源项目的态度,如果本着服务行业,推动行业升级,用开放的心态来做开源项目,并不会存在着什么弊端,全世界范围内也并不乏有各个公司支持的开源项目。当时我们的操作系统公司做的不好了,引擎项目发展的却是很好,愿意投资我们的有好几家,但是最后还是觉得陈昊芝思路很开放,能坚持不把一个开源的项目做成闭源商业项目,最终和他一起做,一路走来,也发现我们当初的选择是最正确的。
如果其他公司也想走开源路线,有什么话想对他们说吗?
林顺:非常欢迎一起加入开源路线,开源项目不论是对个人和对公司,能学习到很多宝贵的知识,社区里汇集的智慧是巨大的宝贵的,国外资深程序员教你两招,你就能发现原来代码还能这么写,框架还能这么设计优雅。另外,和社区做好互动,有效采集用户需求和反馈,是推动开源项目往正确方向发展的关键,也是产品化和易用化的捷径。
你觉得作为个人开发者来开发和维护一个开源项目难度大吗?中间有没有想要放弃的时候呢?
小鱼:难度还是要看项目吧。不过我相信人多不一定能解决问题,因为技术问题普遍都有天花板,对于核心思想和技术,大多情况下应该是由更少的人产出的。思想定了,核心技术定了,添加功能可能并没有想象中那么难。而对于有没有放弃,我通常是这样想的,最差的可能就是放弃。坚持会发生很多美好的事情,比如写博客。如果有很多紧要的事,时间不多,有时候也只能放弃,只做觉得紧要的。
尤雨溪:这要看项目的规模了。一般来说适合个人维护的项目,最好是专注于解决一个较小的专门问题的库,否则可能会占用过多精力。项目的规模大到一定程度以后,最好是由社区或者团队来共同维护。说实话 Vue 现在的 issue 增长速度已经挺累人的了,好在现在也有很多社区开发者会积极地帮忙回答问题,让我省了很多精力。
你觉得纯个人开发开源项目和有公司背景的开源项目比起来有什么本质的区别呢,作为一个开发者应该如何选择?
小鱼: 本质上都是开源。个人并没有统计过个人开源的东西更成功,还是公司开源的东西更成功。不过像 ElasticSearch 大多代码都是一个人写的,非常成功;Docker 是一个公司维护的,非常成功;Bootstrap 是 2 个人开发的,公司维护的,非常成功。本质上我觉得是开源的产品真正有用,就会有人用;如果有公司给时间和金钱支持,那相当好;而最好的是有一个社区,大家一起维护。比如你可以在 Google 上找到关于 jQuery 的几乎所有答案,这就是社区的力量。所以如果你有一个好的项目,那么尝试培养一个社区,比一个人写,或者只有公司支持没有人开发的僵尸项目好。
尤雨溪:有公司背景的开源,其背后肯定是有商业利益的推动,所以只要公司的商业利益和项目的发展状况是正相关的,这个项目就会有比较稳定的财力和人力支持。但这类项目通常更受公司决策的影响,对社区的意见不如个人开发的项目来得敏感。个人觉得选择一个项目的时候是个人还是公司开发并不是关键,关键是看背后的公司 / 个人是否靠谱。
开源对程序员的意义
林峰:太有意义了,学习啊!看大牛们的代码是一种幸福,从模仿到领悟到融入自己的程序里,这就是成长。身边很多大牛们都把 GitHub 视为游乐场或者玩具店,不是说儿戏了,是要有玩家的态度和享受玩的快乐,要在上面学会折腾,GitHub 上有无数好的项目,多动手,多折腾,尝试融入到这些开源社区去做些贡献,一开始哪怕就是跟 Issue 凑热闹,给些使用反馈,文档错别字纠正都是有意义的,然后就是贡献自己的想法,帮助别人解决问题,当你开始贡献代码,或许你就能体会到开源对你的意义。
林顺:参与开源项目对于程序员来讲是一种高效、快速学习成长的方法,不仅如此,如果你是一个技术爱好者,参与开源项目你有可能找到自己的兴趣,擅长结合点。当然,如果能找到和商业的结合点,进而从事自己喜欢的工作,那就更爽了,这点是很难得的。
一般有秩序的开源社区都提供很好的知识和经验交流平台,深入参与到开源项目中,对个人的技术成长和视野会有很大的帮助。
GitHub 在全球的火爆程度无需多表,提供非常高效的项目开发协作机制,是了解开源项目运作机制的很好入口。在 GitHub 上,开发人员可以随时与全世界的人共享代码,也允许接受来自全球不同地方的人贡献各种 idea,代码片段,也是社区交流的基础,越来越多的开源项目迁移到 GitHub 上。
小鱼:开源是一种共享的精神。意义可能有很多种。让别人受益,自己得到改进反馈,让更多人从代码认识你,诸如此类,于每个人不同。开源并没有直接改变过我的生活,不过我喜欢写写代码,还能帮到人,于我已经是很大的乐趣,而有乐趣的生活就是我的意义。
对于 GitHub,他只是工作 / 协作平台,这样的平台还有更多选择。不过我一直用它,是因为其他产品都做的太丑,无论是细节还是体验,而我更愿意选择好用的工具,即使付费。
尤雨溪:我觉得开源的意义对于普通开发者来说,可以看别人的源码学习自然是最主要的了。在 GitHub 上利用高级搜索去搜自己语言排在前列的项目和开发者,可以学到很多东西。另外每周看看 trending 的新项目也可以发现很多好东西。另一方面,尽可能多地开源自己的代码也有好处,因为这可以迫使你对自己的代码保持一个高水准的要求,而不是得过且过。
感兴趣的读者可以访问 githuber 查看 GitHub 中国开发者 2014 年度报告和完整的采访内容。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论