《大教堂与集市》

简介: 《大教堂与集市》

这是一本开源发展历程的书。而推动开源社区发展的就是黑客。大教堂和集市是两种不同的开发方式。里面有很多专业术语。在阅读前你需要了解很多背景知识。我刚刚看的时候还是很懵的。虽然不好读,但跳过那些不熟悉的专业名词,也不会影响你理解作者想要表达的内容。


大教堂和集市指的是两种不同的开发模式。大教堂就是公司聘请员工,有规划的开发软件。集市则是开源的方式,大家因为兴趣或者因为某个问题而驱动去开发。我认为这本书想要表达的一个核心观点就是,大教堂模式开发的软件问题多,修复慢,不如开源出来,让所有人一起来完善软件。而公司则不再通过软件的“销售价值”来赚钱,而可以变通成为通过服务来赚钱。


开源的优势在于,软件存在的问题更容易被暴露出来。因为用的人多,他们能够和精准地把bug反馈出来。而这些反馈一般都是“源码级”的反馈,会很好地帮助黑客们进行软件修复。这种众人齐心协力解决问题、完善软件的行为,让软件越来越”完美“。


Linux是第一个通过模式被开发出来的非常复杂的操作系统。在当时是不可思议的。就像是一群“乌合之众”造出来世界上最精致的工具一样,让人难以置信。从此,开源模式开始流行。我们现在使用的很多中间件、软件工具都是开源的。大家最近熟知的可能就是区块链,区块链的底层也都是开源的。


这是怎么做到的呢?要知道,在《人月神话》这本书里,有一个Brooks定律,讲的是项目的复杂度和沟通成本与开发人数的平方成正比。跟我以前听到的复杂性定律类似。复杂性定律讲的是工作的复杂度等于工作步骤的平方。对于软件开发来说,参与研发的人数越多,项目需要完成的时间越长,出错的可能性也就越大。


那linux系统的开发工作明显就不满足这个复杂性定律了。是什么原因呢?我的理解是,因为开源的规则本身就把任务切分为一个个非常小的模块,每个开发人员参与研发都遵循特定的编码规范。这样,只针对这一个模块是不需要进行大量沟通的。复杂度就不会增加。而且,每个提交的修改版本,都会有人专门审核,这样就建立了一种自我纠错的能力。开源软件就是这样生长出来的。


最后,看完本书后,我自己有一个感觉,那就是开源的一些特点其实已经深入到公司的开发中了。比如,开源发布频率非常高,我们现在开发软件也是如此。还有,我们说要以解决问题为导向,用软件的实用价值驱动开发人员。让开发人员从心底里感到自豪、满足。这跟开源基于兴趣和问题驱动是一样的。这背后的底层动机是利他,但利他本身也是利他者的自我满足的外在表现。利他最终会利己。就像那句谚语说的, 好人终有好报。


对于开发人员来说,开源带来的不仅仅是表面的被尊重,被满足的价值。在真实职场里,开源项目的贡献是面试的直通车,是个人能力的体现。


如果所有软件都开源,那么很多程序员是不是就找不到工作了?并不会,开源只是减少已有工作的开发,但事实上,我们在工作中需求的开发有停过吗?而且,随着开源的兴起,对开源的维护和支持也会产生更多新的岗位。社会整体是更高效了。

目录
相关文章
|
数据可视化 物联网 Swift
谷歌发布开源LLM Gemma,魔搭社区评测+最佳实践教程来啦!
Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。
|
XML 存储 开发工具
|
1月前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
295 4
|
运维 Kubernetes Cloud Native
莉莉丝游戏云原生之路
本文将介绍莉莉丝游戏云原生化的背景、挑战,以及应对的解决方案,记录了莉莉丝游戏云原生化历程,为游戏架构云原生转型提供经验。
莉莉丝游戏云原生之路
|
12月前
|
安全 云栖大会 云计算
首批Well-Architected生态合作伙伴揭晓,齐聚2024云栖大会
在帮助企业客户上好云、用好云、管好云的道路上,阿里云始终坚持开放合作的理念,不断寻求与优质的生态伙伴深化合作,携手共建Well-Architected技术与服务方案。在今年的云栖大会上,共七家合作伙伴企业荣获首批「Well-Architected阿里云卓越架构生态合作伙伴」认证。
487 2
|
人工智能 安全 搜索推荐
克劳德官宣:claude国内版_claude国内中文版,请赶快收藏!
Claude AI 是 Anthropic 公司开发的一系列大型语言模型。Anthropic 是一家由前 OpenAI 员工创立的人工智能安全和研究公司,他们致力于构建安全、可靠和可解释的 AI 系统。
|
Java PHP
java.lang.UnsupportedOperationException怎么解决?
在Java中,`Arrays.asList()`方法用于将数组转换为列表,但返回的是一个固定大小的列表,它继承自`AbstractList`,不支持`add()`, `remove()`, 或其他可变操作。当尝试对这样的列表执行这些操作时,会抛出`UnsupportedOperationException`。
278 0
|
安全 Java 编译器
写个代码扫描插件,再也不怕 log4j 等问题
写个代码扫描插件,再也不怕 log4j 等问题
144 0
|
安全 算法 程序员
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
525 1
|
Java 关系型数据库 MySQL
开源项目部署环境准备
开源项目部署环境准备
189 3

热门文章

最新文章