广告 ☭ 马列毛主义与革命左翼大群 ☭ 上电报大群找真同志与真战友
https://t.me/longlivemarxleninmaoist
加井冈山机器人 Chingkang(@maoistQAIIbot) 为电报(纸飞机)好友,可获得大群发言权
编者按:
1.今天生产力的发展不是加强分工,恰恰是在为消灭分工提供条件。开源软件的生产方式,在社会主义和共产主义社会中,一定会被越来越广泛地应用到社会生产的方方面面。
2.开源软件的潜力还完全不局限于此,文中谈及分散的各种好处,然而没有说明根据分散所集中起来的力量也是十分庞大的。一项协议的诞生不是一种不得不协商的结果,而应该是主动去追求的一种集中。只会分散而不会集中,各自为政的生产只能分崩离析不成体系,只会集中而不会分散,最终运行起来只会局限于少数个体智慧,开源软件想要更进一步,必须把分散和集中的辩证法活用起来,激发出来的生产力将震惊世界。
开源模式的社会主义性质
在上一节中,我们从理论角度论证了消灭分工的可行性,在本节,我将以开源软件为材料提供现实论证。这些材料大部分来源于开源软件的代表人物埃里克,具备足够的可信度。
闭源软件和开源软件的开发模式,如果用埃里克的比喻的话,前者就像大教堂的修建一样,庄严肃穆、有条不紊、计划分明;而后者则像市场集市一般开放喧闹、人声嘈杂、人来人往。确实是很形象的比喻,传统的软件开发的雇佣劳动支配着劳动者的人身自由,一条条的指令自上而下,借由工头的鞭子“自由”地挥动计划的指挥棒;而在开源开发中,程序员们自由地带着自己的脑力产品出入社区,自由地参加项目开发,自由地发表意见,开发管理人员不断地加入退出,但社区仍然像集市那样“混乱”地繁荣了起来。
在今天,开源模式并没有像商业公司当初期待的那样四分五裂,反而取得了相当的成功。事实上,一个违反直觉的事实是:开源模式不仅具备更强的适应科技和经济变化的能力,还具有更好的项目管理能力。是的,超期、超预算、或无法完成需求计划书在闭源开发中才是常态!
那么,是什么使得开源模式能在与商业公司的竞争中存活下来?答案是它所具备的相对先进的生产关系。接下来,我将从消解分工的开发模式、兴趣导向而非利润导向、生产资料公有制、开源模式的其他特点四个方面进行分析。(只是表现出了这些生产关系的一些相对特点,而非具备了这样的生产关系,这在资本主义下是不可能的)
一、消解分工的开发模式
“把你的用户当成开发合作者对待,如果想让代码质量快速提升并有效排错,这是最省心的途径。”
把用户当成合作者,这是开源社区的语言,不是马克思主义的语言。很简单,消解分工、共同开发、集体监督,这就是开源模式优越性的关键。
首先,通过集体开发,参与者越多,开源模式反而越能有效对抗系统的复杂性。
在软件开发中,存在着Brooks定律:项目复杂度和沟通成本与开发人员数目的平方成正比,而生产力则只会随着人数线性增长。这个定律似乎指出了社会化大生产的边界。然而,现在看来,它需要被加一个前缀:在严格分工下。开源模式通过消解分工、并行开发代替计划开发、集体监督代替自上而下的方式,克服了管理成本的平方特性,进一步扩大了社会化大生产的规模。在资本主义社会中,政府和企业臃肿的行政机构仍然在散发着恶臭,总有一天,它们会被民众自发的协调管理所取代,将大生产从规模的锁链中解脱出来。
其次,“只要眼睛多,bug容易捉”。
在一个复杂的开发项目中,bug往往更表现为随机性的特点:越是隐蔽和复杂的bug越难依赖个体的技巧来解决,但却容易被的大量“平庸”人员发现。如果这个定律是错的,那今天屎山的就不是windows而是gnu/linux了。一方面,增加调试人员不像增加开发人员一样非线性地增加管理复杂性和管理成本;其次,大量的调试样本可以极大丰富调试环境的丰富性,从而增强整个系统的健全性。反映到现实中,使工人群众参加监督管理不仅不会非线性地增加行政成本,同时还能增强社会制度的健全性,增加制度克服自身局限性(bug)的能力。
除此之外,“仅次于拥有好主意的是,识别来自用户的好主意,有时后者会更好”。
集体智慧大于个人的天才。科学研究或艺术创作、工程创新等探索行为本质上都是分散行动,并通过一种可扩展的通信机制来协调整体行为。并行的探索永远比单线程效率更高。在主要的成功的开源模式中,发起者往往不是有浪漫原创精神的天才式人物,但都是高超的沟通协调者。在社会主义中,我们绝不期待什么“受到良好教育”的老爷精英来推动社会的发展,我们相信,充分发动群众的生产积极性远大于个人的灵光一闪。
二、兴趣导向而非利润导向
“Linux黑客们致力于最大化的效用函数,其实并不是经典意义上的经济价值,而是自我满足和黑客声望这些无形的东西。”
埃里克说的很清楚,为什么开源社区能够繁荣起来,靠的就是软件开发者的个人兴趣。他认为,程序员作为已经不大需要考虑谋生的社会精英,社区荣誉和个人爱好是促使他们做出贡献的主要因素。而要想开发好的作品,程序员就必须去依靠自己的兴趣而非工作强制。“ 好的软件作品,往往源自于开发者的个人需要。”乐趣预示着效率,也正是出于个人兴趣,开源模式才取得了成功。
这预示着,要想实现更高级的社会形态,就必须打破拜物教的藩篱。在新中国那三十年,党和人民曾经向物质激励发起过伟大的进攻。唯有用精神激励取代物质激励,资产阶级法权才可能步入消亡,生产力才能获得尽可能的解放。
三、生产资料公有制
“优秀的程序员知道写什么,卓越的程序员知道改写和重用什么。”
虽然自由市场信徒埃里克并不想承认这一点,但互联网天生亲近公有制。这不仅是因为信息传播的廉价,更是因为信息复用的便捷。正如他所坦白的那样,再天才的程序员也离不开对他人智慧的参考,再牛逼的开源项目也离不开对他人代码的复用。程序员不重复造轮子,但资本家会。在这里,代码就像生产资料一般,被开源社区所公有,假如这些公有的生产资料被私有化,再天才的程序员还有什么戏可以唱呢?
四、开源模式的其他特点
埃里克介绍了一些开源模式的其他特征,我认为它们或者与社会主义改造的历史有关、或者对未来有借鉴作用,因此在这里简单讨论一下。
1.“利用“早发布,常发布”的策略减少重复劳动。”在开源社区,并行开发的一个可能弊端是重复劳动,即因没有协调好导致程序员对同一问题的重复开发。这就要求项目管理者要尽可能频繁的发布项目进展,并推动社区的充分沟通。在消灭分工后,人们的自发劳动要形成社会化大生产就离不开自发推举的领袖。领袖和官僚不是一回事,它是协作所产生的必然结果,受群众监督并可以随时撤换。同时,消灭分工后的社会一定是个集体的充分交流的社会,而非现在闭塞的原子化的社会。
2.“对于不开放源码的软件开发,开发者与测试者往往局限于自己的角色,各说各话,都对对方倍感沮丧。”闭源开发的这种困境,正是开发者不参与测试,测试者不参与开发的直接结果。在软件开发中,制造“开测差别”的元凶是代码闭源,而在一般社会生活中,则是干群差别。要消灭分工,首先需要消灭干群差别,首先要让干部参与劳动,群众参与管理。
3. “因此,为了吸引更多人加入项目,开发者不应只是为了自己的需求写程序,而应该加入一些他人需要的特性。”在消灭分工后,人的自由劳动绝不代表就“利己”的劳动了,而恰恰代表了利他劳动。就像在开源中,软件的利他性不仅决定了共同开发者的加入,更决定了程序能否流传开来、能否带来精神激励。
正如自由市场庸人所说:“如果你想获得最有效率的产品,你必须放弃促进程序员生产力。让他们自主,并忘掉最后期限。”开源模式作为生产力的前线直接凸现了资本主义下生产力与生产关系的矛盾。自上次革命高潮一个世纪以来,高度增长生产力再一次来到了生产关系变革的窗口。而这一次,先进的生产力与落后的生产关系矛盾如此之大,以至于诞生了开源模式这种合法的“共产主义匪徒”的生产方式。这难道不是对消灭分工合理性和进步性最有力的证明么?!