【下载】《大教堂和市集》:开放源代码运动的《圣经》

下载地址:http://download.csdn.net/detail/wang_kun/7574839

##################################################################################################

选自10月份出版的新书《21世纪的书》(方兴东、杨吉著,南方日报出版社)

自由软件运动的《圣经》

任何一场革命或者运动都需要一个理论家,需要一份纲领性的文献,起到真正的“画龙点睛”的神效。除了架构极具思辩力和逻辑性的理论体系,更需要激发起人们对美好理想的向往,为同行者的士气传递极具煽动性的烈焰。目前,这场正在颠覆软件业传统商业模式的自由软件运动也不例外。

自由软件精神领袖当然是理查德·斯托尔曼(Richard Stallman),这位自由软件基金(FSF)的创始人,不修边幅,过肩长发,连鬓胡子,一个活脱脱的现代都市里的野人。这位革命家又太“不食人间烟火”,太追求这场运动的神圣性和纯粹性,一心渴望成为软件领域的耶稣基督。太超凡脱俗,而且,除了提出核心理念外,斯托尔曼缺乏著书立作的能力。这些局限,使得埃里克·雷蒙德(Eric S. Raymond)脱颖而出,担当了这个角色。如今,他已经成为开放源代码运动(脱胎于自由软件运动)和黑客文化的第一理论家,不可动摇。

在自由软件启蒙阶段,埃里克·雷蒙德以如椽之笔呼啸而出,其核心著作被业界成为“五部曲”:《黑客道简史》(A Brief History of Hackerdom)、《大教堂和市集》(The Cathedral and the Bazaar)、《如何成为一名黑客》(How To Become A Hacker)、《开拓智域》(Homesteading the Noosphere)、《魔法大锅炉》(The Magic Cauldron)。其中最著名的当然还是《大教堂和市集》,它在自由软件运动中的地位相当于基督教的《圣经》。而用黑客们的话说,这是“黑客藏经阁”的第一个收藏。

《大教堂和市集》的伟大之处在于,第一次以形象生动的比喻,将自由软件和商业封闭软件之间的区分开来。“我一直想找一个比喻,能够强调我所发现的在两种开发模式中所存在的重要区别。一种是封闭的、垂直的、集中式的开发模式,反映一种由权利关系所预先控制的级权制度;而另一种则是并行的、点对点的、动态的开发模式。”这个比喻诞生了:前者就是封闭的大教堂模式,后者就是开放市集模式。他以极强的说服力,说明了自由软件不仅仅是一种意识形态,也不仅仅是乌托邦的理想,而是在开发模式上真正代表着“先进的生产力”,代表着历史发展趋势的必然。微软的模式就象是艰难而缓慢的大教堂建造工程。这种大教堂的方式在修补软件“Bugs”,保障软件质量方面明显失效。而自由软件则仿效了自由集市的模式。在集市里,公开源代码的程序随时随地地暴露在千万名程序员的眼皮底下,使“Bugs”无处藏身,并能随时修改。这种一边开发、一边调试修改的同步方式比大集市的“α测试、β测试”方式先进得多。用最形象的比喻就是,自由软件模式的核心是“众人拾柴火焰高”。

雷蒙德的这句话更成为经典:“如果有足够多的眼睛,所有的错误都是浅显的”(群众的眼睛是雪亮的),我把这称为“Linus定律”。 

从追随者到领导者

1957年,雷蒙德出生于美国马萨诸塞州的波士顿,正好就是黑客文化发源地MIT的所在,也是斯托尔曼发动自由软件运动的大本营。但雷蒙德从小就跟随父母在世界各地东奔西走,13岁之前已经忘掉了两种语言。1971年,他回到美国宾夕法尼亚州,1976年起开始接触黑客文化,1982年完成第一个开放源代码软件项目。雷蒙德不是光说不练的笔杆子,他INTERCAL编程语言的主要创作者之一,曾经为EMACS编辑器作出贡献。雷蒙德还是著名的Fetchmail程序的作者。最近他还编写了一个最初用于Linux内核设置的设置程序。

1990年,他编辑了《新黑客字典》。从此对黑客文化着迷,成为黑客部落的历史学家和黑客文化的学者,1996年写成了《黑客道简史》。他开始把自己定位于人类学家:“人类学家的工作就是研究人的行为及整个社会,研究人类文化的形成、文化的作用方式、文化如何随时间变化而变化,以及人类如何适应不同的文化环境等。我考虑最多的是有关计算机黑客的文化,更多地集中于从社会的角度分析,而不是他们的高超技术和程序。”

Linux来了,Linux点燃了自由软件运动的烈火。人人被激励起来,敏锐的雷蒙德当然更加激动,19975月,他完成的《集市与教堂》在Linux Kongress上发表,受到了空前的欢迎。《大教堂和市集》主要面向编程人员和技术人员,当然充满了技术术语。但是,“在书中许多涉及技术问题的地方我都标明了“如果您不是技术行家可以略过此处”。除此之外,我还特意删除了那些有可能读起来比较晦涩的地方。我希望《大教堂和市集》这本书有血有肉、富有刺激性并能够启发人们思索。尽管我不知道在公开场合下说这些话是否合适,但是事实是我确实认为自己是个称职的作者,能够将技术问题阐述地足够生动、有趣以吸引非技术类的读者群。在撰写该书的过程中我确实体验了不断挑战困难的乐趣。”

除了理清理论体系,在这本书中还提出很多精辟的预言。最大的成就就是1998年促成了网景Mozilla成为开放源代码软件,标准着主流商业界第一次全面认同了他的理论。因为写作此文,让他看到了一个全新的方向。199823,硅谷的一次会议上,“开放源代码(Open Source)”,由第一个参与者在会上提出,后来发展成为开源运动,并最终成为开源的发起组织。雷蒙德成了领导这场运动的理论家,成为开放源代码促进会(Open Source Initiative)的主要创办人之一。开始有了自己的正式组织和明确的市场战略。

同时,也是雷蒙德的努力,首次在网上披露了臭名昭著的微软“万圣节文档”。这份微软内部机密文件第一次全面披露了微软对自由软件的真实看法,在IT界引起轩然大波,成为微软公关的“一大噩梦”。微软对Linux等自由软件的敬畏和赞美,为这场运动起到了推波助澜的最佳作用!


自由软件的“马克思和恩格斯”分道扬镳

在业界的活跃程度,雷蒙德可谓“青出于蓝而胜于蓝”。雷蒙德与斯托尔曼有很多相似之处:都是自由主义者,是优秀的演说家和煽动家,都富有浓郁的理想主义色彩,都不注重物质生活,热爱编程和写作,都由迷恋黑客文化而成为一个另类的黑客。因此,当斯托尔曼在80年代初启动自由软件运动时,雷蒙德很快受到感召,投奔斯托尔曼的门下,成为了FSF最早的撰稿人之一。

但是,雷蒙德与斯托尔曼又有区别:如果说斯托尔曼天生就是一个纯粹的革命家,那雷蒙德如他自己所形容:他是一个类似火把、医生、宣传员、大使、福音主义者一类的人物。但本质上,更是一位时刻停留在角斗场中央的“斗士”。有着强烈的写作冲动,外向型的性格,喜欢与媒体打成一片,他的曝光率和“出镜率”无疑是所有黑客中最高。与埋头苦干和默默感召相比,他更需要时刻站在屋顶大喊,不断向世人发出信息;与纯粹的理想和执着的信念相伴,他更喜欢和记者和总裁们打成一片;与封闭在一个小小的圈子里自娱自乐,他希望把新的理念带到华尔街,让资本市场也为之倾倒。

显然,他比斯托尔曼更加入世、务实。但有时候,你不得不承认,对于一场革命运动而言,这种入世意味着更强大的战斗力。要在现实的世界取得真正的胜利,不得不学会妥协,在某种程度上与商业力量“同流合污”。

因此,雷蒙德与斯托尔曼注定了不能成为软件业的“马克思和恩格斯”,而最终分道扬镳。尽管,雷蒙德宣称,他和斯托尔曼已经是二十年的老朋友,他们之间有时候会有一些摩擦,但他们只是讨论问题罢了。但事实上,你很难见到他们之间有什么合作,哪怕是一次合影。他们之间的分歧最终引发了道路之争,曾经是一个战壕里的战友变成了“持不同政见者”。自由软件运动的裂缝由此产生。

雷蒙德认为,“自由软件(Free Software)”词不达意,给大家造成了极大的损害。原因在于“自由软件”这个词很容易就与对知识产权的敌意、共产主义和其他激进的观点联系起来,几乎不可能让大企业的CEOCIO们喜欢,更容易把投资者吓跑。于是,他举起了“开放源代码(Open Source)”的大旗,用以替代“自由软件”。

雷蒙德认为两者的核心是兼容的,如同《大教堂和市集》一书的要旨一样:为了产生高质量软件的最好办法,将源代码向整个世界完全开放,软件开发应当由一群相互独立工作的黑客在一种全开放的氛围中协作进行。这样的工作模式能把软件作得最好,能比商业软件更棒!“在解决问题方面,没有任何商业性开发者可以与Linux社团的头脑库相匹敌,因为很少有人能负担起雇佣200多个为fetchmail出过力的人!

但是,斯托尔曼不喜欢实用主义的辩词。他认为,虽然两者都是开放源代码,但最大的区别就是自由软件将自由精神放在首位。对斯托尔曼来说,自由是基本的道德美德:所有的计算机用户都应该享有相互协作、共享,以及拷贝和交换源代码的自由。但是对商人来说,自由(free)与免费(free)是同一个词。雷蒙德打出的“开放源代码”新旗号,目的就是要与斯托尔曼划清界线。在自由软件如火如荼,商机无限盛开之极,为了避免纷涌而来的投资者被斯托尔曼“吓跑”,他们还得联起手来,将斯托尔曼屏蔽起来。

《大教堂和市集》是鉴别“真伪”的一面镜子 

这是一个商业主导的时代,胜利者当然是讲究实际、注重实效的雷蒙德。的确,在自由软件发展的关键时刻,人们更多关注它势不可挡的成功势头,而对道路之争不感兴趣。一个是策动自由软件的“原教旨主义者”,一个是把自由软件汇入商业化大潮的“修正主义”,他们之间你争我夺,誓不两立。但对于我们来说,他们都是一回事情,都是对现有商业软件封闭模式的共同反叛。因此,在我们眼里,“自由软件”和“开放源代码”是同一回事。本文中两者也不加区分。

与斯托尔曼等许多黑客一样,雷蒙德也多才多艺,不拘一格。迷恋科幻小说,是一名出色的业余音乐家,能演奏多种乐器。还是空手道黑带选手,酷爱武术和血腥暴力的射击游戏。这位“务实”的自由主义者也有出格的地方,比如他坚持美国宪法修正案第二条中关于公民持枪械的自由,因此遭到很多黑客的反对,但他自己却十分喜欢和人争辩该议题。他目前在宾州的一家非赢利的网络公司工作,为他的从事的自由软件运动而奋斗。

作为开放源代码的纲领,《大教堂和市集》当然也是“开放源代码”,大家可以在全球各大网站查到,而且已经被翻译成十多种语言。在爱好者的努力下,本文的繁体版和简体版也很精彩到位。大家可以直接用搜索引擎搜索。尽管如此,本书由Tim O'Reilly公司正式出版后,居然十分畅销。雷蒙德兴致所至,又对本文进行了修改补充,出了新的版本。

“《大教堂和市集》第一版问世的时候时间十分仓促,从头到尾只花了6个星期。这一次再版我是本着完美主义的态度来着手的,希望再版书能够成为一个精品。”看来,雷蒙德非要把它做成软件业的“圣经”不可。“我个人认为,正是因为我选择了Linux,所以我已经生活在一个不会沉没的软件世界。但是,迄今为此,大多数人还没有生活在这么一个世界里。当大多数人生活在这么一个世界的时候,我想,就到了我考虑停止这份工作的时候了。”

在各界的大力推动下,自由软件在中国也形势一片大好。但是,正如沃尔特·佩特所言“伟大的事物总在人性那儿投下阴影,在此之下它就萎缩了”。如果我们仅仅是把Linux当作一个纯粹的商品,把自由软件当作一次简单的商机,就会丧失其中真正的内涵,也会大大削弱它的力量。我们应该充分引进并汲取自由软件的传统、理论和文化,才可能使这场运动超越急功近利的短期行为。

目前在中国,《大教堂和市集》这样重要的理论经典依然只是在民间流传,在边缘徘徊,被业界主流所忽视和冷漠。因此,可以说,与业界功利性的喧哗相比,《大教堂和市集》更是一面镜子,它的遭遇与处境,可以直接映照出中国在自由软件运动中,真正扮演了何等的角色。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Cesium中使用DynamicLayer3D来实现一个s3m模型绕索菲亚大教堂循环飞行的话,可以按照以下步骤进行: 1. 导入索菲亚大教堂的3D模型(s3m格式),并将其添加到Cesium场景中。可以使用以下代码: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); var sophiaModel = viewer.scene.primitives.add(Cesium.Cesium3DTileset.fromAsset('sophia.s3m')); ``` 2. 创建DynamicLayer3D对象,并将其添加到场景中。可以使用以下代码: ```javascript var dynamicLayer = new Cesium.DynamicLayer3D(viewer.scene.context); viewer.scene.primitives.add(dynamicLayer); ``` 3. 创建一个循环动画,使模型绕大教堂飞行。可以使用以下代码: ```javascript var startAngle = 0; var deltaAngle = Cesium.Math.TWO_PI / 360; var center = Cesium.Cartesian3.fromDegrees(23.7277, 37.9817, 50); viewer.clock.onTick.addEventListener(function (clock) { var angle = startAngle + clock.currentTime.secondsSinceStart * deltaAngle; var position = new Cesium.Cartesian3(Math.sin(angle) * 100, Math.cos(angle) * 100, 0); position = Cesium.Matrix4.multiplyByPoint(sophiaModel.modelMatrix, position, position); var eye = viewer.camera.position; var direction = Cesium.Cartesian3.subtract(position, center, new Cesium.Cartesian3()); var up = Cesium.Cartesian3.normalize(Cesium.Cartesian3.cross(direction, viewer.camera.right, new Cesium.Cartesian3()), new Cesium.Cartesian3()); viewer.camera.lookAt(position, new Cesium.HeadingPitchRange(0, -Cesium.Math.PI_OVER_TWO, Cesium.Cartesian3.distance(eye, position)), up); dynamicLayer.clear(); dynamicLayer.add(position, sophiaModel.boundingSphere.radius * 2); }); ``` 这段代码在每一帧中计算出模型的位置,然后将相机的视角调整到这个位置,并将模型添加到DynamicLayer3D中。最后,调用clear方法清除上一帧添加的模型。 4. 运行以上代码,模型就会绕大教堂循环飞行了。 需要注意的是,以上代码只是一个简单的示例,可能需要根据具体情况进行调整。同时,由于DynamicLayer3D是一个比较新的功能,可能还存在一些问题和限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值