再论开源

标签: 开源 | 发表时间:2013-11-27 16:00 | 作者:谢益辉
出处:http://yihui.name

几年前我写过一些关于开源的 想法,如今再来看开源,我觉得问题已经不在说教上,而是在趋势上。倒退十年或更久,那时候程序员相对还比较稀缺,软件闭源开发出来之后别人模仿的成本高,而这些年计算机教育的普及让码农数量变得越来越多,更多人懂编程了,模仿的成本大幅下降。写软件作为谋生的目的已经在弱化,更多的是为了自己的实际需求,或社区名声:你不开源?好,那我操起键盘重写一个好了,你自己觉得凉快就永远在那里呆着吧,哥不等你了。

Sublime Text是一款据说有超级牛力的文本编辑器(不开源),可是它几个月不更新用户就受不了了,马上有人操起键盘 重写了一个,Github上点赞的一路飙升到5000多。程序员就是这样的动物,控制狂,啥事儿都想控制。如果他没有办法影响一款软件,逼急了他就拿键盘投票。这样会诞生优质开源软件,当然不可避免也会造成各路兵马混战,浪费人力。所以当今的程序主们必须转向合作的模式,没有谁能永垂不朽。Github合并请求(Pull requests)给这样的合作提供了方便的平台,让每个有能力、有意愿的用户都能揣着代码来投票,而不是传统的一个或少数几个开发者和一群用户在邮件群里战斗。

开源的含义已经不是开放源代码,而是开放态度。在这方面,有几位R核心团队成员的态度糟糕透顶,当年的R & R(Ross/Robert)开源的成功如今变成了另一个姓氏以R开头的日不落教授的霸权(就不用说是谁了,大家都知道),这让R陷入一个尴尬的境地。如谢梁大侠所预测的,R的竞争对手已经不是SAS,而是Python,我对此表示完全同意。如果R核心团队能有更开放的态度,也许还有希望和Python在统计领域一搏,毕竟有强大的先发优势,但如今我们只能面对Python神教的不断奚落去曲线救国,R本身我们动不了,只能从R包入手。

什么是开放态度呢?R核心团队多年不加新人了,近年加入的是Uwe Ligges,因为他维护CRAN的Windows编译很多年了,估计深得教授欢心(一样的倔强脾气),我不觉得他加入能有多大的实质性贡献。Radford Neal在百般无奈下自己开发了pqR,因为R核心团队要么不搭理他的建议,要么过很久才有一个人出来说话。像这样有计算机背景而且做贝叶斯的人(这样的人更注重计算速度)才是R核心团队最需要添加的人,而不是整天捣鼓出更多 R CMD check的规则,把R包作者赶得鸡飞狗跳。

要论R团队中最具有开放态度的人,我认为是Douglas Bates,前些日子他 无情吐了CRAN一脸,然后华丽转身投入Julia阵营了。CRAN承认也好,不承认也好,它对用户的伤害是显而易见的。公平地讲,CRAN这帮人当然也有着不可否认的巨大的的历史贡献,所有人都该感激。教授经常抱怨有些用户不尊重他的劳动,我觉得这有什么好抱怨的呢,林子大了总是这样的,有些人确实很无礼,但有些人只是不懂规则而已,并不是有心冒犯,话说回来,谁让你制定那么多规矩呢,不是所有人都有闲心去读懂那长篇大论的CRAN政策的。很多规则本来都可以通过自动化的方式解决而不必写出来,CRAN非要坚持以古老的邮件加FTP方式维护,管理者和作者都累都烦,却又都没错,都没错的时候打仗是最激烈的,这就要了命了。有时候教授也在 玻璃房子里扔石头,修正R的bug的借用了别人的代码不致谢(好吧,有可能是看了别人的补丁然后自己闭眼重写出来的),还要顺便抹黑另一个R包,我不知道他为什么那么恨维克汉姆,我不是维大人的粉丝,但我觉得真没必要这么深仇大恨。

开放态度也包括使用开放的工具,包括版本控制工具和交流工具,而变化总是让人感到痛苦。指望R搬到 GIT世界可能希望不大,习惯SVN的人似乎总是与GIT势不两立(从此可以看出LyX团队的开放精神),其实GIT要是没有Github撑腰,可能也火不起来,好东西要火起来除了确实是好东西之外,还需要合适的介质,就如同LyX之于LaTeX,RStudio之于R,Markdown之于可重复研究——尽管后者是实质,前者是表象,用户天生就是外貌协会的,再好的东西只要不好看就没戏。再说交流工具,邮件列表是传统工具,我认为它应该退出历史舞台了,弊病太多,作为吐嘈达人,我又忍不住 吐了邮件列表一脸

总而言之,我觉得开源世界的大致势头就是:老一辈倾向于系统控制狂,什么邮件系统版本控制系统bug报告系统,统统自己配置,但现在的系统越来越先进和复杂,想要控制整个系统需要花费越来越多的精力,这些杂碎的事情将耗尽主力队员的精力,而且越来越落后;新一辈摩拳擦掌,虽然经验不足,但解决局部区域的问题还是可以的,而且能有效利用更现代化的工具提高生产力和影响力。未来自由软件的竞争,将不仅是专业实力的竞争,更是综合素质的竞争。在你尽情鄙视社交网络和各种酷炫网站并坚守“一切皆纯文本文件”的时候,你也会被时代浪潮淹没。不公平?确实不公平,但事情就是这样。

相关 [开源] 推荐:

Google开源LevelDB

- 酿泉 - Solidot
Google宣布在BSD许可证下开源其键值存储引擎LevelDB. LevelDB C++库可用于多种不同环境,如被浏览器用于存储最近访问的网页缓存,或者被操作系统使用去储存安装的软件包和依赖包清单,或被应用程序用于存储用户设置. Google称,即将发布的新版Chrome浏览器,就包含了基于LevelDB的IndexedDB HTML5 API实现.

再论开源

- - 谢益辉
几年前我写过一些关于开源的 想法,如今再来看开源,我觉得问题已经不在说教上,而是在趋势上. 倒退十年或更久,那时候程序员相对还比较稀缺,软件闭源开发出来之后别人模仿的成本高,而这些年计算机教育的普及让码农数量变得越来越多,更多人懂编程了,模仿的成本大幅下降. 写软件作为谋生的目的已经在弱化,更多的是为了自己的实际需求,或社区名声:你不开源.

SoftEther VPN开源

- - Solidot
日本筑波大学的全球分布式公共VPN中继服务器软件SoftEther VPN正式在GPLv2许可证下开源,源代码托管在Github、SourceForge和Google Code上. SoftEther VPN是VPN Gate的底层VPN引擎,在开源之后用户将可以编译出自己定制的二进制包. SoftEther VPN提供了一种分布式的免费公共VPN中继服务,服务器由志愿者托管,因此很少能提供长时间的VPN连接,但代理服务器的不断变化也增加了封杀难度.

Facebook 开源 Detectron

- - 最新更新 – Solidot
Facebook 在 Apache 2.0 许可证下 开源了它的目标识别平台 Detectron, 源代码托管在 GitHub 上. Detectron 用 Python 开发,基于 Caffe2 深度学习框架. Facebook 同时公开了超过 70 个预先训练的模型. Detectron 项目始于 2016 年,实现了一系列最新的目标识别算法如 Mask R-CNN,该软件平台在社交巨人的视觉感知系统的进步上扮演了重要角色.

ios代码开源

- - CSDN博客移动开发推荐文章
本人从10年开始搞ios开发,从菜鸟到现在的入门,期间遇到了许多困难,也总结了一些东西,本着开源精神,希望大家共同成长的目的把这个工程开源出来.. 这个工程是从11年到13年之前完成的.主要是我平时用到的一些基础功能模块.其中有其他开源的代码和我自己写的一些.代码结构基本乱,12年以后的代码结构还可以,不是很乱,之前水平有限,如果不怎么样就别喷我了.

Azul开源Zing Jvm

- - InfoQ cn
4月末,继Zing 5.2 之后,. Azul Systems宣布他们将无停顿(pauseless )的 Zing JVM提供给开源软件开发者和项目,以供开发和测试. Azul Systems 工程部副总裁和合作创始人Shyam Pillalamarri向InfoQ说明道:. 我们的部署很大一部分基于开源组件,所以我们认为:“假设我们不能将一些有价值的东西免费提供给开源项目贡献者,他们将一直受限于从Java虚拟机(JVM)视角所看到的内容”,他们将不会考虑额外的用例,或者选择其他能解决了所有内存或扩展性问题、类似Zing的系统.

Java开源建站工具

- Amom - 阮一峰的网络日志
美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单. 他的语言平台是Java,开发项目是一个网站(还未上线). 所用到的工具都是开源的,可以免费得到. 在目前的创业者之中,用Java作为网站开发语言的人似乎很少. 这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事.

开源Python UI框架:Kivy

- xin - 秀码趣 - ShowMuch.com
Kivy是一个可用以快速创建新颖用户界面应用的开源Python库,比如可以用它来创建多点触摸的应用程序,它具备跨平台特性,目前发行有Windows、MacOS、Linux以及Android版本. 作为一个开源框架,Kivy具备以下特性:A.百分百免费使用;B.基于 LGPL3协议 开源,对商业化应用友好;C.跨平台,支持Windows、MacOS、Linux以及Android;D.允许在不同的平台上运行同一套代码;E.稳定以及有完善的API文档;F.通过OpenGL ES 2.0对硬件进行加速;G.自然支持大部分的输入协议或者输入设备;H.基于Python的简单API……等等.

Java开源建站工具

- Alex - 博客园新闻频道
  美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单.   他的语言平台是Java,开发项目是一个网站(还未上线). 所用到的工具都是开源的,可以免费得到.   在目前的创业者之中,用Java作为网站开发语言的人似乎很少. 这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事.

开源代码搜集

- friedvan - 增强视觉 | 计算机视觉 增强现实
很早就在导航栏上加了代码这一页,但是一直没有添加内容. 这两天抽空把之前用过,留意过的代码分类整理了一下. 各位如果在平时学习,工作中遇到过对你非常有帮助的代码,请到这个页面下留言,我会不定期整理汇总更新. Tags: open source, 代码, 新闻. zz Google Summer of Code 2011几个感兴趣的项目 (6).