当前位置: 首页 > news >正文

开源软件协议GPL及协议隔离

引言

开源软件目前在软件市场上占有相当大的比重,各种开源社区对于软件的开发和推广起着至关重要的作用。尤其是一些非常重要的基础软件,也都是开源软件,如编译器中的GCC、Clang等。几乎可以说,没有开源软件的话我们将寸步难行。

开源软件一般都会遵循一些开源软件协议,如GPL、BSD、MIT、Apache等。这其中,GNU社区的GPL协议又是其中最广泛使用的,但是由于GPL协议对版权的一些特殊要求,使得在商业软件和商业产品中使用GPL协议的开源软件要十分小心,要避免被它的传染性所误伤。

本文从GNU社区创立的历史原因和创始人的性格开始,详细剖析GPL的概念的起源和发展,分析其Copyleft版权要求的独特性,提出一些避免GPL过度保护的方法和样例,以利于在商业产品中合理合法的使用遵循GPL协议的开源软件。

  • 自由软件和GNU

自由软件的源起

提起自由软件,首先要介绍一下自由软件的创始人理查德·马修·斯托曼(Richard Matthew Stallman, RMS),他是个美国人,于1971年(16岁)进入哈佛大学学习,也是在这一年进入麻省理工学院人工智能实验室工作和学习。当时他们的实验室使用DEC的PDP-1小型机,他们在这个机器上开发了一个叫ITS的分时操作系统,他的工作就是开发维护ITS。当时ITS的开发人员学习很有激情,成立了一个软件共享的社区组织,任何人只要想要他们的程序,他们都会无偿的提供,他们非常享受这种开放的学习和工作气氛。

到了上世纪的80年代,DEC公司的PDP-10架构发生了大的变化,ITS不能继续工作,而且人工智能实验室的程序员们也几乎都离开了,因此只能使用DEC公司提供的商用操作系统,但这个操作系统是受商业版权保护的。并且在80年代后,几乎所有新出现的计算机架构上都是类似这种受保护的操作系统。

这使得Stallman极大的不舒服,他感受到了强烈的不自由。他想要改变这个情况。他想重新建立一个自由软件的环境,因此他开始着手建立一个自由软件的社区。

GNU系统

建立一个自由软件环境,首先需要一个操作系统,因为操作系统是最基础的软件。当时最流行的操作系统是UNIX,他想将该系统做成与 Unix 兼容,这样的话它容易被移植,并且 Unix 用户可以容易地转换到它。 他给起了GNU 这个名字,依照黑客的传统,这个名字是递归的「GNU's Not Unix」首字母缩写。[1]

一个操作系统不能只包括一个操作系统内核,它还需要包括像编辑器,编译器,汇编器,shell等许多应用程序。因此,GNU操作系统需要包括很多软件。

因此,完成一个gnu操作系统是一个庞大的工程。因此,开始的时候很多软件尽量使用现有的自由软件来做。

1984年,Stallman从MIT辞职了,为了gnu的项目,他也必须辞职,因为如果他还在MIT的话,他写的软件的版权人将会是MIT,MIT可能将软件变为私有软件。这与他的初衷就是不匹配的。

为了整个系统的逐步开发,Stallman首先需要写出编辑器和编译器,于是Emacs和GCC诞生了。后来FSF(Free Software Foundation)建立后,又开发了Glibc,BASH等一系列享誉软件世界的软件。

1990年,GNU 系统几乎都已经快完成,唯一主要遗漏的部件是操作系统内核。于是gnu决定基于Mach微内核架构开发新操作系统Hurd。

目前GNU 自己的内核 Hurd 仍在开发中,离实用还有一定的距离。因此,现在的 GNU 通常使用 Linux 内核(1991年,Linus Torvalds在GPL条款下发布)。这样的组合即为 GNU/Linux 操作系统。因此不能单独将整个操作系统环境通称为“Linux”。[2]

虽然GNU还没有发布出成熟的操作系统内核,但是其现有的成绩已经可以标榜史册了。

自由软件

http://www.jsqmd.com/news/505387/

相关文章:

  • 无刷直流电机六步换相法实战:从霍尔信号到PWM输出的完整流程(基于STM32F4)
  • Fluent 激光电弧复合焊模拟的奇妙之旅
  • SQL注入零基础学习02
  • C# 开发西门子 PLC 通信程序:开启 S7 系列产品通信之旅
  • 代码随想录与Hot 100重合题目
  • 2026年3月GESP真题及题解(C++五级):找数
  • UCD90160A 简易使用手册 + 软件配置说明
  • springboot基于vue的野生动物生物保护网站f2584z30
  • 深度学习环境一键搞定:PyTorch 2.9镜像快速部署指南
  • RePKG:解锁Wallpaper Engine资源宝库的专业工具
  • Qwen3-32B大模型私有部署教程:WebUI中session隔离与用户状态管理
  • LIBERO Notebooks 实战速查手册
  • C裸机代码可信性革命(NASA/ISO 26262 ASIL-D级验证实录):从手动测试到数学证明的范式跃迁
  • Harmonyos应用实例134:平面直角坐标系寻宝
  • 终极指南:如何快速提取和转换Wallpaper Engine资源文件
  • AI一对一改简历工具横评:应届生、转行、社招怎么选
  • 好写作AI本科论文摘要与关键词精准提炼的5个技巧:从全文到精华
  • DeepSeek-R1推理模型进阶使用:解锁Llama-8B更多隐藏功能
  • Halcon实战:5分钟搞定线序颜色检测(附完整代码解析)
  • 抖音直播数据抓取终极指南:3步实现实时弹幕监控
  • 黑马点评项目实战:从零搞定Redis 5.0+与MySQL 8.0配置,避开版本不兼容的那些坑
  • 零基础搞定Clawdbot+Qwen3:32B:私有化AI助手部署实战
  • OpenClaw:为个人与企业带来的,不只是效率,更是工作流革命
  • 开源大模型轻量化落地:nanobot替代Clawdbot的99%代码精简部署教程
  • 程序员必备:5种MATLAB编辑器护眼色方案测评(含绿豆沙/夜间模式/自定义)
  • Deepin Boot Maker:3步搞定Linux启动盘制作,告别命令行恐惧症
  • 让论文插图从“凑数”到“点睛”的方法
  • 好写作AI硕士论文图表描述处理的5个技巧:从数据到叙述
  • 告别投稿焦虑!Elsevier Tracker如何用3分钟安装拯救你的科研时间
  • centos7忘记密码,通过单用户模式重置