《大教堂与集市》[美] Eric Raymond

2023-10-21 04:18
文章标签 教堂 集市 eric raymond

本文主要是介绍《大教堂与集市》[美] Eric Raymond,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.简述

这本书在业界的评价极高,被誉为开源运动的圣经,此书的作者为Eric Raymond,是美国的一位软件开发人员。此人在1996年接管了开源电子邮件软件“popclient”的开发,并将其重命名为Fetchmail,之后不久,他于1997年发表了一篇名为《大教堂与集市》的文章,此文描述了他对开源软件开发的看法,以及为什么使用“集市”的开发模式。同年五月,他在年度Linux Kongress上发表相关论文,后来他将论文扩展成书,于是,《大教堂与集市》诞生了。

二.摘抄与思考:

顾名思义,该书主要围绕两点讲述:“大教堂”的开发模式,和“集市”的开发模式,在这过程中,作者也提到了不少关于黑客文化,开源软件开发与管理的看法。

1.Linux最重要的特点不是技术上的,而是社会学上的。在Linux被开发出来之前,所有人都认为,如果软件复杂到操作系统这样的程度,就必须要有一个精心协作的团队,团队要比较小,而且紧密互动,不管是以前还是现在,这都是很典型的开发模式。商业软件、FSF ?20世纪80年代开发的如大教堂般宏伟的自由软件以及从Lynne Jolitz最初的386BSD分裂出来的freeBSD/netBSD/OpenBSD这些项目,都是使用这种模式开发的 

2.好的软件作品,往往源自于开发者的个人需要。按说这是显而易见的(正如老话说“需要是发明之母”),但太多的软件开发人员并不需要也不热爱他们正在开发的软件,他们把编程当差事,为的只是拿薪酬 

3.在你第一次把问题解决的时候,你往往并不了解这个问题,第二次你才可能知道怎么把事情做好。所以,如果你想做对事情,至少要再做一次 

4.或者可能因为一些难以消除的严重bug导致用户群流失,Linus也在所不惜,他相信 ? 8.如果有足够多的beta测试 ? [1]和合作开发者,几乎所有问题都会很快显现,然后自然有人会把它解决。或者说得更通俗一些:“只要眼睛多,bug容易捉。”我把它称为“Linus定律”

5.Linus 定律道出了大教堂模式和集市模式最关键的区别:在大教堂建筑者看来,bug 是棘手的、难以发现的、隐藏在深处的,要经过几个人数月的全心投入和仔细检查,才能有点信心说已经剔除了所有错误。而发布间隔越长,倘若等待已久的发布版本并不完美,人们的失望就越发不可避免。对集市模式而言则完全不同,在上千名合作开发者热切钻研每个新发布版本的情况下,你可以假定bug 是浅显易找的,或者至少可以很快变得浅显易找。所以你会频繁发布以获取更多的修正,其副作用是良性的:即便发布中有些小问题,你也不会损失太多

6.Brooks(《人月神话》的作者)曾经在非正式场合说过:“对于一个被广泛使用的软件,其维护成本通常是开发成本的40%或者更多。令人惊奇的是,这个成本受到用户数的严重影响,用户越多,发现的bug就会越多。”“用户越多,bug越多”是因为增加用户就会增加程序检验的方式。当用户是合作开发者时,这种效应会被放大,每个着手去发现bug的人,都会有不同的视角,并使用各自略微不同的捕捉方法和分析工具。

7.传统软件开发在组织结构上的根本问题 ? Brooks 定律一语道破:“在一个已经延期的项目上增加人手,只会让项目更加延期。”更为一般地讲, Brooks 定律指出,随着开发人员数目的增长,项目复杂度和沟通成本按照人数的平方增加,而工作成果只会呈线性增长 ? Brooks 定律是建立在经验基础上的,人们发现, bug 很容易集中在不同人写的代码的交互接口上,沟 ?/ 协调的开销会随开发者间接口数的增加而增多,也就是说,问题规模和开发人员间的沟通路径数相关,即和人数的平方相关(更精确地讲,应该是 N( N- 1)/ 2 ? N 代表开发者数目) 

8.聪明的数据结构配上愚笨的代码,远比反过来要好得多

9.设计上的完美不是没有东西可以再加,而是没有东西可以再减。”当你的代码变得既好又简单,你就知道你做对了

10.我想,一个协调者是否拥有卓越的原创设计能力,并不是项目成败的决定性因素,但他是否能识别出别人的优秀创意,则一定是最关键

11.集市项目启动要求:

       11.1 . 一定水准的设计和编码能力

       11.2 .很好的人际交往和沟通能力

       11.3 .事先需要一个项目原型

12.闭源世界不能赢得一场与开源社区之间的不断演化的军备竞赛,因为后者可以在一个问题上投入比前者多几个数量级的熟练技术工时

13.从历史上看,黑客文化中最引人注目和最有组织的部分,都是既狂热又反商业化的,Richard M.Stallman(RMS)创立的自由软件基金会, 20世纪80年代早期开始,支持了大量的开源项目,包括Emacs和GCC——它们至今仍然是互联网开源世界的基础,而且看起来将继续保持这个地位

14.人类对社会地位的竞争有一种天生的内驱力,它通过进化根植于人心。灵长类整个历史 90%都处于农业尚未被发明的年代,我们的祖先生活在小型的游牧型狩猎采集群体中,位居高位的个体(即那些能够最有效组成联盟并说服他人与自己合作的人)获得最健康的伴侣和最好的食物,对地位的驱动力会以不同的方式表达,并主要取决于生活必需品的稀缺程度 .  从这个角度看,“编程乐趣”是对自我实现或自我超越需求的满足,这种高层次需求只有在低层次需求(包括生理安全、归属感、同侪尊重)被最低程度满足后,才会持续地表现出来。所以,“编程乐趣”要在一定社会环境下才能成为个体的主要动机,而“声誉竞争”可能对该环境提供起到了至关重要的作用 ?

15. 如何称为一个黑客?

     15.1. 定义:有一堆关于“黑客”这个术语的定义,大多数都涉及“技术高超”、“热衷于解决问题”和“突破极限”这样的特点。

     15.2  精神:黑客精神并不局限在软件文化中。人们会把黑客态度用在其他事情上,比如电子或音乐。事实上,对任何科学和艺术,在其最高水平的活动中都可以发现黑客精神。

     15.3  黑客与骇客的区别:两者最根本的区别是:黑客搞建设,骇客搞破坏

     15.4. 相信自由,互相帮助,追求卓越,保持学习。

     15.5. 要有学习的信心和解决问题的勇气:比如,当你没有完整的知识去解决一个问题的时候,也要去解决这个问题,在这个解决问题的过程中你会从中学习,也会因为学习而或者知识去解决下一个问题。

     15.6. 创造性的大脑是有限资源,不要重复造轮子。无聊和乏味是有害的,好好利用你的头脑去解决有趣的问题

     15.7. 自由是好事情

     15.8. 态度不能代替能力。要想成为黑客,你必须养成这些态度。但只凭态度并不会让你成为黑客,就像只凭态度不会让你成为冠军运动员或摇滚明星一样。要成为一名黑客,你需要智慧、实践、投入和努力

     15.9. 学习编程,Python是一个很好的入门语言。然后融会贯通,要懂得快速上手其他语言。学习C, List等优秀语言。

     15.10. 达到黑客的精神境界:写作,阅读科幻小说,禅修,学习乐器,鉴赏音乐等。

     

 

 

 

这篇关于《大教堂与集市》[美] Eric Raymond的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251857

相关文章

SP: eric

靶机搭建 靶机下载地址 在Virtualbox中打开下载好的靶机,网络配置修改为桥接模式,启动靶机即可。 信息收集 主机发现 nmap 192.168.31.0/24 -Pn -T4 靶机IP:192.168.31.244 端口扫描 nmap 192.168.31.244 -A -p- -T4 根据端口扫描结果可知开放了22,80端口,并且80端口的http服务直接暴露了/.

搭建Python+PyQt+Eric平台进行图形化开发

预备安装程序:   2、1、下载Python3.2     官方网站:http://www.python.org/ 下载地址:http://www.python.org/ftp/python/3.2.2/python-3.2.2.msi   2、2、下载PyQt4 官方网站:http://www.riverbankcomputing.co.uk 下载地址:下载Windows 3

Eric Raymond:再见,Red Hat!

在开源社区举足轻重的Eric S. Raymond(《Unix编程艺术》的作者,印象中Open Source这个商标就是他的)又 发话了,这次公开信的题目赫然是“再见,Fedora”,目标直指Red Hat。 他在信中说:“13年来,我一直是Red Hat和Fedora的忠实用户,但是今天我的忍耐到了极限……” 他表示,自己将转向Ubuntu。

使用eric创建一个PyQt项目

1.新建项目 打开eric,点击【项目】-【新建】,会弹出如下的对话框。这里我们创建一个名为pyqtdemo的项目。注意,在创建项目时,eric不会自动根据填写的项目名称修改项目文件夹名称! 点击确定之后,可以看到一个源代码树中只有__init__.py的项目。当然,此时eric还创建了几个文件,并不会在这里显示出来,他们分别是项目文件”pyqtdemo.e4p”和”_eric4p

Eric S. Raymond五部曲之A Brief History of Hackerdom

本篇原作者为Eric S. Raymond,他是一位大哥级的 Hacker,写了很多自由软件,知名著作有Jargon File等,近年 来发表“大教堂与集市”论文为Opensource software努力,Netscape 愿意公开Navigator的原始码,与这篇文章有很大的 关系。   序曲: Real Programmer   故事一开始,我要介绍的是所谓的

4 万字全面掌握数据库、数据仓库、数据集市、数据湖、数据中台

如今,随着诸如互联网以及物联网等技术的不断发展,越来越多的数据被生产出来-据统计,每天大约有超过2.5亿亿字节的各种各样数据产生。这些数据需要被存储起来并且能够被方便的分析和利用。 随着大数据技术的不断更新和迭代,数据管理工具得到了飞速的发展,相关概念如雨后春笋一般应运而生,如从最初决策支持系统(DSS)到商业智能(BI)、数据仓库、数据湖、数据中台等,这些概念特别容易混淆,本文对这些名词术语及

大教堂与集市

说明: 本文的作者Eric Raymond是Open Source Software领域的领袖,这方面许多 新的思想正是从他那儿产生的,同时他也是UNIX上最流行的Email软件Fetchmail 的作者。 下面这篇文章有点儿长,然而它是值得你去耐心把它读完的。文章以Fetchmail 为例,讨论了Internet上集市风格的开发方式。 我们应该感谢HansB,是他把这篇长文章翻译成了

Skr-Eric的Javascript课堂(四)——JS的内置对象

JS的内置对象 1. 对象 : 对象由属性和方法组成,可以使用点语法访问对象的 属性和方法 et : var arr = [1,2,3]; arr.length; //访问属性 arr.push(100); //访问方法   2. 对象分类 : 1. 内置对象 : 由ECMAScript规定,例如数组 字符串 Math Date... 2. BOM 对象 : 浏览器对象模

Skr-Eric的MongoDB课堂(二)——MongoDB的数据库与集合命令

Mongodb 命令   设置数据库存储位置 mongod --dbpath  目录   e.g.  将存储路径设置为dbs mongod --dbpath  dbs   设置数据库监听端口 mongod --port  8080 * 默认监听端口27017   mongo 进入数据库交互操作界面 mongo shell : 用来操作mongodb数据库的界面,在这里可以

Skr-Eric的Python课堂(二十二)——Python的异常和运算符重载

异常(高级)   with 语句     语法:       with 表达式1 [as 变量1], 表达式2 [as 变量2], ...:          语句块   作用:     使用于对资源进行访问的场合,确保使用过程中不管是否发生异常都会执行必须的'清理'操作, 并释放资源       如:文件打开后自动关闭,线程中锁的自动获取和释放等(线程后面会学)   说明: