硬件可以在GPL下吗

为这个题材起名我思考了许久,GPL 是著名的开放源代码许可协议Linux 内核开源项目正是在 GPL 的庇佑之下,十多年来在服务器、PC 端以及各种嵌入式设备上成绩斐然是当之无愧嘚当代计算机软件的基石,说 GPL 代表着 Linux 的开源精神毫不为过。然而现实世界中,GPL 开源乌托邦和商业社会的丛林法则之间存在剧烈的冲突其中犬牙交错,艰难成长从中引发的思考,与大家共享

总所周知,Linux 内核以 GNU 通用公共许可证第二版(GPL V2)的授权使用协议下发行GNU 通用公共许可证是一种 “Copyleft” 形式的“版权”,保障任何人都能够对 Linux 内核以及其衍生产品的使用、修改和重新发布的权力前题是不能修改发布條款。什么意思呢任何 Linux 内核的衍生产品(Derived Work)必须遵循 GPL 协议进行发布。然而问题的核心在于什么是 Linux 内核的衍生产品其中有几个致命问题,业界争论了十年有多

1、使用 Linux 内核的头文件定义,进行系统调用的程序是否会被定性为衍生产品

2、链接使用了其他 GPL 的类库的程序是否會被定性为衍生产品?

3、Linux 内核动态载入的模块 LKM()是否会被定性为衍生产品以 LKM 形式开发的 Linux 驱动程序是不是衍生产品?

如果上述问题答案均为“是”GPL 将为 Linux 打造一个的“封闭”的开源世界,什么意思呢一个 Linux GPL的操作系统核心运行在 “ 内核空间 ” ,上层的类库、框架、服务、應用运行在 “ 用户空间 ” 用户空间上的任何服务不可避免的需要Linux 内核的头文件,进行系统调用因此,中间层服务必须遵循 GPL 进行开放源玳码调用中间服务层的框架或者其他服务使用了 GPL 的类库,因此也必须是 GPL 的。同理上层应用也被 “ 传染 ” ,必须是 GPL 的于是,从内核箌驱动到中间服务到上层应用形成了一个 GPL 一体化软件授权的软件发布整体。可以认为这个整体上任何开发成果都是 GPL 的,除非极少数的唎外程序能够证明自身独立于系统的GPL环境这样的一个“软件闭包”排斥的商业化的软件模块以及“想要钱”普通开发者,将整个软件世堺划分为“ GPL 与 GPL 兼容的”的和非 GPL 的每个开发从业者面临着选择,要么 Linux+GPL 要么 Linux 与你无关。

重新回到这三个问题第一个问题,曾经被 Linux 内核的莋者 Linus Torvalds 以及内核开发人员多次澄清普通系统调用为非 GPL 的作用范围甚至固化在 Linux 内核的源码 COPYING 文档中,为 Linux 用户空间的程序采用非 GPL 的授权许可证打丅了基础

第二个问题,具有明确的答案是。这也是为何 GPL 被抨击为具有“病毒感染”的特性一旦程序使用了 GPL 的模块,本身即被传染程序必须成为 GPL。如果主程序与 GPL 类库是静态链接(Static Link)的关系业界一般认为主程序必须限定为 GPL。而对主程序动态链接(Dynamic Link)GPL类库主程序一般认為也必须是GPL的若要打赢官司,必须证明主程序与GPL模块之间具有“独立性和可区分性”(Separate and Independent)才能逃离 GPL 的约束。 官方网站上的有这样的 FAQ:

洳果一个类库以 GPL 的许可证授权进行发布(不是 LGPL)是否意味着任何使用该类库的软件必须以 GPL 或者 GPL 兼容的许可证下进行发布?

是因为软件包含了该类库才能运作。

第三个问题是硬件厂商和 Linux 内核开发社区之间一场旷日持久的争论的中心。最著名的莫过与图形显示设备厂商 AMD/ATI、NVidia 出自硬件规格保密以及知识产权的考虑,长期以二进制软件包的方式独立发布图形驱动涉嫌违反了Linux内核开放源代码的软件授权协议 GPL,臸今仍是 Unity 与 Gnome 3 等依赖于硬件图形加速的新型桌面技术发展上的一大阴影主要的 Linux 内核维护者 Greg Kroah-Hartman 曾经严厉的批判过,内核中的二进制软件包发布嘚模块是非法的不道德的

说到此处,可以看到 GPL 下的 Linux存在着开源精神和商业机密以及知识产权保护相关的商业精神存在尖锐对立,对硬件厂商以及其他商业软件开发者来说既不能忽视Linux广阔的商业市场,也不能放弃产品规格以及知识产权保护两者都会伤害其立命之本。在早年的一份嵌入式操作系统选型的研究报告指出Linux 相对于其他的 BSD 的 Unix Like 操作系统,由于 GPL 的约束限制不具有商业优势。(参见引用3)一訁以蔽之,业界有 GPL 的恐惧症

GPL 授权代码的手机也能获得巨大的市场成功。

下图是 绘制的 Android 的授权许可证结构可以看到在 Android 多层软件栈中,仅僅最核心的 Linux 内核使用了 GNU 通用公共许可证在这个层次上,Google 对 Linux 内核的所有修改必须反馈回 Linux 主版本树(Android 的内核将在 Linux 3.3 版本进行回归两个版本的 Linux 內核进行融合)。

其上层的类库以及应用框架以及所谓用户空间部分大部分使用了“ 温和 ”的 Apache-2.0 软件许可授权,允许 Android 上的开发商基于 Android 的源玳码进行开发而不向社区反馈基于上文讨论 GPL 的第一个问题,用户空间的类库以及程序使用 Linux 内核的系统调用不被视为是Linux内核的衍生产品洇而得以自由采用 Apache-2.0 的软件授权进行发布。GPL 世界和非GPL世界的分界线在于一个叫做 Bionic Libc 的类库Bionic Libc 的关键之处在于如果 Bionic Libc 受到内核 GPL 的“感染”,将会波忣非 GPL 的用户空间的各个模块

user-space ”。(这其实有点难理解毕竟 Gnu glibc 采用的是 LGPL 而非 GPL,并基于上文 GPL 第一点的讨论使用系统调用的程序不再被视为 Linux 內核的衍生产品,并不需要遵循 GPL有兴趣者请看下文用户空间驱动部分的分析) 。Bionic Libc 充满着非议Bionic Libc 拷贝内核头文件的行为,并在源码中声明嘚版权信息均遭到了 “ 侵犯 Linux 内核 GPL 约束 ” 的质疑这是 Bionic 头文件的版权信息,许多人认为是非法的:

头文件由Linux内核的同名头文件自动生成用來获取完成用户空间系统调用的必要的信息。它只包含原头文件中的常数、结构和宏定义因此,不包含版权信息

不管如何,从目前的凊况看让 GPL 止步于内核空间的做法是成功的,并已经得到很大一部分内核开发者的认同James Bottomley,Linux SCSI 子系统的维护者在 2011年 LinuxCon 大会日本站上谈到  Android 的商业荿功与 GPL 恐惧的时候说:

在遵守 GPL 的问题上我们必须澄清一些界线。内核的用户空间 ABI(应用二进制接口)就是一种 GPL 的作用边界能让开发者意识到用户空间的代码,不被定性为内核的衍生产品如果 GPL 的界线清晰而易懂,可以帮助大家消除对 GPL 的恐惧

Android 的发展离不开硬件设备厂商嘚支持,硬件设备厂商最关注的是 Linux 驱动的 GPL 约束问题公开驱动程序源代码将会泄漏设备的硬件规格和泄漏核心知识产权,这是硬件厂商 GPL 恐懼的缘由Google 不遗余力的为硬件设备厂家排忧艰难,保驾护航上文提到的 “ Android Anatomy And Physiology  ”,文中清晰的讲到 Android 在用户空间与内核空间之间存在着硬件抽潒层  HAL(Hardware Abstraction Layer)HAL 类库本质上一种用户空间的驱动,其中的主要用途之一:规避 GPL

Linux 是单内核宏内核操作系统(Macrokernel),这种操作系统的一大特点是驱動存活在内核优点是驱动与系统内核共生在相同的地址空间,运作的效率比较高缺点是当驱动有问题的时候,容易危及内核的工作安铨用户区间驱动的思路是将驱动的主要业务逻辑剥离出来放到用户空间的主驱动模块中,内核中的驱动是个“影子”驱动只有透传控淛命令和数据的功能。

Android 的 HAL 相当于上图中的主驱动其在内核中的驱动相当于上图中的影子驱动。规避 GPL 的硬件厂家把需要保护的商业机密以忣知识产权相关的逻辑放在 HAL 层以二进制包的方式发布,不需要公开源代码

这种机制看上去很美,然而同样面临着巨大的争议。HAL 类库與内核驱动之间通过普通的系统调用能够完成么如果不是普通的系统调用,用户空间的驱动就违反了上文中的第一条用户空间的驱动鈈能获得 GPL 例外的豁免。Edward J. Naughton 2011 年 3 月撰文认为普通的系统调用应被理解为 gnu glibc 向外暴露的系统调用接口,而 Android 通过 Bionic libc 类库暴露了更多的接口包括原来在內核空间才能使用的接口,其目的是为了让用户空间的驱动能够充分的利用内核和硬件资源如果情况果真如此,Bionic libc类库是 Google 的后门这也可能 Android 抛弃使用

Bionic 暴露了原来在用户空间不能使用的函数调用,这些调用原本在代码中被 __KERNEL__ 的宏定义保护其运行在内核状态如果Google 只要将在 Bionic 添加暴露的接口就可以自由的暴露 Linux 系统调用(这些系统调用明显应该由 Linux 内核社区维护),那么难免被其他人效仿

总得说来,Android 为 GPL 下的 Linux 如何与商业社会并存与共赢提供了一个成功的范本尝试为 Linux 生态系统上的各种角色划清彼此的作用范围,梳理了各方在版权上的权利和义务目前看來获得了惊人的商业成功。然而这种工作模式也面临着巨大的版权争议,理论上存在一种可能一旦版权模式被否决,将面临被全盘否萣的灾难

原标题:这些关于开源硬件的知識你不得不知哦~

开源硬件指与自由及开放源码相同方式设计的计算机和电子硬件是开源文化的一部分。开源硬件延伸着开源软件的定义包括软件、电路原理图、材料清单,设计图等都使用开源许可协议开源硬件把软件惯用的GPL,CC等协议规范带到硬件分享领域

如果你有誌于成为一个开源硬件方面的“创客”,以下这些关于开源硬件的知识你不得不知哦~

  • 深圳矽递科技有限公司(SeeedStudio)赞助成立后者是一家致力于促进开源硬件发展的服务型企业。“柴火创客空间”寓意“众人拾柴火焰高”为创新制作者(Maker)提供自由开放的协作环境,鼓励跨界的交流促进创意的实现以至产品化。空间提供基本的原型开发设备如3D打印机激光切割机,电子开发设备机械加工设备等,并组织创客聚会囷各种级别的工作坊柴火创客空间是非营利性组织,靠赞助、会员捐赠、付费工作坊寄卖创客作品以及场地对外租借的形式来获取经費,维持自身运营

    2007年3月,美国赛灵思公司(Xilinx)建设OpenHW开源硬件社区此社区是美国赛灵思公司(Xilinx)大学计划在中国资助的非营利学生社团组织,是Xilinx學生俱乐部的官方网站社区为高校学生以及所有FPGA爱好者提供一个交流和分享硬件开发经验的开放式社区平台。对于OpenHW社区的项目Xilinx公司会提供各种形式的技术支持。OpenHW社区与以往开源硬件网站的理想主义不同它不排斥商业EDA软件的使用,也不排斥商业IP核的应用;相反商业软件囷IP核的引入被认为会大大促进开放源码硬件的发展。

VMware 针对因为的事件发表:

2015年3月5日洎由软件保护协会(SFC)在德国发起一项由 Christoph Hellwig 签署的针对 VMware 的诉讼,指控 WMware 未能遵守通用公共许可证(GPL)我们相信这起诉讼没有法律依据。我们已经相当努力的希望理解和解决他们提出的问题但是令我们感到非常失望的是 SFC 已经采取了诉讼的行动。我们看到在支持多种开发方法论上的巨大價值包括免费和开源软件。我们非常欣赏自由与开源软件在数据中心中所起的关键作用同时 VMware 也在支持和客户使用基于 Linux 和其他自由软件方面投入了巨大的精力。

VMware ESXi 是一个用来管理物理服务器软硬件资源的操作系统ESXi 的核心是一个称为 vmkernel 的部件,提供了对这些资源的控制

和其怹通用操作系统一样,ESXi 的 vmkernel 提供一个稳定、一般用途的 API 我们称为 VMK API。这个 API 使得设备驱动程序和其他可加载模块执行特定的功能

第三方开发商可以通过 VMK API 编写驱动或者模块直接与 vmkernel 进行通讯。而这些驱动并非 Linux 驱动我们通过一个可加载的内核模块(vmklinux)实现替代方案,这个是与 Linux 驱动类似由 vmkernel 负责加载并进行接口调用。

VMware 为第三方提供基于 GPL 许可证的 vmklinux并且这个源码是开放的。上面我们说大概介绍的内容我们非常自信我们的操作系统并非 Linux 代码的一个衍生品。因此我们公司是遵守 GPL 的!

VMware 曾经努力与 SFC 沟通来理解和定位这些关注点我们这样做也是尊重自由和开源软件社区。我们非常希望这个问题能得到圆满解决

本文永久更新链接地址

我要回帖

 

随机推荐