加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 资讯 > 正文

苹果核心系统高级工程师谢孟军:开源如何影响程序员?

发布时间:2017-02-20 18:49:25 所属栏目:资讯 来源:36氪
导读:副标题#e# --> 什么是开源? 我们都喜欢开源,在国内一提到开源也都认为是好事情。但到底什么是开源,也许大部分人对开源理念都不够清晰。 国内多数软件公司或开发者对于开源的热情,仅仅局限以下两方面:免费的代码;深入参与的开源活动。对开源,我们用的多
副标题[/!--empirenews.page--]

-->

  什么是开源?

  我们都喜欢开源,在国内一提到开源也都认为是好事情。但到底什么是开源,也许大部分人对开源理念都不够清晰。

  国内多数软件公司或开发者对于开源的热情,仅仅局限以下两方面:免费的代码;深入参与的开源活动。对开源,我们用的多,贡献少。国内发起的有一定影响力的开源项目,也是凤毛麟角。好的现象是貌似 Apache 基金会上,逐渐能见到很多国内公司贡献的代码,成为顶级项目。

  

苹果核心系统高级工程师谢孟军:开源如何影响程序员?

 

  我曾听过自由软件精神领袖理查德 · 马修 · 斯托曼(Richard Matthew Stallman)的演讲,演讲中他特别强调 “Free is not free”,对这句话我的个人解释是 “自由,而不是免费”。free 开源是自由,但不等于免费。开源是一种商业行为。试想一下,我们平日用谷歌百度做搜索,表面是免费,背后隐藏的是商业广告给他们带来的巨大利润。我们在尽情享用那些开源的免费大餐时,已然完全忘记开源的真正力量——开源是自由的,但不是免费的。

  除此之外,对开源定义的理解,也可以借用先鲁迅先生所说的 “拿来主义”。把资本主义的资源拿来,给我们社会主义用。而拿来主义并非是不好的,原因是只有当你去用了这个产品,你才能去了解开源,了解他开源的产品到底是什么样的。live 开始前,一个同学问我怎样参与到一个开源项目之中。我的回答是,先拿来主义,把一个开源项目拿过来,自己先用起来。事实上这个观点可能和多数人不同。多数人的感觉是开源就需要贡献进去,需要付出。直白地说,拿来主义是第一步。不使用又如何参与?

  但拿来主义并非一概而论。 只做个 “hello word”,写一个 demo,就半途而废说这个东西不过如此,这样的态度是无法真正参与进去。真正贡献一个开源产品,需要做到以下几点:

  理解一个开源产品的应用场景是什么;

  想明白当初这个作者为什么会设计它,设计这个产品当初是为了解决哪一些问题;

  原作者解决的这些场景问题,是否符合我的场景问题?

  基于 [3] 的判断,如果你们处在同样的场景同样的问题。才可以使用“拿来主义”。应用也不是浅尝辄止,要进行深入研究。至少做到把他们的文档读一遍。

  使用之后发现一些功能不能满足自己的需求,此时你可以说,这个开源有缺失,再贡献进去自己的代码。把这个功能完善。

  以上是我认为的开源的使用方式和路径,很多开源项目也都是这样发展起来的。

  我认为的理想开源,及国内现状

  首先,开放的源代码。很多国内开源项目,也仅实现了这第一步。比如,公司开源某项目的源代码,直接扔到 github 上,即认为自己开源了。真正的开源,开源源代码,是最小的一步。

  其次,有详细的文档。任何一个好的开源项目,都该有一个新手入门、详细的文档类东西。国内多数开发者,在这部分同样做得相对较差。

  再次,是一个活跃的社区。国内开发者社区,比如我在国内做 beego 时,使用较多的是 qq 群、微信群。国外使用较多的是 Google Groups , iris , slack。slack 目前也已经建立,Google Groups 回复时间相对较少,通过 github 交流相对较多。在 github 上进行一些开源问题的交流相对较好。

  最后,是持续改进。吐槽一个阿里的例子。阿里已经开源了很多项目。但其实一开源后你会感觉,完全是为了一个 KPI。在阿里,想要从 P7 升 P8,P8 升 P9,是需要开源的。开源后才有资格申请等级晋升。如此开源,后续的改进力度上,难免有一定程度的缺失。

  综上,我对开源的理解可能首先是一个社区。如自由软件精神领袖创始人所说 “free is not free”,影响开源最重要的因素是以怎样的精神心态去开源。所谓自由,是开发者、测试者、贡献者、用户,可以自由使用、自由交流,以及自由离开。这样的状态使得所有人都感觉舒适自由,在此程度上舒服地做事,进而有一个好的 idea 去改进。

  目前国内开源存在不好的状态是,一言不合就动口,看到不爽就开骂,开发者做开源,需要用户的一些吐槽。更好的交流方式是,吐槽诸如某功能如何,哪里做的不好,又如何去改进。而不是去埋怨吐槽这个代码有多烂。从大学开始做开源直到现在,我碰过各种各样的人。当然久而久之心态会变得非常好,读者的负面评论并不会伤及到我的内心。

  其次,开源也是一种商业模式。好的现象是现在也有很多成功的开源公司,他们把开源的商业模式做的非常非常成熟。例如 redhat 是开源的操作系统,也要用到商业的支持。MySQL 被 ORacle 收购以后也是这样。以上两个例子应该是在商界模式上做开源做的非常好的公司。

  云计算领域,做的比较好的如 openstack、docker、kubernetes,开源项目非常成熟,背后的商业模式也已经逐步做起来。尤其 openstack 在私有云领域,已然做的非常完善。前天(1 月 10 日晚),OpenStack 开源云计算企业 EasyStack 宣布完成 5000 万美元 C 轮融资,这也说明了开源并不表示免费。我们可以去提供很好的商业支持和商业模式去发家致富。OpenResty 和 BigBang 是开源项目。没有商业运作。

  一个好的开源项目,如果要做的更加成功,背后需要有一个更好的商业模式去支持他。因为开源并不等于免费。这是从商业模式角度。思考,开源是一种营销模式,它使得以往封闭的需要很长周期技术验证的项目,以开源的方式可以很快进行验证。

  如何做开源?

  首先,要有一个能解决问题的 idea。无论是工作,做产品,根本上是怎样解决别人的某一个痛点。不管这个痛点多大多小。创业也是为了解决某一批的一个痛点。有了能解决问题痛点的东西,才能拿出来说,自己要去创业了,要写项目了。因而开源的前提,是解决某些人一个痛点的东西。

  其次,善用身边的小工具。很多时候我们身边的一些小工具,是可以锻炼出来,做一些开源的东西。例如,我在我开源的一个东西 bat (github.com/astaxie/bat) 下,忘记原来是 java 还是 python 写的了,有一个叫 httpIE 的命令行工具,开源测试 lastfor 的 api 的。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读