写点什么

虚拟座谈会:GitHub 开源大牛谈中国开源

  • 2015-02-03
  • 本文字数:3709 字

    阅读完需:约 12 分钟

最近,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 )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-03 09:2310476
用户头像

发布了 501 篇内容, 共 255.0 次阅读, 收获喜欢 59 次。

关注

评论

发布
暂无评论
发现更多内容

【YashanDB知识库】ycm纳管主机安装YCM-AGENT时报错“任务提交失败,无法连接主机”

YashanDB

yashandb 崖山数据库 崖山DB

闲鱼开发者必读:如何利用闲鱼商品列表数据接口进行数据分析

tbapi

闲鱼API 闲鱼商品列表接口 闲鱼商品列表数据接口 闲鱼商品列表数据采集

百度智能云 ABC Stack 获可信云技术最佳实践,共建一云多算生态

Baidu AICLOUD

硅纪元视角 | 6秒生成4张图,Getty Images和英伟达联合推出文生图AI模型

硅纪元

Go 并发编程原语及并发设计模式

baiyutang

Go 编程 云原生 并发’

【YashanDB知识库】账号被锁,如何分析具体原因

YashanDB

yashandb 崖山数据库 崖山DB

利用人工智能ChatGPT自动生成基于PO的数据驱动测试框架

测试人

软件测试

【Hbase】运维问题汇总

扬_帆_起_航

7thonline第七在线出席中服协时尚科技峰会 探讨AI商品管理落地

第七在线

面向物联网的 NGINX Plus:对 MQTT 流量进行加密和身份验证

NGINX开源社区

负载均衡 开源 物联网 IoT mqtt

济宁有正规等保测评机构吗?大神求告知!

行云管家

等保 等级保护 济宁

IPQ9570 with QCN6274 in a 4x4 Wi-Fi 7 Configuration Exploring the Performance and Technical Benefits

wifi6-yiyi

wifi

新版HAP应用市场即将推出,诚邀意向开发者提前入驻,抢占先机

明道云

全渠道AI数字化商品管理 零售品牌增长“超级引擎”

第七在线

wamp配置多目录访问方法

tbapi

wamp

macOS Monterey 12.7.6 (21H1320) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ISO ventura

如何挑选最佳个人项目管理工具:专家建议

爱吃小舅的鱼

项目管理

【YashanDB知识库】ycm托管数据库时,数据库非OM安装无法托管

YashanDB

yashandb 崖山数据库 崖山DB

利用人工智能ChatGPT自动生成基于PO的数据驱动测试框架

测吧(北京)科技有限公司

测试

优化数据处理效率,解读 EasyMR 大数据组件升级

袋鼠云数栈

大数据组件 大数据计算引擎 大数据引擎 数据组件 组件升级

macOS Ventura 13.6.8 (22G820) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ISO ventura

智源发布三款BGE新模型,再次刷新向量检索最佳水平

智源研究院

【YashanDB知识库】IMP跨网络导入慢问题

YashanDB

yashandb 崖山数据库 崖山DB

AI技术修复奥运珍贵历史影像,《永不失色的她》再现百年奥运女性光彩

阿里云视频云

云计算 音视频 AI技术 视频云 奥运会

大咖公开课 | 大模型场景讲解以及测试方法

测试人

软件测试

穿越流程管理的丛林!Prothentic学院「流程管理培训」第1期圆满落幕

望繁信科技

业务流程管理 望繁信科技 流程管理培训 陈果George Prothentic学院

生成式 AI 时代的数据库:Databend 与大模型的融合探索

Databend

利用人工智能ChatGPT自动生成基于PO的数据驱动测试框架

霍格沃兹测试开发学社

【YashanDB知识库】自动选举配置错误引发的一系列问题

YashanDB

yashandb 崖山数据库 崖山DB

再获奖项,亚信安慧AntDB数据库被评为“2023-2024国产数据库创新赋能优秀产品”

亚信AntDB数据库

虚拟座谈会:GitHub开源大牛谈中国开源_GitHub_崔康_InfoQ精选文章