基于软件开源实践(FLOSS)论共产主义的可实现性
好久没发博客,来个狠的,我不信挨踢界有人比我更蛋疼来研究这个。
在马克思提出共产主义100多百年后,软件开发领域中出现了一种特别的生产方式:开源(FLOSS:Free/Libre and Open Source Software),并爆发出了惊人的生产力。作为结果,以这种生产方式开发出来的软件覆盖了几乎所有软件类别,并获得广泛应用。从本质来看,这种生产方式植根于资本主义生产关系之上,但又与资本主义的生产关系本质不同,同时又恰恰可以满足马克思对共产主义生产方式的定义,因此可以看做是一种实现了的共产主义生产方式。
一、共产主义的必然逻辑和特征
在马克思的论述中,共产主义是当资本主义生产方式发展到极致,乃至成为生产力发展束缚时,社会自身所蕴含的一种必然性。对此马克思说:
1)代替那存在着阶级和阶级对立的资产阶级旧社会的,将是这样一个联合体,在那里,每个人的自由发展,是一切人自由发展的条件。①
2)共产主义是私有财产即人的自我异化的积极的扬弃,因而是通过人并且为了人而对人的本质的真正占有;因此,它是人向自身、向社会的即合乎人性的人的复归,这种复归是完全自觉的和在以往发展的全部财富的范围内生成的。这种共产主义,作为完成了的自然主义=人道主义,而作为完成了的人道主义=自然主义,它是人和自然界之间、人和人之间的矛盾的真正解决,是存在和本质、对象化和自我确证、自由和必然、个体和类之间的斗争的真正解决。②
3)共产主义是作为否定的否定的肯定,因此,它是人的解放和复原的一个现实的、对下一阶段历史发展来说是必然的环节。共产主义是最近将来的必然的形式和有效的原则。③
4)在共产主义社会里,任何人都没有特殊的活动范围,而是都可以在任何部门内发展,社会调节着整个生产,因而使我有可能随自己的兴趣今天干这事,明天干那事,上午打猎,下午捕鱼,傍晚从事畜牧,晚饭后从事批判,这样就不会使我老是一个猎人、渔夫、牧人或批判者。④
5)在共产主义社会高级阶段上,在迫使人们奴隶般地服从分工的情形已经消失,从而脑力劳动和体力劳动的对立也随之消失之后;在劳动已经不仅仅是谋生的手段,而且本身成了生活的第一需要之后;在随着个人的全面发展生产力也增长起来,而集体财富的一切源泉都充分涌流之后,---只有在那个时候,才能完全超出资产阶级法权的狭隘眼界,社会才能在自己的旗帜上写上:各尽所能,按需分配。⑤
6)人的依赖关系(起初完全是自然发生的),是最初的社会形态,在这种形态下,人的生产能力只是在狭窄的范围内和固定的地点上发展着。以物的依赖性为基础的人的独立性,是第二大形态,在这种形态下,才形成普遍的社会物质变换,全面的关系,多方面的需求以及全面的能力体系。建立在个人全面发展和他们共同的社会生产能力成为他们的社会财富这一基础上的自由个性,是第三个阶段。⑥
纵观上述马克思对共产主义社会的描述,可以发现在马克思的定义中,共产主义社会具有如下两个关键特征:
1)按需分配。即人们彻底摆脱对物质的依赖,实现物质上的自由。
2)异化终止。即人们不再是为了不属于自己的人生目标,而是完全自主的为了实现自己而工作。实质上这是一种彻底的精神上的自由。
也就是说共产主义是以人类在物质和精神上的双重自由为最终目的的。如果未来可以选择,那这无疑的是未来众多可能中无限美好的一个。
回顾人类历史,在原始社会里人并不具备很好的改造自然的能力,相对自然基本处在不自由的地位,但人与人之间的关系则相对平等。随着生产力的不断发展和分工的深化,人类逐渐从彻底的自然法则解脱出来,但与此同时身上社会法则的束缚则逐步增加。在这一过程中,人类战胜了自然界,但却没有彻底战胜自己。随着社会发展节奏的变快,社会体制对人的异化则逐步加深,人越来越不属于自己,而更像是某种生产关系或者说经济体制的一种附属物。
社会始终在不停向前发展,人类自身也始终关注未来会变成什么样子。在未来种种可能性中,同各种形式的终结论相比共产主义无疑是更值得追求的目标,但自马克思以来,共产主义生产方式仍然仅只是停留在概念之中,并没有具体的社会实践证据与之相印证。这无疑的不利于对其可实现性进行探讨,而通过类比现实中软件开源社区的生产方式与设想中的共产主义生产方式则恰恰可以为具体社会实践与共产主义目标间建立关联。
--------------------------------------------------------------------------------------------------
①马克思、恩格斯:《共*产*党宣言》,北京:人民出版社,2009年,第50页
②马克思:《1844年经济学哲学手稿》,北京:人民出版社,2008年,第81页
③马克思:《1844年经济学哲学手稿》,北京:人民出版社,2008年,第93页
④马克思、恩格斯:《马克思恩格斯选集》,北京:人民出版社,2008年,第85页
⑤马克思、恩格斯:《哥达纲领批判》,北京:人民出版社,2005年,第14页
⑥马克思、恩格斯:《马克思恩格斯全集》,北京:人民出版社,1979年,第104页
二、开源为共产主义生产方式提供了新的证据
软件开源社区的基本生产方式具有如下一些特征:
1)人们按照自己兴趣和意愿选择加入指定的软件项目。
2)任何人可以无偿获取开源项目的源码以及相应的编程工具,并为开源项目贡献自己的代码。
3)任何人可以无偿使用开源项目的软件。
4)软件开发和发布的主体并非是公司,而是一些基金组织或个人,他们不以盈利为目的。
5)参与人员可能横跨全球,彼此间通过互联网进行协作。
6)大型开源软件靠捐赠等方式来维持基本运作的经费。
7)通过种种许可证来明确开源软件的使用规则,保障自身权益。
如果把参与开源的人员在现实中获取收入的手段抽象为社会可提供的平均物质生活水平,再把开源软件的生产分配孤立出来进行考察,那么在开源软件的生产中可以清晰的看到异化终止:人们并不为利润工作,而是主要为自己工作。也可以清晰的看到按需分配:任何人不需要支付任何费用即可获得本应是商品的所有开源软件。因此可以讲,这是一种符合马克思定义的共产主义生产方式。这里比较容易引起争议的是异化终止一项,当开源发展到一定程度之后,部分公司会指定部分雇员参与开源软件的开发,但这是开源与现实相结合的一种必然结果,并不从本质上影响对异化的终结。同时,调查分析显示参与开源并不对收入有直接帮助①,人们参与开源的主要动机也并非是为了增加收入②。
这种生产方式完全颠覆了资本主义中以私有制为基础,以公司为表现形式,以利润为驱动的生产方式。当下,在软件开发领域中这种具有共产主义特质的生产方式仍在持续发展,并逐渐取得优势,使依赖传统生产方式的公司如微软也不得不拥抱开源。这并不是一种小规模、偶然的事件,开源生产方式已经彻底的影响了整个软件行业的生产分配模式。从日常的智能手机到互联网上的微博、搜索引擎等产品,开源方式所生产的软件在其发生、发展的过程中都扮演着至关重要的角色③。这就使这种社会实践更具有考察和参照的价值。
-------------------------------------------------------------------------------------------
①IlHorn Hann,Jeff Roberts, Sandra Slaughter,Roy Fielding:Why Do Developers Contribute to Open Source Projects? First Evidence of Economic Incentives,2002, http://flosshub.org/system/files/HannRobertsSlaughterFielding.pdf
②Rishab A. Ghosh ,Ruediger Glott ,Bernhard Krieger ,Gregorio Robles:Free/Libre and Open Source Software: Survey and Study ,2002,http://www.flossproject.org/report/FLOSS_Final4.pdf
③David A. Wheeler:Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!,2011,http://www.dwheeler.com/oss_fs_why.html,http://www.dwheeler.com/numbers/
三、开源得以实现的基础
(一)开源发生、发展的简略回顾
开源运动起源于Richard Stallman的GNU(http://www.gnu.org/))。Richard Stallman坚持认为软件应该是自由的而不应该是封闭的,也就是说他坚持认为软件商业化是一条错误的路线,于是他在1983年成立了GNU,在1985年成立了自由软件基金会,主要目标就是通过GNU打造完全自由的软件生态系统,替代已有的商业软件。在GNU开发出大部分软件后,1991年Linus开发出了Linux 内核,最终使GNU成为一套完备的软件生态系统,其中涵盖了从操作系统、编译工具、编辑工具等进行软件再生产的必备工具。接下来则是其他开源组织的建立和发展。其中比较关键的三个是:
1)1998年开源软件促进会OSI成立。
2)1999年Apache软件基金会成立。
3)2004年Eclipse基金会成立。
在这一过程中开源社区开始逐渐壮大,在开发语言与平台、开发工具、框架和类库、服务器软件、桌面软件上都开发出了一批极具影响力的软件产品。下面是一张按照软件类别的开源软件统计列表:
类别 |
代表性产品 |
说明 |
开发语言 |
PHP、Python、Ruby、Perl、Flex |
按照TIOBE的统计PHP和Python长期以来都是排名前十的开发语言 |
平台 |
Linux、Android、 |
Android是智能手机中最主要的平台广泛的为三星等厂商所采用。 |
框架和库 |
Spring、Struts、Hibernate、Webkit、jQuery |
非IE浏览器基本上采用Webkit作为内核。 |
服务器软件 |
Apache HTTP Server、MySQL、Hadoop、Tomcat、JBoss、PostgreSQL |
Hadoop这样的框架在构建百度、淘宝这样的大型网站中扮演非常重要的角色。 |
开发工具 |
Eclipse、NetBeans、Apache Ant、GIT |
Eclipse与NetBeans合起来可以占据Java IDE大部市场份额。① |
桌面应用 |
FireFox、Chrome、OpenOffice、GIMP |
FireFox和Chrome是IE之外最主要的两款浏览器。 |
表一:代表性开源产品列表
---------------------------------------------------------------------------------------------
①ECLIPSE FOUNDATION:THE OPEN SOURCE DEVELOPER REPORT,2010,http://www.eclipse.org/org/community_survey/Eclipse_Survey_2010_Report.pdf
从上述列表可以看出,开源软件已经在非常广大的范围内取得了巨大的成绩。因此可以讲开源方式用事实颠覆了经济学中对产权与激励的的基本假设。在经济学中往往这样解释集体所有的问题:
集体所有制和平等共享消费的问题从古至今一直存在。殖民时代的美国和共产主义的俄罗斯均尝试建立这种生产和分配的组织形式,但这些努力最终都失败了。有些人将这个问题称为“公地悲剧”(共同财产),它导致公有资源的过度使用和迅速竭尽。
我们鼓励你在这一点上简要回顾第1章经济透视1.1中的5个经济推理命题。这些经济推理命题有利于解释集体所有制和产出的共享(平分或固定份额)如何导致“免费搭车者”问题。为了说明这一点,考虑共享土地所有权,且共同生产了100蒲式耳玉米的10个工人,平均每人消费10蒲式耳玉米。假设一个工人开始偷懒并将其劳动努力减半,从而导致产出减少5蒲式耳。由于产出共享制度的安排,偷懒者的消费量和其它工人一样,现在都是9.5蒲式耳。尽管他的努力已经下降了50%,但他的消费量只下降了5%。偷懒者是在搭他人劳动的便车。①
这种被称为“公地悲剧”的现象在过去的许多社会实践中确实存在,但从事实来看在开源软件开发中它确实的被颠覆了。“公地悲剧”一直以来都被看做是实现共产主义生产方式的一个关键约束,既然它可以被打破,那其背后的原因也就更值得进行考察。为回答为什么开源得以实现并且可以颠覆现代经济学中的“公地悲剧”,需要回答的问题主要有三个:
1)为什么开源这项活动会发生?
2)为什么开源这项活动会繁盛?
3)为什么开源首先出现软件行业中,而非其他行业?
下面将从这三个方面论述开源得以发生、发展的基础。
(二)为什么开源会发生?
从开源发展历史来看,有清晰的证据表明开源的产生是个人按照自身价值取向进行自由选择的结果,极具理想主义色彩。“Richard Stallman的自由软件,首先是反对软件的封闭性,反对用专有软件和商业条款束缚人类的智慧和创造性,反对从法律和著作权的角度来人为的阻碍软件和技术的传播、使用和学习。”正是基于这种信念Richard Stallman才创建了GNU,开源社区才得以起航。
后续的很多开源项目则基本遵循了类似的模式:一个人或者因为自娱自乐、或者因为方便自己的生活工作创建某一个项目,而后感兴趣的人逐步加入,进而使开源项目逐渐成长壮大。Linux 内核,Python语言等都是这样一种模式产出的产品。
这也就意味着为使开源发生,在价值取向上必须有人更愿意选择创造与贡献而不是无限占有。开源并非是最大化个人利益的有效手段,当一个人无限扩张自己的欲望,并总是希望占有更多时,并不适合参加这项工作。喜欢追求理想,喜欢学习创造新的东西,渴望改变和引导技术发展的进程等具有理想主义色彩的要素是开源的原动力,而无限制的追求财富则更容易让技术人员把精力花在开发并销售自己的软件或者谋取更好的职位这类事情上。作为结论可以讲,自由选择的权利加上追求理想的力量(自由创造,自由分享等)是开源得以发生的第一条件。
--------------------------------------------------------------------------------------------
①加里•M•沃尔顿、休•罗考夫:《美国经济史》,王钰、钟红英、何富彩、李昊、周嘉舟译,北京:中国人民大学出版社,2011年,第37-38页。
②蔡俊杰主编:《开源软件之道》,北京:电子工业出版社,2010年,第12页。
但如果把开源放回到具体的时间和空间背景下,那么在自由选择和追求理想之外,我们就需要进一步考虑为什么是这个时间点,为什么是在美国和欧洲首先触发了开源这项活动?为回答这两个问题则需要同时考察开源所需要的技术条件以及人们进行自由选择的前提。
1)开源得以存在的技术条件
开源天生具有全球视野,需要把分散在全球的程序员组织起来生产必须的软件。而为达成这一目的就必须存在一种支持异地分工合作的基础设施。互联网的出现为这种生产方式提供了可能性。基于互联网,程序员可以方便的共享代码,针对问题进行非实时性讨论,系统的跟踪各种问题等。可以讲互联网是开源可以存在的前提,只有在互联网出现并得到充分利用之后,开源才可能得以存在。这一条件决定了只有在互联网出现之后,开源才可能真的发生,否则即使有足够的主观意愿,也不足以促成开源。
2)进行自由选择的前提
分析人们进行自由选择的前提时需要回到动机理论。如果可以认可动机理论中的需要层次理论①,那么无疑的满足基本物质需要(食物、水、教育、医疗、卫生、安全等)将成为自我实现需要的前提,而自由选择恰是自我实现的一种手段。虽然,经典动机理论受到很多质疑,但这与人们的日常观察相符,也符合传统智慧“仓廪实知礼节”(《管子•牧民》)。这反过来意味着,开源需要较为富裕的社会环境。在这种较为富裕的环境中人们才会有能力选择自己想做的事情,而不是违背自己的意愿为基本物质需要进行各种折中。
开源者参与者的分布正好可以反过来支撑这一观点,下图是开源项目Hadoop代码贡献者的分布图(http://people.apache.org/map.html),在这张图中可以比较清晰的看到社会福利较高地区开源参与者密度较高。需要指出的是,这并非只局限于某个项目,而是大部分开源项目具有相同的开发者分布趋势。
图一:Hadoop开发者分布图
-----------------------------------------------------------------------------------------------
①斯蒂芬•P•罗宾斯、蒂莫西•A•贾奇:《组织行为学》,李原、孙健敏译,北京:中国人民大学出版社,2011年,第158-160页。
这种分布图能够很好的佐证在基本物质需要很容易得以满足的环境里,人们更有选择的自由,这种自由最终导致开源更容易发生这一观点。
(三)为什么开源会繁盛?
从前文的论述中,可以知道开源的繁盛已经成为一个显然的事实,并不需要进一步的说明。更为关键的问题是开源如何从纯粹的个人行为走向繁盛,并变成一种影响世界科技发展的活动的?从逻辑上讲,开源软件得以繁盛必然同时需要两重支撑:对内是开源这种组织方式要能够源源不断的制造出满足各种需求的软件;对外则是导入开源软件对现实中的企业和个人要有足够大的收益。对于前者需要考察开源的生产方式,对于后者则需要考察产生收益的根源。
1) 开源生产方式的分析
开源组织生产的方式几乎完全与商业软件生产方式不同,虽然不同开源社区都有自己的特点,但基本遵循下述模式:
1.依托于互联网在全球范围内管理开源项目的资源。比如:通过主页(HomePage)来描述项目的最新进展、项目文档、可用版本的链接等,主页通常扮演一种向导的作用;通过代码库(Code Repository)来统一管理项目的代码;通过邮件列表(Mailing List)来进行问题的讨论;通过缺陷追踪系统(Bug Tracking System)来跟踪软件中出现的各种缺陷;通过Wiki来编写项目的主要文档。
2.导入利于松散组织结构的工程实践。比如:通过测试驱动(Test-Driven)的方法来保证代码的正确性;通过结对编程(Pair-programming)和代码评审(Peer Review)来保证代码的质量。
3.通过开放性的人员结构来促进人员对项目的参与。比如:在Apache的运作模式中共有这样几种角色:开发者(Developer),技术专家(Committer),项目管理委员会成员(Project Management Committees),Apache软件基金会理事会(Board of Directors)。当一个开发者付出足够努力,获得足够影响力后,项目管理委员会会授予这个人Committer称号,只有Committer才拥有对代码库的写权限。如果Committer的贡献足够大,就有可能被选举进入项目管理委员会,而项目管理委员会的主席则都是Apache软件基金会的VP。
就是依赖于上述这样一些方法,开源方式本身爆发出了惊人的生产力,这似乎很不可思议,无人管理,纯靠自愿的松散联合至少获得了与传统生产方式相类似的生产力,在某些领域中还能够超越传统的按公司组织生产的方式。这究竟是为什么?如果对一个组织的生产力进行如下分解,那么事情就容易看的更加清楚。
假设一个人的工程素养为E,一个人的工作意愿为W,组织所能提供的力量为O,内耗系数为M,那么对于一个拥有n个人的组织,其在单位时间内最终可能贡献值可以表示为:
[(E1*W1 + O) + (E2*W2 + O) + ... ... + (EnWn +O)] * M
其中M的取值可以为0到1。0表示完全内耗掉,整个组织完全没有贡献。也即是说:
单位时间组织总贡献=[(A的工程素养*A的工作意愿+组织力量) + (B的工程素养*B的工作意愿+组织力量)+...]*内耗系数
其中:
1.工程素养是指人员的工程能力,比如:需求分析能力,架构设计能力,编码能力等。
2.工作意愿是指一个人愿意不愿意工作。工程素养和工作意愿乘起来才是一个人的可能贡献。这并不难理解,一个能力不好的人,再怎么努力,贡献也不会好;而一个能力好的人,每天神不守舍,其贡献也不会好。
3.组织提供的力量是指常说的组织力。比如说:组织内有比较好的重用代码库,那么不管谁都可以从中受益,这将普遍增加这个组织中每个成员的力量。
4.内耗系数是指人员彼此间贡献耗散的程度。影响因素会比较复杂。比如说:A和B做在一起工作就会吵架,这也会产生内耗。
那么显然的开源方式所有影响要素上具有明显优势:
这里的第一关键是异化的终结。当一个人所做的正是他自身所追求的,那么这个人往往可以全身心投入工作。这比受外力如公司规则、奖金激励等推动,而不得不做不符合自己主观意愿的工作让人更有工作热情。在传统方式下,把不同人员组织在一起的原动力往往是公司的利润追求,开发者的意愿并非第一考量,在这种情形下,人们等价于被强制的把生命投在违背自己主观意愿的事物上,这会导致工作满意度的降低①。作为结果,工作意愿一项开源方式有压倒性优势。
其次是每个人在最终软件产品上利益趋同。在开源方式里,把开发人员结合在一起的关键动力就是做出更好的产品。开源参加者之间虽然会有想法差异,但并没有利害纠葛。这样就可以用极为理智的方式作出各种判断,他们判断的根基往往只是是否对产品有利,并不需要考虑市场、工期这些因素。同时,在开源组织模式下,权利来源于具体贡献,这就使公司政治这类负面因素可以得到有效的控制。最终结果是,内耗系数一项开源方式具有明显优势。
再次是开源软件的开发中,任何人任何时间,任何地点只要可以接入互联网即可获得开源的代码、文档并在之上做出贡献。也即是说全社会的力量可以贡献于同一份代码基和文档系统。这一点配合上相应的工程实践就导致只要组织得体,那开源项目的组织力量只可能越来越强大。而在公司中,受制于安全管理不只是在不同公司之间,即使在一个公司内部,一个产品的代码往往也被分割为几块,分别由不同的人群访问和维护。同时由于代码牵涉到商业利益,即使发现错误,开发者也不一定有权力去做对应的修改,这些都使代码的质量很容易不断下滑。在代码质量之外,借助互联网,在全社会范围内开源软件可以很容易的形成自己的清晰目录。任何人都可以很容易的检索这种公开信息,这使重用变得非常容易。在这里公开自身即是一种规划,这导致在全社会范围内不存在重复制造轮子的现象,并可以在大时间尺度上累积资源的使用。这就使开源方式在组织力量一项具有优势。
-----------------------------------------------------------------------------------------
①斯蒂芬•P•罗宾斯、蒂莫西•A•贾奇:《组织行为学》,李原、孙健敏译,第75页
最后,在开源生产方式中其工程实践是以人为核心的工程实践,结对编程和代码评审这些活动非常有利于人自身技能的提高。再加上工作自身是出于自己的主观意愿,代码、文档随时可以获取,这就使开源方式在工程素养一项上具有优势。
总结来看,正是由于上述几方面上的优势,开源以一种非严格管理的,自愿和松散联合的组织形式却爆发出了极高的生产效能,开发出了很多质量上乘的软件。一旦这些软件得到广泛应用,那么开源自身就会创造职位和收入,这些职位和收入则反过来进一步增加开源所需要的人力资源,使得开源可以得以持续发展和扩张。对于这一点的一个直接证据是Linux内核代码的更新中75%的代码来自于商业公司①。
1) 开源促进公司产生收益的根源
能够开发出满足各种需求的软件是开源得以存在的基础,否则如果软件质量(可靠性、性能等)很差,那即使免费,也并不会有人进行大幅应用。但只有满足需要的软件显然是不够的,开源软件为获得广泛应用,还必须为具体的各种组织带来收益。从开源的根本特征我们知道,开源软件在下述方面具有明显的优势:
1.无偿使用
2.可定制化
3.公开透明
前两个特征与开源软件自身的质量相配合达到了这样一个效果:当一个公司需要拥有某一软件的主要权益(使用,修改,定制),却又无法单独为其完全支付成本时,开源就是一种唯一的选择。这就和道路对于各种企业的意义一样,任何一个企业都需要道路交通的支持,但很难让某家企业单独负担道路的修建和维护成本。
公开透明这一特征则使开源软件适合某些对安全性要求较高的应用场景,比如政府和军队。上述两点使开源的导入和使用具有一定的必然性,除此之外则是TCO(Total Cost of Ownership)的降低这类相对依赖于具体场景的影响要素。计算TCO时,开源软件在许可费用上具有绝对优势,但可能在人员使用成本上处在劣势,实际结果则取决于具体场景和计算方法。
----------------------------------------------------------------------------------------
①Jonathan Corbet,Greg Kroah Hartman,Amanda McPherson:Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It,2012,http://go.linuxfoundation.org/who-writes-linux-2012
(四)为什么开源会发生在软件行业?
很多行业在漫长的历史中一直存在,但始终未能发展出与开源类似的生产方式,而软件几乎是一出现,开源方式就随之而产生,这背后的原因又是什么?当考虑开源为什么会首先在软件行业发生时,就必须要回归到软件与传统行业产品的三个根本差异:
1)软件只有开发成本,而制造成本几乎为零。也就是说一旦软件开发完毕,一个人用和无数个人用对软件制造而言并无区别。
2)软件是一组信息。这使软件的传播可以完全依赖于互联网,而同物流等隔离开来。
3) 软件可以迭代的进行开发。这使只要具备相关知识的人,任何时间和地点都可以开始一个软件项目。①
上述三点对开源非常重要,第一点使软件天然可以按需分配,也就是说一个人随时可以按自己的需要拥有所有的软件而不会存在供应紧张,分配不公问题。这点对开源生产非常关键,否则大家合力做出的东西到底归谁所有,就是很难解决的问题。第二点则使参加开源不需要额外成本,可以以个人为单位很独立的进行。第三点则使软件对资本不敏感,使能否启动这项工作的关键约束是一个人是否具备相应的技能,而非是其他的生产资料或资本。软件的这种天然特质成为开源发生、发展的天然助推器。在其他行业里,即使也有人因为兴趣和对自由精神的追求而开始开源,但由于很难解决最终成果如何分配、大额启动资本从那里来等一系列的问题而很难顺利发展。
-----------------------------------------------------------------------------------------
①Geoff Mulgan,Tom Steinberg,with Omar Salem:Wide Open Open source methods and their future potential,2005,http://www.demos.co.uk/publications/wideopen ,第21页
四、共产主义生产方式普遍实现的可能性
既然开源可以促进生产力的发展,那么是否有可能把这种生产方式短期内扩展到所有其它行业?从前面分析可知,开源生产方式得以实现的根基有五个:
1)社会普遍富庶,可以提供良好的物质基础。
2)参与人员价值取向的升华。
3)需要存在让人们松散配合、协作生产的技术手段,对于开源而言这是互联网。
4)软件只有开发成本,而没有制造成本,也不需要大额资本进行驱动。
5)大幅促进社会整体的生产力。使开源产品成为逐利之后的一种必然选择和结果。
第1点构成了一种物质基础。为人们转而追求物质以上的东西提供了普遍的可能性。第2点则是人员基础。既能保证人力资源,又能保证不感兴趣的人可以不参加。这是避免大量管理成本的必要前提。现代激励理论认为:当超过一定临界值,现行的物质激励的作用将变小,而按兴趣工作本身则恰恰是一种终极激励方案。第3点则是灵活组织生产的技术保障。第4点则是按需分配的基础。如果软件需要较大的制造成本,那就必然牵涉所有权,谁付出,谁受益等问题。进而就必须以公司、产权这些手段来进行利益归属的划分。这一点同时也会影响第2点,因为重体力劳动不可能靠兴趣来驱动。第5点却内置于这种生产方式之中,当前四点满足时第5点则具有必然性。也就是说,当每个公司单独开发,成本过高时,使用开源方式则可以通过避免重复建设,确保与主观意愿的吻合来激发人们自身的热情促进生产力的发展,作为结果这将进一步使人们参加开源的物质基础更加扎实。
从促成开源的发生、发展来看,前四点并没有那一点可以被忽略。其中的第4点则使这种生产方式很难扩展到所有其他行业,第1点第2点则对社会基本保障体系以及意识形态提出了要求。第3点则已经成为现实,不成为约束。也即是说短期来看开源这种共产主义式生产方式只能在扩张到有限范围。但上述分解却又恰恰可以提示出为实现开源式的生产方式社会所应秉持的基本发展方向。
为了使上述生产方式普遍实现于其他行业,尚未满足的三大前提就可以重新表述为:
1)达到甚至超过现今开源从业者的物质生活水平,作为结果人们可以更多的去追求精神上的自由。
2)达到甚至超过现今开源从业者的精神文明状态,作为结果人们倾向于按兴趣工作而不是闲着。
3)使其他产品的生产方式与软件的生产方式相同。具体来讲,这需要达成如下三方面的目标:使所有物质生产方式、一切体力劳动为机器人所取代,即消灭体力劳动;使生产资料(如:能源等)彻底公有具备独立进行生产的物质自由;使任何人彻底可得到所有的一切(按需分配)。这样一来只要任何人完成产品的设计或获得到产品的设计,他即可以得到产品本身,也就是说其他产品的生产将只剩下设计工作,而设计工作实际上无限等价于软件的生产。
前两点能否达成更多的依赖于人类的主观选择。第3点则提出了一个刚性的约束,即使科技可以消灭体力劳动,那关键限制仍然存在:当前始终无法预测,科技所促成的增长是否能够满足人口增长所带来的压力,如果答案是肯定的,生产力逐步得到释放的同时,物质生活水平就会进一步提高,反过来逐步促进这种新的生产方式的实现。如果答案是否定的,那么资源短缺将抽去这一模式最重要的根基,使人类重陷纷争。同时即使科技发展的速度可以超过人口增长的速度,那对于空间等刚性资源如何做到按需分配也仍然有比较难以解决的问题。
假设说科技发展速度确实可以大于人口增长速度,问题就变的非常有趣。这种情形下开源式生产方式究竟是否可以在较大范围内实现从长线来看并不主要受限于科技和物质,而是受限于人类自身的欲望是否有一个边界,是否可以不进行无限制的索取。只要人类把自己生命中的力量主要投放在实现自身而进行创造上,并在相对富裕的基础上控制物质索取的尺度,使其整体上还在特定生产力可以提供的范围内,那开源式生产方式就是可以实现的,作为结果每个人可以得到更多,否则就会所有人都成为输家。这显然依赖于人类精神世界上的进化。
五、为社会发展的所带来的启示
如果确实认为人类在物质和精神上可以获得双重自由的社会无限美好,是值得向往的社会,并且也相信未来的景象依赖于人类自身的选择,那么人类就始终应该朝着这个方向努力。这是在可见范围内需要达成的最终目标,而所有其他社会要素如科技发展、意识形态、法律等都是为达成这一目标的手段。为促成这一目标的实现,那么就需要积极为其准备条件。
而根据前文分析,为达成这一终极目标,社会发展显然需要经历如下几个阶段:
1)使开源的生产方式不只局限于软件开发,而可以逐步进行扩散。
如前文所分析,即使只在部分行业实现开源的生产方式,那么也需要达成下面这几个条件:
1.达到甚至超过现今开源从业者的物质生活水平,作为结果人们可以更多的去追求精神上的自由。
2.达到甚至超过现今开源从业者的精神文明状态,作为结果人们倾向于按兴趣工作而不是闲着。
3.使所有物质生产方式、一切繁重体力劳动为机器人所取代,即消灭体力劳动,同时使知识以外的生产资料所导致的成本在个人可以负担的范围之内。也就是说尽可能使其他生产方式与软件的生产方式类似。
上述三者缺一不可,当三者在任何一个行业中同时具备的时候,这一行业就初步具备转换为共产主义生产方式的条件。这与现实相符,另一个使用开源方式进行生产并且获得巨大成功的例子是百科全书的编写,维基百科(http://www.wikipedia.org/)的访问量长期处于世界前十的位置。
前两点依赖于社会本身,第3点则从技术角度限定了这种生产方式所可能适用的行业。假设说材料科技、虚拟现实的设计方式、3D打印可以高度发展,使相机的制造工艺缩减为只要向3D打印机提供原材料即可。那么相机的制造工艺就可以完全的体现为一组程序,这时候相机的生产与软件的生产相比唯一的不同就是如何获取制造相机的材料。而一旦这种制造材料的获取在特定物质基础下只占生活开支很小的一部分时,那么从技术角度讲相机的生产就具备了转为开源生产方式的条件。
从大范围来看,更加困难的始终是第1点和第2点,这需要更多的考量和分析。
假设说现有体制可以促使生产力持续发展,那么为了使人们的物质生活水平普遍提高,无疑只有两个关键限制:一是平衡人口和物质生产能力间的比例关系;一是避免极端的贫富两极分化。具体来讲是需要在数目字上确保社会内平均收入水平和最高收入水平的合适尺度。确保在衣、食、住、行、医疗、教育等牵涉到基本生理和安全需要的地方,使所有人具有享受基本物质自由的权利。即使相应措施可能造就一定的懒惰,也可以视作人类文明发展的遗泽而无可厚非,这种负效应并不足以成为阻遏这一方向的理由。
在按需分配无法实现之前,如果假设始终有人有最大化自己利益的冲动,那就必然需要一种力量与之向制衡,否则基本的物质自由将无法普遍实现。在避免两极分化的过程中适当的阶级斗争无疑是必要的,否则将无法打破既定格局促进变化的发生,并使弱者获得更多的权益,但斗争本身确实需要一种更为缓和的手段,并且纳入特定的秩序之内。当缺乏这种可控的斗争机制时,人类自身欲望的无边界特质将会无限膨胀。如果再假设具有资本的始终有更大的几率获得财富,那么严重的两极分化就是一种必然趋势。而一旦这种两极分化所导致的矛盾无法在特定的法律框架下,通过谈判、罢工来解决,而必须用革命来解决时,社会自身将蒙受损失,人类则必须承担自身所造成的一切苦难。无疑的保持贫富差距对社会前进而言是必要的,但更关键的是社会可享受物质水平的基线,这点应该有一种相对明确的定义,衣、食、住、行、医疗、教育等牵涉到基本生理、安全和安全需要的地方定义相对明确的目标。在当无法达成这一基线时,无疑的应该通过缓和的手段缩减贫富差距。
对全社会而言,可以把可能的生产总量做个抽象。如果总人口是M,其中愿意按主观意愿进行工作的人口数目是N,那么当N按照主观意愿以及新组织形式所爆发出的生产力大于当前所有工作人口的生产总量时,这种组织模式是有优势的。假设进化论是对,人也会向着光明的,实现自我的方向(而非自私懒惰,无限索取的方向)进化,那么N将无限趋近于M,根据前面的分析,这将最终导致整体社会生产力总和的提升。这反过来将进一步促进物质自由的实现。
这里面最大的问题始终是N的数目不能跌破一定的数值,这意味着人类自身的精神状态与对应的生产方式之间应该存在的一种对应关系,毕竟如果人类自身的选择和努力(通过政治活动等)使N跌破一定数值,那对社会整体而言灾难就会发生。反过来讲,这意味着在实现物质自由之外,社会之内的人们始终应该通过各种手段来影响他人,增加个人进化的拉力。
2)彻底实现共产主义生产方式
这时候需要人类的精神可以纳入特定框架之内,彻底实现按需分配,实现彻底的物质自由与精神自由。在这里,人类的差异不体现为占有的多少,而体现为贡献及创造的多少,以及与之相伴的社会认可程度与不同社会权限。
当物质文明发展提升人类平均可享受物质基线→人们按兴趣工作,提高生产效能 →物质文明进一步发展这一迭代持续发生的时候,开源式生产方式将可能逐渐扩散到更多的领域。这种循环进行的越彻底,人与人之间,国家与国家之间的差异就变的越小。所有制、国家这种概念之所以存在,恰是因为差异的存在。差异越小,其存在的意义越小。而最终这层薄膜什么时候会被冲破则同时取决于物质发展的水平和精神进化的程度。
恰如前文所提及,当科技发展使物质自由累积到一定水平后,最难的仍是精神领域的问题。
也就是说精神须有所归属,而不能只是无限制的扩张自己的占有欲望。如果人们始终期望无限量的消耗,那么即使科技的发展使非常富裕成为可能,也无法解决分配过程中所可能产生的冲突,作为结果无疑的开源生产方式并不能够实现。何况也很难想象在空间、自然资源等上每个人都可以无限量消耗而不导致问题。通常来讲这类精神领域的问题并不能用单纯用物质手段来解决。在这里,人类文明的所有沉淀如:儒家精神、种种宗教正是为此准备了素材。当然不管如何发展,始终还会有纷争存在,这是法律所应该负责的领域。从这个角度看很多意识形态上的争论是不必要的,只要它们都有助于促成目标的达成,那么它们就都是社会发展有益的素材。
人类天生是不自由的,所有这一切的终结则是共产主义社会。只有在共产主义社会中才有真的自由,以及基于此的公平和正义。人们始终有理由期望这样一个社会:在享受物质自由之后,人们可以按照自己的意愿追求爱情、潜心研究、探索未知的世界、探索宇宙空间、与自己的家人相伴终生。但随着人类能力的放大,未来始终有着其他的可能性,比如:毁灭与终结,至于最终是集体进化还是集体毁灭,如果未来不是被决定的,那么这将依赖于人类自身的判断和选择。
基于软件开源实践(FLOSS)论共产主义的可实现性的更多相关文章
- 基于SCRUM方法实践的西油计科党建设计与实现
基于SCRUM方法实践的西油计科党建设计与实现 序言 所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesig ...
- 基于Jforum开源项目的论坛网站
基于Jforum开源项目的论坛网站 开发原因: 刚完成了以wordpress及其插件simple-press为基础的论坛网站,因为一直从事java方面开发, 所以尝试一下使用java开源项目Jforu ...
- 我的首个MOOC课程《面向对象软件开发实践》
我的首个MOOC课程<面向对象软件开发实践> 我将在网易云课堂开讲MOOC课<面向对象软件开发实践>(http://mooc.study.163.com/course/YOOK ...
- Android6.0运行时权限(基于RxPermission开源库)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...
- NFC手机上基于软件的卡模拟 重大利好还是安全噩梦?(转)
Software Card Emulation in NFC-enabled Mobile Phones: GreatAdvantage or Security Nightmare? Michael ...
- minizip -基于zlib开源代码库
转载:https://www.topomel.com/archives/979.html 一.minizip 是一套用来压缩和解压文件的工具,其基于zlib开源代码库. 开源代码下载链接:http:/ ...
- 基于SCRUM方法实践的西油计科党建设计与实现-个人实践流程清单
基于SCRUM方法实践的西油计科党建设计与实现 个人实践流程清单 一.Alpha版本冲刺个人在SCRUM团队任务清单: 时间 我这个三天做了什么 实际解决燃尽图项目数量 我遇到了什么问题 我下一个三天 ...
- 基于第三方开源库的OPC服务器开发指南(3)——OPC客户端
本篇将讲解如何编写一个OPC客户端程序测试我们在前文<基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署>一篇建立的服务器.本指南的目的是熟悉OPC服务器的开发流 ...
- 基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署
前文已经说过,OPC基于微软的DCOM技术,所以开发OPC服务器我们要做的事情就是开发一个基于DCOM的EXE文件.一个代理/存根文件,然后就是写一个OPC客户端测试一下我们的服务器了.对于第一项工作 ...
随机推荐
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- 分享10条Visual Studio 2012的开发使用技巧
使用Visual Studio 2012有一段时间了,并不是追赶潮流,而是被逼迫无可奈何.客户要求的ASP.NET MVC 4的项目,要用.NET 4.5来运行.经过一段时间的摸索,得到一点经验和体会 ...
- Oracle 11g系列:视图
视图是数据库中特有的对象,视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.Oracle中有4种视图:关系视图.内嵌视图.对象视图和物化视图. 1.关系视图 1>.创 ...
- 深入理解javascript作用域系列第二篇——词法作用域和动态作用域
× 目录 [1]词法 [2]动态 前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极 ...
- java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)
import java.util.concurrent.locks.*; class DuckMsg{ int size;//烤鸭的大小 String id;//烤鸭的厂家和标号 DuckMsg(){ ...
- TFS简介
Team Foundation Server(TFS)是一种为 Microsoft 产品提供 源代码管理.数据收集.报告和项目跟踪,而为协作软件开发的项目.可作为独立的软件,或 Visual Stud ...
- Quartz应用实践入门案例二(基于java工程)
在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...
- Windows Azure Virtual Machine (27) 使用psping工具,测试Azure VM网络连通性
<Windows Azure Platform 系列文章目录> 微软Azure在设计架构的时候,从安全角度考虑,是禁用ICMP协议的.所以对于Azure VM,是无法使用ping命令的. ...
- Windows Azure Virtual Network (5) 设置Azure Virtual Machine固定Private IP
<Windows Azure Platform 系列文章目录> 注意:本文介绍的是Global Azure (http://www.windowsazure.com),如果你使用的是由世纪 ...
- git clone 失败问题解决方案
第一次从github上通过终端pull项目,出现了上述问题.询问了后台,才知道原来是电脑公钥(publickey)未添加至github,所以无法识别. 因而需要获取本地电脑公钥,然后登录github账 ...