【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

虚拟座谈会: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:2310286
用户头像

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

关注

评论

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

vue项目的创建和托管【ForVue3】

Python研究所

6月月更

不要小看了积分商城,它的作用可以很大!

CRMEB

源码其实很简单!阿里巴巴最新出品Spring学习脑图+视频+文档真香

Java全栈架构师

Java spring 源码 程序员 面试

居家办公让我绩效拿了C | 社区征文

大菠萝

初夏征文

记一次给OpenHarmony提交代码的过程

坚果

OpenHarmony 6月月更

商城风格也可以很多变,DIY 了解一下!

CRMEB

SDN系统方法 | 9. 接入网

俞凡

架构 网络 sdn SDN系统方法

Google I/O 2022: Android Jetpack 最新进展

fundroid

android Google android jetpack

说下你对方法区演变过程和内部结构的理解

阿Q说代码

Java JVM 方法区 元空间 永久代

揭秘GaussDB(for Redis):全面对比Codis

华为云开发者联盟

数据库 后端 算力

编程技巧│提高 Javascript 代码效率的技巧

JavaScript 编程效率 6月月更 美化程序

牛客java选择题每日打卡Day2

京与旧铺

6月月更

模块五(微博评论)

Geek_701557

面试官:你简历上说精通mysql,那你说下聚簇/联合/覆盖索引、回表、索引下推

Java全栈架构师

MySQL 数据库 程序员 面试 java架构

DDD概念复杂难懂,实际落地如何设计代码实现模型?

Java全栈架构师

程序员 后端 领域驱动设计 DDD 架构师

MyBatis 执行流程及源码解析

码农参上

mybatis java实战

地理位置数据存储方案——Redis GEO

程序员架构进阶

redis 源码剖析 geo 6月日更 6月月更

Java代码优化请求合并与分而治之

码农参上

Java 大数据 高并发 java实战

Wireshark网卡无法找到或没有显示的问题

岚哲

网络 Wireshark 域名 vpn 网卡

Wireshark的HTTP请求包和响应包如何对应

程序员欣宸

Wireshark 6月月更

词法陷阱(C)

fy

c C陷阱与缺陷

Linux网络编程_网卡操作指令与TCP协议介绍

DS小龙哥

6月月更 socket网络编程

语法"陷阱"

fy

c 语法陷阱

绕过技术聊"跨端"......

hiisea

前端架构 前端框架 跨端开发 小程序框架 跨端框架

读配置、讲原理、看面试真题,我只能帮你到这了。。。

阿Q说代码

redis 主从架构 增量同步 全量同步 过期key处理

《睡眠公式》:怎么治睡不好?

郭明

读书笔记

解析数仓lazyagg查询重写优化

华为云开发者联盟

数据库 后端

Mysql 源码阅读(二)登录连接调试

MySQL 源码

Rxjs TakeUntil 操作符的学习笔记

Jerry Wang

typescript 响应式编程 angular RXJS 6月月更

16 种企业架构策略

涛哥 数字产品和业务架构

企业架构

2022年首期Techo Day腾讯技术开放日将于6月28日线上举办

科技热闻

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