Java国家/地区使用限制条款引发争议

喜欢就关注我们吧!

今天 JDK/Java 15 发布(看今天推送的头条),在 RI 包里有开发者发现其标注了一则国际使用限制条款:

由于某些国家/地区的知识产权保护和执法有限,因此 JDK 源代码只能分发到授权的国家/地区列表中。如果要从不在此列表中的国家/地区进行下载,则将无法访问源代码。我们正在不断审查此列表,以添加其他国家/地区。

有开发者和知识产权专家指出,此条款意味着如果 JDK/Java(Oracle)认为有国家不能很好地进行知识产权保护,那么便可以限制其使用。

有人对此提出疑问:OpenJDK 根据 GPL 开源协议进行分发,这种限制类型的条款是否有悖 GPL 协议?

实际上,JDK/Java 15 使用的开源协议是 GPL v2,该版本下有一条与 JDK/Java 15 的国际使用限制条款类似:

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

卫Sir译:如果在某些国家因为专利或版权的问题难以分发,那么版权所有人在分发时,可以对分发的地区加以明确限制,以排除那些国家。在这种情况下,这些限制不认为是对本协议的修改。(译者注:算一种例外吧。)

所以理论上 JDK/Java 15 中这样做并没有违反 GPL v2 协议。而在 GNU 发布的最新 GPL v3 许可证中,已经没有了类似的国家和地区限制条款。

但也有业内人士指出,作为 OpenJDK 项目的实际管理者,Oracle 是否有足够依据和健全的评估体系,去判断国家/地区的专利或版权相关法规是否健全,并以此为理由对整个国家/地区做出限制呢?

值得一提的是,OpenJDK 中的这个国家限制条款并不是新增的,早在 6 年前就已经有开发者提出了质疑。这名开发者把该条款发在 GNU 论坛上,GNU 的管理者在当时还询问了 RMS 等权威。

GNU 咨询委员会成员 Jason Self 引用 FSF 章程中对自由软件的定义对此进行了答复:在国际上,有时政府的出口管制条例和贸易制裁会限制人们分发自由软件,软件开发者没有权力消除或推翻这些限制,但他们可以和必须做什么?就是拒绝将它们加入自由软件的的使用限制条款。这样一来,在这些政府的管辖范围之外,这些限制就不会对使用自由软件产生什么影响。“仅提及出口法规的存在,而不是将限制作为许可证本身的条件,是可以接受的,因为它不会直接限制到用户。”

在今天国际环境日趋严峻的情况下,这个话题相比 6 年前初次被提及,似乎得到了更多关注,当年这一问题没有被很好地讨论,如今重新被提出来,希望这一次能够引起足够的重视。也希望更多专业人士出来积极探讨。

以 6 年前那一帖子里 Jason Self 的一句话作为结语:

If an export regulation is actually trivial for free software, then requiring it as a condition is not an actual problem; however, it is a potential problem, since a later change in export law could make the requirement nontrivial and thus render the software nonfree.

如果出口管制对于自由软件的影响微不足道,那么限制条款或许不是什么问题,但是,潜在问题是,后续如果出口管制法律变更使得整体要求变得严苛,那么会使软件不自由。

相关链接:

  • https://jdk.java.net/java-se-ri/15

  • https://gnu-linux-libre.nongnu.narkive.com/0zQAAfvr/openjdk-international-use-restrictions

  • https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

  • https://www.gnu.org/licenses/gpl-3.0.html

▼ 往期精彩回顾 ▼

Ruby 3 将于圣诞节发布,松本行弘分享编程语言的困境

Linus 回应言行不当争议:Debian 文化问题

强迫症福音!玩 Flappy Bird 怎样可以拿到 2000 高分

华为鸿蒙正式开源,进入开放原子开源基金会

中国终于有开源基金会了!

                     

觉得不错,请点个在看呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反射的基本知识(详解)

一:反射的引出 1:问题 比如我们给出一个student类 其方法show(),我们将其写入配置文件中;现在我们来一个新的需求说是要改变重写一个show()方法 show()2,那么如何在不修改源码的情况下进行修改,这时我们通过反射就可以完成 2:过程 student类&#xf…

.NET 5.0 RC1 发布,离正式版发布仅剩两个版本,与 netty 相比更具竞争力

原文:http://dwz.win/Qf8作者:Richard翻译:精致码农-王亮说明:1. 本译文并不是完全逐句翻译的,存在部分语句我实在不知道如何翻译或组织就根据个人理解用自己的话表述了。2. 本文有不少超链接,由于微信公众…

一个例子带你搞懂python作用域中的global、nonlocal和local

在编程中,只要接触过函数的,我相信都理解什么是全局变量和局部变量,概念比较简单,这里就不做解释了。在python中,用global语句就能将变量定义为全局变量,但是最近又发现有个nonlocal,一时搞不太…

初识ABP vNext(10):ABP设置管理

点击上方蓝字"小黑在哪里"关注我吧定义设置使用设置前言上一篇介绍了ABP模块化开发的基本步骤,完成了一个简单的文件上传功能。通常的模块都有一些自己的配置信息,比如上篇讲到的FileOptions类,其中配置了文件的上传目录&#xff0…

类加载机制(整个过程详解)

一:背景 类加载机制是在我们的真个java的运行阶段中的其中一个阶段。 二:什么是快乐星球(类加载机制) 我们编写的 Java 文件都是以.java 为后缀的文件,编译器会将我们编写的.java 的文件编译成.class 文件,简单来说类加载机制就是jvm从文件系统将一系…

leetcode860. 柠檬水找零

一:论语 这里的小不忍指的是一方面我们受到挫折而控制不住自己而大发脾气&#xff0c;还有一方面指的是我们的过于优柔寡断&#xff0c;对于自己或者他人的过失&#xff0c;不忍心加以责罚。 二:题目 三:上码 class Solution { public:bool lemonadeChange(vector<int&g…

跟我一起学.NetCore之Asp.NetCore启动流程浅析

前言一个Asp.NetCore项目&#xff0c;知道大概的启动流程是有必要的&#xff0c;比如后续遇见配置信息覆盖等相关问题时也大概知道是什么原因&#xff0c;了解原因之后&#xff0c;再去搜索引擎找答案&#xff0c;否则目标不明确&#xff0c;茫茫人海怎么会一下找到自己想要的&…

leetcode406. 根据身高重建队列

一&#xff1a;你不一定逆风翻盘&#xff0c;但请一定向阳而生 二&#xff1a;题目 三&#xff1a;上码 class Solution { public:/**解析题意:这个给出的people的数组中,我们需要根据其元素people[i] [hi,ki];然后根据其ki来表示大于hi身高的人的个数&#xff0c;来进行排序…

.NET Core 下使用 RabbitMQ

介绍RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式官网&#xff1a;https://www.rabbitmq.com/dotnet.h…

leetcode452. 用最少数量的箭引爆气球

一:论语 少些自我感动&#xff0c;多谢反思&#xff0c;时刻警惕自己是否在假装很努力&#xff0c;自己懂不懂 自己会不会 自己想要什么 只有自己 最清楚 二&#xff1a;题目 三:上码 class Solution { public:/**思路:1.这道题类似无重叠空间,我们先按每个气球的右边界升序…

leetcode435. 无重叠区间

一&#xff1a;论语 道不同 不相为谋 我们没有理由拿着自己的评判标准 去看待别人所经历的事情&#xff0c;重来就没有真正的感同身受&#xff0c;我们能做的就是尊重他人的看法 &#xff0c;保留自己的态度。 二&#xff1a;题目 三:上码 class Solution { public:/**思路:…

Swagger扩展为你添油加气

关注架构师高级俱乐部开启架构之路不定期福利发放哦~Leon读完需要4分钟速读仅需 2 分钟介绍一款Swagger扩展日常接口开发中都需要用到Swagger来生成接口文档并用 Swagger 自带支持的模拟请求进行测试&#xff0c;但是需要支持认证或者上传文件等操作需要自行去按接口进行开发才…

leetcode763. 划分字母区间

一&#xff1a;论语 保留自己的态度&#xff0c;尊重别人的看法&#xff0c;不强迫别人按照自己的意愿做事。 二:题目 三:上码 class Solution { public:vector<int> partitionLabels(string s) {/**思路:1.在这里我们选取的数据结构是map容器,我们只要下记录每个字母…

跟我一起学.NetCore之依赖注入

前言现阶段而言&#xff0c;依赖注入相关组件如果不会用一两个&#xff0c;感觉在Code的世界里肯定是落伍了&#xff0c;最起码得有工厂模式的思想&#xff0c;知道这样做的好处&#xff1b;提及到依赖注入&#xff0c;通常会关联出两个概念&#xff1a;Ioc(控制反转)和DI(依赖…

跟我一起学.NetCore之依赖注入作用域和对象释放

前言上一小节简单阐述了依赖注入及Asp.NetCore中自带依赖注入组件的常规用法&#xff0c;其中提到容器管控了自己创建对象的生命周期&#xff0c;包含了三种生命周期&#xff1a;Singleton、Scoped、Transient&#xff0c; 对于Singleton、Transient相对于Scoped来说比较好理解…

leetcode738. 单调递增的数字

一:芭比Q了 又掉一个粉 啊呜呜呜呜呜 如果作为一个领导者来说&#xff0c;首先就是要以身作则&#xff0c;自己都做不到 &#xff0c;那就没什么威信去要求手下人按照要求去做 二:题目 三:上码 class Solution { public:int monotoneIncreasingDigits(int n) {/**思路:1.这…

大揭秘| 我司项目组Gitlab Flow DevOps流程

长话短说&#xff0c;本文全景呈现我司项目组gitlab flow && devopsGit Flow定义了一个项目发布的分支模型&#xff0c;为管理具有预定发布周期的大型项目提供了一个健壮的框架。DevOps 强调的是团队通过自动化的工具协作和高效地沟通来完成软件的生命周期管理&#xf…

leetcode714.买卖股票的

一:题目 二&#xff1a;上码 class Solution { public:int maxProfit(vector<int>& prices, int fee) {/**思路:*/int ans 0;int minPrice prices[0];//最低时买入for(int i 1; i < prices.size(); i) {//低价买入minPrice min(minPrice,prices[i]);if(price…

C++ 学习之旅(1)——编译器Compiler

简单来说&#xff0c;由C代码文件生成可执行文件的过程如下&#xff1a; #mermaid-svg-GQamCVEXMVkYEemz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GQamCVEXMVkYEemz .error-icon{fill:#552222;}#mermaid-svg-…

掌握Rabbitmq几个重要概念,从一条消息说起

RabbitMQ 是功能强大的开源消息代理。根据官网称&#xff1a;也是使用量最广泛的消息队列。就像他的口号“Messaging that just works”&#xff0c;开箱即用使用简单&#xff0c;支持多种消息传输协议&#xff08;AMQP、STOMP、MQTT&#xff09;。一个应用程序或者服务如何使用…