说起来开源年会过去都已经两周了。写参加某项活动的经历似乎像是小学生写作文,不过还是有必要的,毕竟这也算一个自己一直以来向往的事情。每个人对于「开源」的认知都是不同的,这类活动也是,各取所需。说白了,也可以用这种观点来看待上课。现在的课程,一类已会,一类不会,到头来还是没什么长进。

会议的流程和其他技术会议类似,签到入场后门口一排赞助商在为自己的产品打广告。场内演讲的时间很紧凑。有些内容感兴趣,有些内容又有点鸡肋。噢,有送可乐的,很实在。

上午第一场报告是一个国内学者做的,大致讲了一下开源和云计算相关方面的趋势和问题。没有什么亮点,或者说没有本人的关注点,所以印象不深刻了。后面是 GNOME 基金会主席的演讲,跟技术无关,说了一下在当今桌面软件依然具有独到的重要性,以及鼓励大家能够多参与到像 GNOME 这样的项目当中去。当然,我是一个 KDE 爱好者。(如果就 Linux 的这群桌面系统而言)

我个人对桌面软件开发知之甚少,因此不太清楚这样的桌面系统的组件的复杂程度和难度。有时候只是单纯地觉得,作为自由软件社区的开发者,靠自发组织是难以维系像桌面软件、浏览器这类众口难调,又期待用户体验的程序了。不同的人看待开源社区自然有不同的视角。除了开源软件本身蕴含的技术价值,开源软件的开发模式本身已经成为一种神奇的现象。传统意义上认为的需要精密严格管理才能完成的项目居然在如此松散的组织条件下也能做到,还能显得生机勃勃。当然,现在的开源生态,包括不同项目各自使用的商业模式,恐怕也是 Richard Stallman 当年未曾想到的。有人将开源软件视作道德标准,有人以质量作为开源软件的核心优势,有人则把开源当作能更好完成项目的开发模型。不得不说这就是开源世界的魅力。其实开源并无什么必然准则,开放扩张自然带来无穷的生命力。

后面一位演讲者也来自外国,是 Apache 基金会的前副总裁 Niclas Hadhman 先生。这位老哥如果生在中国,那就是个不折不扣的愤怒青年。一上来先解释说自己不想讲一些重复的东西,大家有兴趣可以去看之前的讲稿。中间介绍了 Apache 基金会的一些项目。(说起来 Apache 基金会的项目除了起初的 HTTP 服务器之外好像都是 Java 世界的产物。)后面指出了中国人或者中国开发者在参与开源项目过程中的一些问题,或者说和国外迥然不同的地方。其一是中国人甚好微信,选择用微信来完成一切事情。我个人对于微信的看法其实是相对负面的。在早期年轻人用微信更多是为了好玩,有人会将自己的微信号公开在网上。而现在微信成了社交关系中不可避免的纽带,也影响到了在中国的外国人。

微信像是一种工作关系的延伸,特别是在工作生活界限不明确的环境当中。我不喜欢微信这个软件本身的很多功能设计,尽管它和它的爱好者们喜欢以「简洁」等词标榜自己。社交软件背后一定是承载着特别的年龄人群的。即使是像微信或者 FaceBook 这样全民级别的软件,内部也隐式地根据不同的年龄层分化出相对离散的用户群,并且产生着独立的社交文化。话说回来,微信的确是个不错的支付软件。尽管在可以用银行卡的地方,我觉得不用输密码的闪付更方便一点。(如果他们不执意让我签字的话)微信的很多问题在于,它是一个运转良好的通讯软件,但它与 QQ 都只是腾讯生态下的核心平台而已。它们是应用,而不是一个开放的协议。微信不让我导出聊天记录,新进群看不到之前发言,微信不能接入机器人,更不支持插件。(不久前腾讯似乎以反垃圾信息为由关闭了微信网页版,真实目的不明,不过我想在网页版下可以很方便地利用浏览器插件实现端到端加密,尽管目前尚未耳闻有人这样做)

后面的批评包括了对于中国文化的常见看法。比如中国人笃信权威,但是开源社区里没有一个绝对权威。不过我认为这其实是来自于这些中国参与者对开源文化的不了解。日常生活中的会议目的是求同存异,开会各方最后的目的是达成共识然后开始某项进程。而开源社区很多时候不是这样,去参与一个项目的目的很可能就是 Just for fun 或者使自己用着更方便一点。在这种背景下,达成共识是好事但不是必需之事。(苹果毁掉 KHTML 这样的事是道德范畴,个人做不到也不太可能去做)所以无法达成共识的时候,那就分裂。开源社区并没有限制个人在遵守许可证条款前提下分裂项目的权利。如果自用,那无所谓;如果有不同意见,等待自然选择即可。他还提到了开源社区中英语中心的观点,认为这不利于开源的发展。(抱歉,这一点记忆不是很清晰,可能不太准确)也有人认为在 GitHub 上用中文交流可耻。我个人的观点没有那么激进,也不清楚 GitHub 有没有相关的限制。Ruby 社区的邮件列表中也专门有日语板块。对于语言问题不妨用更实用主义的态度,如果一个软件的主要用户和贡献者都是中文使用者,那用中文交流甚至注释都并无大碍。如果项目涉及到来自多个文化的参与者,至少为交流内容提供一份英文副本是有助于它的传播的。这是一个沟通成本的问题,和中文本身没关系。请不要将中文附带上额外的政治意义,也不要因为国内不负责任的译本盛行而认为中文缺乏表达力。坦白讲,以许多程序员(也包括我自己)的语文素养,完全没有资格质疑中文和其他语言在表达能力上的差距。

演讲中还有一点,就是来自中国的 Apache 开源项目多是由企业捐赠,而不是个人爱好者的开发结果。有朋友表示是中国程序员普遍压力比较大的原因。我认同这一点。不过还有一个原因是之前国内还没有形成一种程序员的黑客文化。现在看来已经好很多了。当然,一些基础设施类的项目还少有国内独立程序员的参与,这大概也跟技术积淀有关。况且国外许多有价值的开源项目都出自大学之手,而国内大学的教师普遍在干什么,明白了吧?

不得不说 Niclas 真是一个有意思的人。后面还有一场短的演讲题目叫「软件宅神进化史」。指出现在软件开发走错了路,没有试图用更少更好的人来解决问题。印象最深刻的有两点。一是他强调一个团队人数一定要小,五个人的团队开发效率几乎大于五十个人的团队。二是有听众提问,人工智能是否会取代程序员的工作,他说「大概是会的,不过离今天还很远,至少二十年吧,而那个时候我已经不在了,所以我并不想考虑这些问题」。实习、软件工程课本和学校项目的经历已经有力地说明了第一点的内容。过多的人员配置真的会带来极大的负担和沟通成本。学校的老师恐怕也只是出于偷懒的心态要求诸如八人或者十人的队伍。

下午有四个分会场,看个人兴趣跑来跑去。当然比较困了,听有些演讲的时候都睡着了。挑一些有印象的来说吧。每个分会场有各自的主题,大致是关于明星项目、草根项目、开源社区、开源治理。开源社区那一场的主持人是一位来自台湾现在在华为的工程师。开场的演讲也由他带来,聊了聊两岸三地开源社区的发展和不同,不过主要是关于台湾。台湾的政府部门也支持过开源项目,不过后来终止了。印象深刻的是在台湾,开源已经发展到超越软件从业者本身的一个事业,转变成一种社会运动,典型的例子如台湾社区发起的 g0v 零时政府项目。这才是体现了开源本质精神的项目。一则推动信息开放,二则使人人可参与。每一个人,都需要对信息有更多的了解,不仅仅是作为一个使用者的角色。屡屡爆出的信息安全事件(比如「永恒之蓝」)和曝光出来的地下产业,都是证明。

开源社区分会场后面有一场姜军带来的有关 RubyConf China­ 的演讲。很实用主义,提到了筹办一个技术会议过程中的种种花费和问题。晚宴时坐在姜军旁边聊了几句,才知道他是大学肄业。明年的 Ruby 大会已经向松本行弘和 Aaron Patterson 发出了邀请函,在上海举办。挺期待,虽然那个时候应该不是 Ruby 程序员了。

另外两场演讲,一是如何用开源盈利,二是关于开源运用中拿来主义的心态。内容都比较中规中矩。开源事业能发展到今天,的确也不只是个人开发者的义务劳动能够涵盖的成果,许多商业公司也为开源项目贡献了代码,不少开源项目也找到了盈利模式从而活了下去。典型的例子包括 MySQL 的双重授权,RedHat 的服务收费,一些软件包提供商业的高级版,Google 靠其他业务变现等等。讲者强调了两点:做开源不要忌讳谈钱;所有盈利模式的基础都是用户数量。另一位讲者从文化的角度分析了企业不愿意向上游贡献,不愿意付出资源到开源事业的原因。个人看来,这也跟环境有关。大环境不尊重知识,法律对版权的保护也不到位,外行指导内行,就是这样的结果。不过在可见的未来,这是可以改变的。

后面有一位法律人士在谈 GPL 的传染性问题。很遗憾没有听到。在今天,GPL 协议几乎快到了「人人喊打」的程度,也是令人唏嘘。如果我写了一个自己用的小程序,我会选择用 GPL 发布,因为它代表了自由软件的纯正价值观。但是如果我的目的不是自己日常使用,而是想推广它,恐怕就会考虑 Apache、MIT 或者 BSD 一类宽松的许可证了。作为个人实质上很难去猜测 GPL 或者自由软件基金会的未来,因为 GNU 和 GPL 项目在整个开源世界里所占的比例越来越小,受关注也越来越少。但是没有人能够否认 GNU 带来的工具链在整个体系中的核心地位,大家也几乎都承认是 GPL 保护了 Linux 这么多年来的顺利发展。自由软件的概念也慢慢被开源软件所取代。在软件世界发生的事情不禁使人联想到现实世界:理想主义者作为开拓者推翻了旧的世界,但最后却是由资本和权力接管了世界。靠义务劳动和热情是无法完成如此巨大的事业的。现时开源软件已经是任何软件开发者和公司包括微软都避不开的一个话题了。我们有足够的理由相信开源世界明天会变得更好。然而现实不仅仅是源代码。新的科技引出了新的问题,个人隐私比以往任何一个时代都危险。庆幸还有 Richard Stallman 这样的义士继续为自由与开放而奔走呼号。

最后的晚宴不错,第一次吃黑胡椒牛排炒年糕。下午的茶歇也很舒服,对蛋糕的认识有了改观。晚上的活动结束之后,遇到一个用友的工程师,扫地僧一样的角色。他对我说了一句话。

「你今天对开源社区付出的,明天社区会十倍、百倍地回报于你。」

我想是的。