首页 > 其他分享 >开源世界

开源世界

时间:2023-05-09 22:56:35浏览次数:45  
标签:GNU 世界 Unix 开源 Linux BSD org

开源世界的爱恨情仇

 

开源系统和工具在我们生活中扮演着越来越重要的角色,作为一个软件开发人员,不可避免的会与各种开源环境打交道,今天就大体介绍一些开源世界中如雷贯耳的名词到底是什么意思,有什么关系,这些提到的产品,也是开源世界的根基。

Multics ("Multiplexed Information and Computing Service") 1964

由MIT (Project MAC with Fernando Corbató), General Electric, Bell Labs一起开发的一款操作系统。目的是为了研发一种可以更多人在同一个电脑上同时使用的分时系统。不过由于设计过于复杂和超前,导致产品迟迟无法落地。贝尔实验室在后续的研发中选择退出。最终Multics还是研发成功了,但是并不是一款流行的产品。

Bell Labs 贝尔实验室

在技术领域,大家肯定都听说过,因为它研发了太多奠定了当今科技的产品:radio astronomy, the transistor, the laser, the photovoltaic cell, the charge-coupled device (CCD), information theory, the Unix operating system, and the programming languages B, C, C++, S, SNOBOL, AWK, AMPL。并且获得了9次诺贝尔奖。

AT&T American Telephone and Telegraph Company 美国电话电报公司

贝尔实验室属于AT&T,AT&T大家也很熟悉,很多IEEE的行业规范都是由AT&T参与制定的。

Unix

贝尔实验室退出Multics后,参与研发的Ken Thompson(业界大佬)为了正常运行自己的一款游戏着手开发一个新的系统。随着Ken Thompson的开发,Dennis Ritchie(另一个大佬)等人也加入了其中。他们吸取了Multics的教训,一开始尽可能简洁(这也是Unix哲学的一部分),很快做出了第一版。

C programming language

Unix第一版是用汇编完成的,开发和移植都很不方便,他们准备找一个新的语言来代替汇编。一开始尝试了Fortran,但是并不能满足要求,于是在Fortran的基础上创建了B语言,但是B语言还是不够完美,最后在B语言的基础上创建了大名鼎鼎的C语言。由于C语言是Brian Kernighan和Dennis Ritchie创造的,所以也被叫做K&R C。

Unics (Uniplexed Information and Computing Service)

一开始Unix的名称是Unics,是对Multics一种调侃,但是后来大家觉着没人会记着这个名字,所以就改为Unix(估计就是把单词中cs的发音用x代替了)。

发展

Unix很快获得了成功,AT&T意思到Unix的价值,开始售卖Unix版权,所以市面上出现了一大堆移植的系统:University of California, Berkeley (BSD), Microsoft (Xenix), Sun Microsystems (SunOS/Solaris), HP/HPE (HP-UX), and IBM (AIX)。这也为后来的Unix wars和Linux的出现埋下了伏笔。

Berkeley Software Distribution BSD

这是一个很重要的Unix分支,伯克利(全球顶尖学府,计算机领域也是名列前茅)拿到Unix后,在其基础上做了各种开发,然后发布了一个开源的BSD版本。由于其他的很多版本都是付费的,所以BSD的衍生品比较多,比如FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Darwin, and TrueOS。

TCP/IP

1989年,伯克利同意把为BSD开发的TCP/IP相关的代码公开,推动了TCP/IP协议的传播。很多公司这时把TCP/IP相关的功能增加到了自己的系统中,包括IBM,微软(Windows 95)

FreeBSD

FreeBSD是BSD的一个比较重要的分支,由于其人性化的协议,很多功能或者内核模块被各大公司广泛利用,其中比较有名的有苹果的macOS和iOS;Playstation的Orbis OS和Nintendo Switch的Horizon。

Unix wars

随着Unix的流行,Unix的碎片化也越来越严重,大家拿到Unix授权后,在原有的代码基础上分别开发自己的功能,差异越来越大,并且这时候AT&T想收回Unix进行统一,而以BSD为代表的开源组织却非常痛恨这种行为,就导致了Unix的纷争。

AT&T依靠自己的强大背景和实力,与IEEE一同推出了用于统一Unix系统的Portable Operating System Interface (POSIX)。POSIX的目标是好的,便于大家统一接口,方便软件开发移植,但是AT&T制定POSIX却是为了独揽Unix的商业价值。

Unix wars经历了好多年,Unix版权兜兜转转到了Novell手中,Novell选择结束与BSD的官司,只是要求BSD删除原始Unix的代码,允许BSD继续发行。由于最开始Unix内容比较少,BSD基本没做太多修改,只删除了少部分代码,作为一个重要的Unix分支延续下来。

POSIX Portable Operating System Interface

POSIX中并没有"X"开头的单词,增加这个也是因为Richard Stallman(GNU的发起者)提议,改名为POSIX,增加一个"X"便于发音,所以IEEE就接受了这个意见。

System V

为了统一Unix市场,AT&T推出了System V系统,这也是Unix的一个重要分支。因为其各方面也很优秀,并且由AT&T做背书,很多公司为了避免在Unix wars中被牵扯进来,选择使用System V作为开发版本,也衍生出多个商用闭源系统HP-UX, IBM AIX, Solaris, Xenix。

Unix-like operating systems 类Unix操作系统

继承Unix设计,一定程度上遵循POSIX协议,都属于类Unix系统。目前市面上,除了Windows,常见到的操作系统基本上都是类Unix操作系统,比如BSD、System V、GNU/Linux。UNIX商标已经归属于The Open Group,The Open Group提出了一个协议Single UNIX Specification,只有完全通过该协议的审核,The Open Group才会准许该产品中使用UNIX。市面上绝大部分发行版并不能通过Single UNIX Specification,所以都不能在系统名称中使用UNIX,只能叫做类Unix系统。

GNU GNU's Not Unix! September 27, 1983

从GUN的名字也能看出,当时的出现是为了抵制Unix。Unix的出现极大的推动了计算机领域的发展,但是由于Unix wars导致当时的很多技术大佬对此很不满,这其中就包括了Richard Stallman。Richard Stallman创建GNU的主旨就是让人们可以自己完全控制在自己电脑上运行的各种软件包括操作系统:发布源码,可以下载、编译、学习、修改。Richard Stallman的提议得到了很多人的响应,很多工具被开发出来,包括大家熟知的:Emacs, bash, GCC, GDB, make等。

Copyleft 反著作权

这个很明显是针对于Copyright(著作权)。Copyleft意思是任何人可以基于任何目的对著作品进行修改使用发布等。

GNU General Public License GPL

这是大家在Linux下或者开源界最常见到的一个协议,它就是Copyleft的一个实例,由Richard Stallman编写。总体思想就是使用该协议发布的代码,允许任何人修改、允许任何方式收费(但是必须让付费者知道这是一个免费开源的产品)、但是使用GPL协议发布的代码也必须遵循GPL协议开源。

GPL协议是一个非常自由的协议,极大的方便了技术的传播。但是由于GPL中比较重要的一点是如果以发布为目的使用修改了GPL协议的代码,你的代码也必须遵循GPL协议。如果只是使用了一个GPL协议的功能或者在原来功能比较简单得的GPL源码上做了大量开发(比如BSD),导致所有的代码都要开源,这对商业公司来说是不可接受的。

GPL是一个非常理想的协议,也是GNU组织的初衷,就是技术无国界,大家靠着对技术的热爱进行分享和学习。很多技术大佬(真正的Hacker)都是偏执狂,对技术有着绝对的热爱,任何东西都需要自己了解和掌控,不允许私人或者某个组织公司独自拥有一个好的产品。

除了GPL,还有很多其他协议,我们比较熟悉的LGPL, MIT, BSD, Apache等,有些协议对商业是比较友好的,比如可以使用二进制(类库的形式)而不需要开源,或者可以任意使用源码用于开源或者商业用途而不受任何限制。

GNU Hurd GNU组织开发的系统内核

从上文中Richard Stallman提议修改POSIX名称也可以看出GNU组织与POSIX协议也有着千丝万缕的联系。

GNU最终也是想创建一个类Unix的系统,周边的工具都完成了(支持了POSIX),只差一个内核,但是GNU自家的内核Hurd一直不能满足要求,这时Linux流行了起来。

GNU toolchain

GNU组织开发了一系列的用于软件编译发布的工具,由于其好用(由众多技术大佬开发),免费,支持POSIX协议,所以基本上是现在开发编译的标准。

  • GNU make: an automation tool for compilation and build
  • GNU Compiler Collection (GCC): a suite of compilers for several programming languages
  • GNU C Library (glibc): core C library including headers, libraries, and dynamic loader
  • GNU Binutils: a suite of tools including linker, assembler and other tools
  • GNU Bison: a parser generator, often used with the Flex lexical analyser
  • GNU m4: an m4 macro processor
  • GNU Debugger (GDB): a code debugging tool
  • GNU Autotools (GNU Build System): Autoconf, Automake and Libtool

Cygwin MinGW等

有些软件介绍在Windows下如何编译的时候,需要下载Cygwin或者MinGW等,就是因为这些软件是在Windows下实现了POSIX协议,并且有GNU toolchain。

Linux

实际上应该称为Linux kernel,而市面上熟知的Linux系统,正确的应该称为GNU/Linux,这也是GNU组织一直强调的。

Unix流行其间,大家都在使用这个系统,也包括Linus Torvalds。但是Linus Torvalds使用的是其教授自己编写的一个类Unix操作系统Minix,因为各种原因Linus Torvalds想能否自己重新编写一个类Unix系统,完全从头开始,按照Unix的设计思路开发功能,代码与Unix没有任何关系,所以就在网络上发布了自己的想法,需求其他人的帮助。

Linus Torvalds的提议得到了很多人的响应,所以在Linus Torvalds的带领下一个成熟的系统内核很快就完成了迭代,可能功能并没有当时的Unix那么完善,但是已经可以用了。

Linux仅仅是一个内核,并不能是一款真正的系统,而这时的GNU组织看上了这一点(因为GNU现在只差一个内核),由于Linux又是GPL协议发布的,所以两边一拍即合,在很多人的努力下,把GNU和Linux kernel整合到一起,一个完整的GNU/Linux系统就诞生了。从这里可以理解为什么市面上的Linux发布版本要叫GNU/Linux了吧,这也是为什么GNU强调必须叫GNU/Linux,而不能因为一个内核把自己的功劳全占了单单叫做Linux。如果你仔细观察,会发现常见的Linux发行版本官方介绍的时候都会说是GNU/Linux。

由于Linux kernel是开源的,所以任何人和公司都可以拿来使用,这也涌现了大量的Linux发行版本:Debian, Ubuntu, CentOS, Red Hat Enterprise Linux, SUSE, openSUSE等。虽然Linux kernel是GPL协议,但是基于Linux kernel开发的其他组件,比如桌面系统KDE, GNOME确可以以其他协议发布,因为他们并没有修改使用Linux kernel,仅仅是遵循了Linux kernel的接口协议,这也是很多商业公司可以存活的原因。同样由于这个原因,也导致了Ubuntu可以基于Debian开发,CentOS可以基于商业软件Red Hat Enterprise Linux,因为上游基于GNU/Linux,有些东西必须是开源的,而大公司或者一个成熟的社区的内核版本肯定是稳定的,其他社区或者组织就可以拿来在其基础上继续开发。而像Red Hat Enterprise Linux或者Ubuntu卖的是他们的服务,因为系统越来越复杂,各种安装的软件漏洞等需要人维护,系统出现问题需要人调查,一个公司是没有这个精力和能力做这些事情的,如果有,它就可以经营一家类似于Red Hat的公司而不需要继续现在业务了。

Freax "free", "freak", and "x" (as an allusion to Unix).

一开始Linux名称为Freax,Linus Torvalds曾想用Linux,但是他觉着这样太自负了。后来Linus Torvalds的同事Ari Lemmke,也是当时存放Linux项目的FTP服务器的管理员,认为Freax不是一个好名字,在没经过Linus Torvalds同意的情况下把工程改名为Linux,后来Linus也认同了这个修改。

KDE GNOME

KDE(K(ool) Desktop Environment)是第一个Linux上的高级的桌面环境,但是是基于当时的商业软件Qt(虽然后来也开源了)开发的。GNU组织不能接受商业软件的使用,于是就研发了GNOME(GNU Network Object Model Environment)。这也是当前Linux桌面环境最流行的两个,还有一些其他的比如Xfce, MATE等。

Android

基于Linux kernel修改的操作系统。现在智能手机的两大阵营基于Linux kernel的Android和当时基于Unix的iOS。

总结

随着Linux的流行,Unix的市场被迅速挤压,如果没有Unix wars或者Unix选择开源,Linux也有可能不会出现(这也是Linus Torvalds表达过意思),GNU组织也有可能不会创立。Unix一直是一个优秀的系统,其上面的很多设计到现在都不过时,有些功能可能比Linux还要先进,比如Kqueue和Linux的epoll。

GUN/Linux的发布与Windows和Unix是有区别的,Windows是整个系统发布,内核和GUI是配套的,Unix也是(比如macOS),从来没有过Windows发布一个内核,然后界面可以有很多选择(类似于GNOME和KDE)。所以Linux的系统理论上比Unix更加碎片化(同样也更加繁荣)。

https://en.wikipedia.org/wiki/Multics
https://en.wikipedia.org/wiki/Bell_Labs
https://en.wikipedia.org/wiki/AT%26T_Corporation
https://en.wikipedia.org/wiki/Unix
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Berkeley_Software_Distribution
https://en.wikipedia.org/wiki/Internet_protocol_suite
https://en.wikipedia.org/wiki/GNU_Project
https://en.wikipedia.org/wiki/GNU_General_Public_License
https://en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/GNU_toolchain
https://www.gnu.org/
https://www.kernel.org/

标签:GNU,世界,Unix,开源,Linux,BSD,org
From: https://www.cnblogs.com/Leo_wl/p/17386602.html

相关文章

  • 【开源游戏】Legends-Of-Heroes 基于ET 7.2的双端C#(.net7 + Unity3d)多人在线英雄联
    Legends-Of-Heroes一个LOL风格的球球大作战游戏,基于ET7.2,使用状态同步 Main基于C#双端框架[ET7.2],同步到ET主干详情请看日志。(https://github.com/egametang/ET)注意:已经升级.Net7,请安装.Net7SDK.此游戏为ET7.2的一个实践项目demo,玩法主要是球球大作战类型的吃食物吃敌人/......
  • 开发必备,开源 or 免费的 AI 编程助手
    AI大模型的火热,让开发圈近来如虎添翼,各种各样基于AI技术的开发者工具和新范式不断涌现,尤其是Github和OpenAI共同推出的CopilotX,更是一骑绝尘。本文推荐一些开源or免费的AI编程工具,不妨试着用起来。CodeGeeX有人称CodeGeeX是国产之光,被认为是GitHubCopilot的......
  • SaaS化开源项目之HouseKeeper云上部署实践
    摘要:华为云DTSE技术专家从源码构建、应用部署到系统调测,详细解读云原生SaaS应用构建的全过程。本文分享自华为云社区《HouseKeeper云上部署实践》,作者:华为云DTSE。HouseKeeper是华为云开发者团队基于SaaS项目技术支持实践,采用微服务架构(SpringCloud),结合华为云服务能力开发的SaaS......
  • 最高等级!Apache RocketMQ 入选可信开源项目星云象限领导型象限
    2023 年4月21日,由中国信通院主办的OSCAR开源生态建设论坛在北京成功召开。本次论坛,中国信通院发布了可信开源项目星云象限。星云象限依托于可信开源项目指数中流行度、参与度、响应度、安全能力和法律合规五个指标,从项目可持续性与可信性两个维度,将可信开源共同体项目分为......
  • 基于.Net5+Vue+iView前后端分离通用权限开源系统
    在Github上,.Net通用的权限框架非常多,功能也都比较强大,但是对于很多初学者来说,想要从零学习框架的搭建,就比较困难了。所以,今天给大家推荐一套比较简单的前后端分离通用权限系统。项目简介这是一个基于.Net5+Vue+iView开发的、前后端分离通用权限系统,系统采用三层架构,该项目功能......
  • 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过OpenSourceInitiative组织通过批准的开源协议目前有58种。我们在常见的开源协议如BSD,GPL,LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选......
  • milvus 又一个开源的向量数据库
    以前简单介绍过一个基于rust的qdrant向量数据库,milvus也是一个类似的milvus一些特性快速支持非结构化数据可靠高可用&弹性混合搜索通用lambda架构,支持批以及stream处理参考架构说明因为GPT的火爆,最近一些向量数据库比较火了(支持ai的一些能力),milvus同时提供了......
  • 【攻防世界逆向】《getit》《no-strings-attached》《csaw2013reversing2》
    题目getit解法先用exeinfo打开看看文件格式无壳elf文件,放进ida64打开看看,并f5查看伪代码耐心的学习了一下。我先学了下面的文件操作fseek修改原指向stream流指针,按照第p【i】个位置从左开始数fputc把前面内容从上面的指针开始编辑不带格式化fprintf把内容写入流文......
  • 大世界需求
    1实现一个主要用于俯视角游戏的地图资源管理系统。2场景会很大,手机可能无法全内存加载。3至少要保证相机视野范围内资源加载到场景中。4如果视野范围内的资源达到数量限制,优先加载离相机近的。5场景中相同的空间位置,可能根据业务逻辑需要,在不同条件下显示不同的数据。比......
  • 多模态+大模型领域的开源数据集(持续更新中20230508)
     ConceptualCaption简称cc,minigpt4就使用这个数据集,一个大规模的图像文本配对数据集,包含超过30万个图像,每个图像都有5个人工描述。这个数据集的目的是为了促进计算机视觉和自然语言处理之间的研究交叉,可以用于图像检索、视觉问答等任务的训练和评估。ConceptualCaptions为......