开源之父--Linus

2023-11-17

Git


很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

 

神创造了一个机制,然后大家在这个机制中自我发展。


在西洋神话中,上帝创造了光,创造了亚当跟夏娃,而他们繁衍了所有的人,这个世界的基础是神制定的,人只是按照这个基本框架自行发展。
在中国神话中,女娲是神,创造了很多人,然后人类自行发展繁衍。。。
即便这个世界的发展本身看起来是人类自身的功劳,但,这个世界却是神创造的。

所以,神的核心是:创造

Linus 为什么是神?因为它创造了「优秀的开源软件吸引更多人对开源进行贡献」的机制,然后开源软件事实上是在他的倡导下发展了。而这个机制的第一例子,就是 Linux ,当然 Linux 本身只是一个内核,以这个内核为基础,诞生了这个世界上的绝大多数电子设备(路由器,交换机,手机,服务器)。即便从最传统的意义上讲,Linus 也是最接近神的人。

没有 Linux ,RMS 在自由软件方面的思想至今仍然只能是个空想,所以一定程度上,整个开源软件社区之所以存在,与创造 Linux 的大神分不开。

神,创造世界,Linux 大神,创造了开源世界。
链接:https://www.zhihu.com/question/21994269/answer/20154384
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开源之父--Linus 的相关文章

  • 量化交易系统框架

    转自 https www cnblogs com huangfuyuan category 1290537 html
  • 华为OD机试 - 最大花费金额(Python)

    题目描述 双十一众多商品进行打折销售 小明想购买自己心仪的一些物品 但由于受购买资金限制 所以他决定从众多心仪商品中购买三件 而且想尽可能的花完资金 现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额 输入描述 输入第一行为一维整型数
  • 【Git CMD】Git常用命令总结

    目录 0 git的工作区 暂存区 本地仓库和远程仓库 0 1 图解 0 2 解析 1 本地仓库 1 1 创建版本库 1 2 分支 1 2 1 查看本地仓库的分支信息 1 2 2 创建分支 1 2 3 切换分支 1 2 4 重命名分支 1 2
  • win10计算机无访问权限,win10系统提示无internet访问权限怎么办

    原标题 win10系统提示无internet访问权限怎么办 大家好 今天分享一篇来自小白系统官网 xiaobaixitong com 的图文教程 win10系统提示无internet访问权限怎么办呢 很多朋友反映在使用电脑的时候出现没有网络
  • 【C语言篇】数组作为函数参数

    一 一维数组作为函数参数 1 数组名当做函数实际参数 也是值传递 不过是传递的地址而已 include
  • adworld-web2

    web2 GFSJ0627积分 2金币 2 91最佳Writeup由 Robert Wei 提供 收藏 反馈 难度 2 方向 Web 题解数 108 解出人数 10185 题目来源 CTF 题目描述 解密 题目场景 http 61 147
  • SSM到底学了什么--SSM回顾

    SSM回顾 学习完MyBatis Spring和SpringMVC 个人进行一下回顾 看看还能记住多少 重点的地方一定要闭着眼睛都要写出来的 前面的笔记做得很详细 那里忘了点哪里哈哈哈哈 MyBatis框架笔记 Spring框架笔记 Spr
  • 超详细的Linux环境下使用git上传代码教程(gitee版)

    git是一个版本控制器 我们使用它上传我们以前写过的代码给他进行托管 更为方便以后找到 同时也方便我们找到我们每次更改了什么 创建仓库 使用 git 命令行 Linux下的操作 git三板斧 在远端修改了文件push不了怎么办 删除仓库已提
  • 29岁总结复盘

    1 qt界面图片上加文字 2 mysql查询最新一百条数据 3 线程操作数据库死锁了怎么做 4 qt元 连接第五个参数 5 项目框架 整体把控 6 opencv 7 视频采集卡 8 做事要有深度 这才是你的价值 可以说计算机领域多数情况下就
  • 一个简单的WebService实例

    WebService在 NET平台下的作用是在不同应用程序间共享数据与数据交换 要达到这样的目标 Web services要使用两种技术 XML 标准通用标记语言下的一个子集 XML是在web上传送结构化数据的伟大方式 Web servic
  • 安装配置qt_eventdispatcher_libevent

    QT默认的是使用select模型的 这种轮询方式非常慢 在高并发连接 我们需要epoll才能发挥linux服务器的性能 安装qt eventdispatcher libevent 下载安装包后 解压 找到src目录 用Qt打开pro工程 然
  • matplotlib绘图系列----pie饼图

    使用plt pie绘制饼图 绘制饼图我们用matplotlib pyplot pie 我们先看下他的基本参数 下面结合实例演示基本用法 coding utf 8 加入中文显示 import matplotlib pyplot as plt
  • QGIS开发--小例子

    文接上篇 上次说到QGIS开发小插件的问题 讲了插件怎么开发 开发好了放哪个地方 界面怎么设置 代码怎么关联 并且遗留了一些小问题 就是怎么添加多个界面 怎么实现界面跳转 这篇文章主要就是解决这个问题的 这次内容有两个 1 界面关联 跳转
  • 大数据开发教程——ZooKeeper分布式协调组件

    ZooKeeper是什么 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的Chubby一个开源的实现 是Hadoop和Hbase Flink的重要组件 中文名 动物管理员 它是一个为分布式应用提供一致性服
  • MySQL(十四)—— 表的一些操作

    MySQL数据库系列内容的学习目录 rightarrow 老杜带你学MySQL学习系列内容汇总 14 表的一些操作 14 1 insert 语句一次插入多条记录 14 2 快速创建表 14 3 将查询结果插入到一张表当中 14 4 快速删除
  • 计算机网络 期末复习#1

    计算机网络 期末复习 1 大题 1 总时延 数据 速率 带宽 2 循环冗余检测CRC 3 无分类编制CIDR 构造超网 4 使用子网时分组转发 5 距离向量算法 6 拥塞控制 慢开始算法 7 路由器 以太网 1 总时延 有一个长度为 100
  • Python进阶篇

    大家好 我是易安 今天我们继续Python的学习 内容稍微有些多 不过我会尽可能举一些例子让你理解 对象比较与拷贝 在前面的学习中 我们其实已经接触到了很多 Python对象比较和复制的例子 比如下面这个 判断a和b是否相等的if语句 if
  • 06-PS中的四种蒙版

    Photoshop中的蒙版就是遮罩的意思 主要作用就是将其所在的图层 把不同的明暗度转化成相应的透明度 黑色为完全透明 灰色为半透明 白色为完全不透明 添加蒙版有便于灵活修改 不影响图层原貌 PS蒙版有四类 图层蒙版 剪切蒙版 矢量蒙版 快
  • Nmap食用指北

    Nmap食用指北 Nmap简介 Nmap Network mapper 是目前最流行的网络扫描工具 它不仅能够准确地探测单台主机的详细情况 而且能够高效率地对大范围IP地址段进行扫描 使用Nmap能够得知目标网络上哪些主机是存活的 以及哪些
  • 新闻网大数据实时分析可视化系统项目——10、数据采集/存储/分发完整流程测试...

    一 idea工具开发数据生成模拟程序 1 在idea开发工具中构建weblogs项目 编写数据生成模拟程序 package main java import java io public class ReadWrite static Str

随机推荐

  • LeetCode 面试题 03.02. 栈的最小值

    文章目录 一 题目 二 C 题解 一 题目 请设计一个栈 除了常规栈支持的 pop 与 push 函数以外 还支持 min 函数 该函数返回栈元素中的最小值 执行 push pop 和 min 操作的时间复杂度必须为 O 1 点击此处跳转题
  • 面试题:6种解法-顺序打印A1B2C3

    金不三 银不四的高频面试题 Java 中顺序打印 A1B2C3 是多线程中的一个经典面试问题 其解决方法可以锻炼程序员的多线程编程能力 本文将从多个角度 介绍 Java 中顺序打印 A1B2C3 的实现方式 总共分为如下6种方式 synch
  • VAE-GAN学习记录

    一 遇到的问题以及学习目的 学习VAE GAN主要是因为最近在做故障诊断相关的东西 之前在某篇论文里得知 使用GAN算法时 可以使用判别损失 重构损失对异常样本进行检测 然而 那篇论文 基于 LSTM GAN 的加油时序数据异常检测 里面
  • SpringBoot数据库连接池Hikari配置

    在项目中 一般情况下访问数据库 会创建一个连接 用完后就关闭它 对于简单的系统这样不会带来什么明显的性能上的开销 但是对于一个复杂的系统 频繁的建立 关闭连接 会极大的减低系统的性能 因为对于数据库连接的使用可能会成为系统性能的瓶颈 数据库
  • MATLAB2017a使用FasterRcnn目标检测训练及其测试流程

    本文在matlab2017a已有的FasterRcnn算法基础上来检测人群 流程比较简单 对一些初学者来说比较容易理解和操作 1 安装所需要的软硬件环境 1 1 硬件环境 CPU Intel i5 GPU GTX940m 内存 4G 硬盘
  • Java 8使用Steam().map()提出List对象的某一列的值及重新排序

    这几天遇到一个这样的问题 本来想着是从map中拿到数据在遍历出来的的 但是显得自己很麻烦 于是找了很多方式 测试各个方法的可用性 这里就简单记录一下一些Java8里面的好用的一些方法 Java8 使用 stream map 提取List对象
  • QT开发 - 信号槽写法

    1 Lambda写法 非重载函数 QCheckBox checkBox1 new QCheckBox check box1 connect checkBox1 QCheckBox stateChanged int state m statu
  • 类的访问权限-public、private、protected

    访问权限 protected 保护 访问权限 为什么要使用protected访问权限 子类的成员函数中 不能直接访问父类的private成员 已经这些成员已经被继承下来了 但是却不能访问 只有通过父类的public函数来间接访问 不是很方便
  • Windows server 2008搭建文件服务器

    服务器达到要求 各部门只能访问自己部门服务器 公司员工只能读取和修改文档 普通用户限制磁盘空间是20M 部门经理50M 总经理不受限制 市场部文件允许读取和修改 不能删除 限制电影 照片文件格式 完成数据备份 并模拟数据丢失进行还原 总体思
  • Protobuf Java (1)

    参考 https developers google cn protocol buffers docs javatutorial 目录 1 定义protobuf 文件 2 编译你的 Protocol Buffers 3 ProtoBuf A
  • git源代码泄露

    需要的工具 kali githack win版没下载成功 安装方法 kali命令行中输入 git clone https github com lijiejie GitHack 下载成功如下 输入GitHack 然后输入python Git
  • Java文件输入流如何才能一行一行读取,一行一行写入

    文件输入流 而且和行有关 那么就必须要想到使用Buffered缓冲流了 BufferedReader和BufferedWriter这两个类里面有很重要的方法 BufferedReader里是readLine BufferedWriter里是
  • UE4 通过Echarts实现各种统计图

    主要内容 本文主要讲解UE4 UMG向网页发送数据 通过WebBrowser插件将用Echarts定制好的统计图在UE4内展现出来 达到数据可视化的效果 本文主要演示柱形图的效果 其它类型的统计图可以结合Echarts官方案列以及文档自行修
  • springboot整合JSR303校验

    4 7 JSR303校验 4 7 1 统一校验的需求 前端请求后端接口传输参数 是在controller中校验还是在Service中校验 答案是都需要校验 只是分工不同 Contoller中校验请求参数的合法性 包括 必填项校验 数据格式校
  • coalesce 函数详解与学习记录

    1 在工作中都用到了此函数 特此学习并记录一下 2 coalesce 用途 1 将空值替换成其他值 2 返回第一个非空值 3 SQL实例 一 select coalesce success cnt 1 from tableA 当succes
  • Python使用管道、队列、zeromq进行IPC速度对比测试

    管道 import sys from multiprocessing import Process Pipe import time import result msg list for i in range 100 msg list ap
  • YOLOv5 backbone(一)

    Backbone概览及参数 Parameters nc 80 number of classes depth multiple 0 33 model depth multiple width multiple 0 50 layer chan
  • 利用外部中断和时间中断计数0-999显示在数码管上(考题)

    include
  • Ubuntu(20.04):设置DNS

    编辑文件 etc systemd resolved conf 设置DNS 8 8 8 8 114 114 114 114 保存退出后 以sudo身份运行 systemctl restart systemd resolved systemct
  • 开源之父--Linus

    Git 很多人都知道 Linus在1991年创建了开源的Linux 从此 Linux系统不断发展 已经成为最大的服务器系统软件了 Linus虽然创建了Linux 但Linux的壮大是靠全世界热心的志愿者参与的 这么多人在世界各地为Linux