引言
软件开发领域的开源协作方式在当代爆发出了强劲的生产力。以这种方式开发出来的软件产品覆盖了几乎所有软件类别,并获得了广泛的应用。基于对开源协作模式进行细致的考察,我们可以对共产主义社会的生产进行一些合理的构想。
开源软件的历史
20 世纪 50 年代至 60 年代,几乎所有软件都是由从事学术的研究人员写作开发的。同时很多大学的计算机实验室要求所有安装在电脑上的程序要和源代码一起分发,某些商业公司也在向用户释出软件时提供相应的源代码。一些在 70 年代开发的自由软件至今仍然在被持续开发和使用(比如 Tex 排版软件)。
然而在 70 年代和 80 年代之交时,电脑销售者及软件公司开始例行公事地为软件许可证收费,并将软件作为“编程产品”上市,同时对新软件的开发通过著作权、商标以及用户协议施加法律限制。1976年,比尔·盖茨发表致爱好者的公开信致,在信中,他表达了对爱好者们肆意复制微软产品 Altair BASIC 却不支付许可证费用的行为的沮丧。1979 年,鉴于销售 UNIX 有利可图,AT&T 开始强力推行其许可证。IBM 公司也在一封公告信中宣布改变了其政策,不再会在提供软件的同时提供源代码。
1983 年的时候,由于一个打印机的功能因为用户被阻止使用其源代码而无法被正常修复,Richard Stalman 发起了 GNU 计划,目的就是打造完全自由的软件生态系统,替代已有的商业软件,Stallman 在这时使用了“free software”(自由软件)这一名称。1991 年 Linus 开发出 Linux 之后,GNU 终于成为了一套完备的软件生态系统,涵盖了操作系统、编译工具、编辑工具等软件生产的必备资料。
Free software is software that respects your freedom and the social solidarity of your community. So it's free as in freedom. —— Richard Stallman
之后促进开源的基金会组织、开源社区不断地被建立,开源软件井喷式增长。不论是在开发语言、框架、库上还是在普通的桌面软件上都出现了一批极具影响力的开源软件产品。
开源发展到今天,已经逐步形成了能够与普通商业软件竞争的能力,在搜索框里输入“Open Source Alternatives”就能够找到许多能够替代昂贵商业软件的开源软件。不仅如此,开源软件生产所爆发出的强劲生产力也吸引了众多商业公司投入开源的怀抱,为开源软件创建一个开发人员组成的社区,让开发人员积极为开源代码库做出贡献。商业公司参与开源协作在资本主义社会是不可避免的(甚至可以说,开源软件的商业化与自由化在当代的斗争就是一种阶级斗争的具体形式),但是商业公司的参与并不代表着开源社区自发的组织生产是落后的或者效率低下的,相反,我们可以看到的是商业参与的开源软件对开源社区的依赖以及一部分没有商业参与的开源软件的高质量发展。
开源软件产生的原因Value your freedom or you will lose it, teaches history. 'Don't bother us with politics', respond those who don't want to learn. —— Richard Stallman
将开源软件的产生完全归功于价值取向是不正确的。Richard Stallman 个人对自由的追求当然是 GNU 产生的很重要的因素。但是如果没有发达的社会生产力,开源软件是无法发展的。
首先,开源从诞生起就是全球化的,它把分散在全球的开发者组织起来共同开发。为达成这一目的,一种支持异地分工合作的基础设施就必须存在。互联网的出现以及相应硬件的发展为这种合作提供了可能性。基于互联网,程序员可以方便的共享代码,针对问题进行非实时性或者实时性的讨论,系统、有序地跟踪各种问题等。发达的互联网以及支持互联网的硬件是开源协作这种开发模式存在的前提之一,只有在互联网充分发展的情况下,开源生产才可能得以存在,否则不论怎样自由的价值取向都只是一种空想,是不足以促成开源生产的诞生的。
其次,除了有关开源协作的互联网技术之外,其它的物质生产力的发展也是开源实践产生不可忽略的重要原因。开源生产在很大程度上是自愿参与的,而不是强迫参与的。只有生产力较为发达,社会剩余产品大量存在,才能够使得一部分开发者遵从自己的价值取向来参与开源生产。如果观察 GitHub 用户所在的地区(如下图),可以发现相对发达的地区用户更加集中。GitHub 作为一个巨大开源项目的开发协作网站,其用户分布是有很大参考意义的。
GitHub 用户全球分布图
值得注意的一点是,软件行业中的开源,从人类漫长的历史中看,几乎是随着软件行业的诞生而诞生的。软件的开源协作不是被强加到软件行业中的东西,而是软件行业本身孕育出来的一种模式。许多实体产品行业发展到今天都没有产生类似于软件行业这样开源协作的生产方式。究其原因,还是在于软件开发对于实体产品生产来说的特殊性:
这三点对软件开源生产至关重要。第一点使得软件天然能够按需分配,在获取软件的同时不会造成供给紧张。共同生产的软件是可以供所有人使用的。第二点使得参与开源除了硬件的极小耗费之外没有额外的成本。第一点和第二点对第三点都是至关重要的,而第三点也是对软件的开源开发来说最重要的一点,即众多开发者的参与。传统的实体产品生产,由于客观物质生产力、本身的特点以及资本主义生产关系的制约,很难顺利实现类似于软件行业的开源。
开源软件的繁荣及其影响
开源的繁荣在当代已经成为一个不争的事实,通过开源协作而制造出的软件也已经渗透进了我们生活的方方面面,在软件生产、发展的过程中扮演着至关重要的作用。
在共产主义社会高级阶段上,在迫使人们奴隶般地服从分工的情形已经消失,从而脑力劳动和体力劳动的对立也随之消失之后;在劳动已经不仅仅是谋生的手段,而且本身成了生活的第一需要之后;在随着个人的全面发展生产力也增长起来,而集体财富的 一切源泉都充分涌流之后,——只有在那个时候,才能完全超出资产阶级法权的狭隘眼界,社会才能在自己的旗帜上写上:各尽所能,按需分配 ! —— 卡尔 · 马克思:《哥达纲领批判》
开源的繁荣所带来的最大的影响就是异化劳动的终止。在参与开源软件开发的过程中,“劳动不仅仅是谋生的手段”,更是一种发展自身的需要。即使有些商业公司会指定员工参与开源项目,但这并不影响自愿参与开源项目的开发者作为自身发展需要的劳动参与。普遍来讲,自愿的开源参与就其贡献量本身来说并不对个人的收入有很大的帮助,参与开源软件开发、加入开源社区的主要动机也并不是为了增加收入,而是发展自身、提高知识和能力或者单纯地就是为了参与一种新的合作形式。
加入或留在开源/自由软件社区的原因
参与开源软件开发的开发者在参与过程中无疑是各尽所能的。而由于软件的特殊性质,开源软件又为各取所需创造了条件。
开源协作的扩展
开源协作方式在软件开发领域取得了很大的成就,爆发出来巨大的生产力。那么这种模式对于其它的行业是否有参考意义呢?答案是肯定的。
首先,就协作本身来讲,我们已经可以在遍布世界的合作社中看到一些与开源社区管理相似的原则,例如:社员的民主管理原则,开放、自愿的原则等。可以想见,在社会主义社会,经济生产中的民主管理,开放、自愿等原则会更加普遍。
然而,开源社区中开发者为了发展自身而参与生产是建立在基本生存问题得到充分解决的基础上的。在客观的物质生产力不够发达的情况下,不论经济生产的参与有多民主,我们仍然很难在其它的生产领域看见像软件开源社区中这样开发者完全为了发展自身而参与生产的情况普遍发生。
而在生产力高度发达的共产主义社会,在基本生存问题普遍得到充分解决,社会剩余产品丰富的情况下,我们或许能够看到开源社区中的一些模式被广泛应用到实体产品的生产过程中。
例如,开源社区中对软件的快速迭代开发(当然,这种软件开发方式不仅局限在开源社区内),可以被其它领域所借鉴。事实上,现在的某些公司已经开始了尝试,一个非常明显的例子就是 SpaceX 通过小规模的版本测试来开发运载火箭和飞船,而且事实证明是这种方式是现实且可行的。
SpaceX StarHopper 飞行测试
再者,建立在高度发达的物质生产力基础上的社会化大生产会向着规模化、个性化以及普遍参与的方向进一步发展。我们可以设想,产品的制造过程可以使用统一的规则来描述,就如同用代码来描述有关硬件的运行方式一样,这种规则直接可以控制自动化的生产机器来进行生产。于是,设计产品即是设计制造过程,产品生产即是相应的规则控制生产机器运行。在这种情况下,我们有可能可以看到社会生产过程的普遍开源:产品的描述代码被发布到互联网上,任何人都可以通过编辑产品生产的描述代码来定制产品,实体产品的开发也可以像现在的软件开发一样通过编辑相应的描述代码来进行。
也就是说,在生产力高度发达的条件下,所有产品的制造流程都能够一系列的代码所描述,在这个社会,生产是普遍开源的。事实上,现在某些硬件也开始向着开源的方向发展,某些开源社区将开源硬件详细的设计发布到互联网上,任何人都可以在一定的规范下修改、发布、制作或者销售。开源硬件的产生得益于有关模块的标准化以及生产力的提高。当然,这些开源硬件与普遍开源的设想仍然是存在着很大差距的。
Arduino 是硬件开源的一个例子结论
开源协作在某种意义上来说是“在旧形式内对旧形式打开的一个缺口”,从中可以窥视出社会主义社会及共产主义社会的一些样貌。当然,管中窥豹,可见一斑,所见终究是不全面甚至是错误的。但是,不可否认的是,开源协作的方式仍然能够给予我们一种星星之火般的希望,对于我们思考未来社会的样貌还是有一定作用的。
参考Antonio Lima, Luca Rossi, and Mirco Musolesi. 2014. Coding Together at Scale: GitHub as a Collaborative Social Network. Proceedings of the 8th International Conference on Weblogs and Social Media, ICWSM 2014.Geoff Mulgan, Tom Steinberg, with Omar Salem. 2005. Wide Open Open source methods and theirfuture potential.David A. Wheeler. 2011. Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!I. - H. Hann, Roberts, J., Slaughter, S., and Fielding, R., Why Do Developers Contribute to Open Source Projects? First Evidence of Economic Incentives, in Proceedings of the 2nd ICSE Workshop on Open Source, 2002.Ghosh, R., Glott, R., Krieger, B., Robles, and Gregorio. 2002. Free/Libre and Open Source Software: Survey and Study. Cooperative identity, values & principles - The International Co-operative Alliance假定大部分的重复、繁重的劳动在这个生产力高度发达的社会都已经能够由机器来完成。当然,并不是说一切的体力劳动都会被开发产品生产描述代码的脑力劳动所取代,一些对人类全面发展来说必要的体力劳动仍然会存在,但是就如同体育锻炼一样,这些体力劳动可能只是作为一种全面发展自身的手段而存在。
发表评论