Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >此修改后的BSD许可证是否与GPL兼容?

此修改后的BSD许可证是否与GPL兼容?
EN

Software Engineering用户
提问于 2013-02-05 15:45:39
回答 3查看 1.1K关注 0票数 2

我正在开发开源项目,该项目使用来自FlatAssembler项目的源代码,该项目使用以下许可,基于BSD 2-子句,并在文本末尾添加了一个附加子句。

因此,问题是:

  1. 这个附加条款有什么变化?
  2. 使用此代码并在GNU GPL下授权我的项目合法吗?(最初的BSD 2条款许可与GPL兼容,但这一项似乎不兼容。)

平面汇编程序版本1.71版权(c) 1999-2012年,Tomasz Grysztar。版权所有。只要遵守以下条件,本项目可免费用于商业和非商业用途。版权仍然是Tomasz Grysztar,因此代码中的任何版权声明都不会被删除。允许以源和二进制形式重新分配和使用,不论是否修改,只要满足下列条件:

  1. 重新分发源代码必须保留上述版权通知、此条件列表和以下免责声明。
  2. 二进制形式的再发行必须复制上述版权通知、本条件列表以及the文档和/或分发所提供的其他材料中的免责声明。

本软件由版权持有人和贡献者“如实”提供,任何明示或默示保证,包括但不限于对适销性和适合某一特定用途的默示保证。在任何情况下,不得对任何直接、间接、附带、特殊、示范性或间接损害(包括但不限于采购替代货物或服务;损失使用、数据、或利润;或业务中断)负任何责任,不论是在合同、严格责任、或过失(包括过失或其他方面)因使用本软件而产生的任何责任理论上,即使被告知这种损害的可能性。本代码的任何公开版本或衍生产品的许可证和分销条款不得更改。也就是说,不能简单地复制该代码并将其置于另一个分销许可证(包括GNU公共许可证)之下。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2013-02-12 15:05:05

我收到了由CITnet JIRA提供的关于功能支持的官方答复:

使这一特定的“类似BSD”的许可变成“类似于版权的”的条款是:“本代码的任何公开版本或衍生产品的许可证和发行条款都不能更改。也就是说,不能简单地复制该代码并将其置于另一个分销许可证(包括GNU公共许可证)之下。“然而,版权字符被明确地限制在源代码中(就像弱的或适度的版权许可,比如LGPL或MPL)。对于合并的对象代码,不存在“病毒性”。因此,只要您自己的代码的源文件和“FlatAssembler”的源文件是独立的,并且在不同的目录中分离,您就可以将整个项目一起编译在一个可执行文件中(这是这两组源文件的产物),并且授权您授权它如下:“该项目< XXX >(源代码和二进制文件)在EUPL下是受版权保护的< you,you >,但在存在其他特定版权许可的特定源代码文件时除外。”

因此,在这种情况下,这应该是正确的答案,由律师提供。

票数 0
EN

Software Engineering用户

发布于 2013-02-05 22:26:44

通常的IANAL适用等。

在我看来,似乎作者试图将BSD许可转化为病毒许可,要求原始许可条款对此和任何派生工作保持不变。

虽然这是一个完全可行的想法,但我怀疑它在任何情况下都能在法庭上站得住脚-- GPL的各种版本都相当长,而且有一个很好的理由必须这样做。病毒许可是一件微妙的事情,因为它走的是一条细枝末节--你必须仔细定义什么是“源”,什么是“二进制分布”,什么是“派生工作”等等,同时避免与可能使许可部分无效的现行法律发生冲突。更宽松的许可,如BSD-2,可以短得多,原因很简单,因为它们不需要做这些区分:只要你保留版权通知和作者信用,你可以随意复制和修改。

这个许可的后果可能有点不清楚:可能最后一个条款是无效的,这将使它等同于普通的BSD-2;或者它可能凌驾于常规BSD-2所赋予你的大部分自由之上,这将使它比GPL更具限制性。

问题是作者试图在BSD-2下发布,但同时禁止病毒许可下的再分配,这是矛盾的,因为禁止再分配基本上会使许可证本身病毒化。

撇开那些理论上和法律上的废话不说,最明显的解决办法是联系作者并请求允许;如果他对你的项目中包括他的代码没有意见,那就没有问题了。

票数 6
EN

Software Engineering用户

发布于 2013-02-05 16:44:38

免责声明: IANAL!

附加子句没有做任何条件1已经做不到的事情,因此它没有意义:

"1.重新分发源代码必须保留上述版权通知、本条件列表和以下免责声明。“

这已经说过,基本上你不能改变许可证。因为“上述版权公告”、“本条件列表”和“以下免责声明”构成了整个许可。你什么都改变不了。

另外,请注意添加无用的额外子句如何破坏许可证的组织。条例草案第1及2条(“本条件清单”)指“以上版权公告”及“以下免责声明”。这意味着,条件列表后面的所有内容都是免责声明。因此,在免责声明之前,必须将任何附加条件添加到列表中。不应在免责声明后添加附加条件。

许可证与GPL兼容,因为您可以在GPL编辑的程序中使用该源文件。通过在程序中包含BSD许可模块,您不会将这些模块的源代码许可证更改为GPL。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/186046

复制
相关文章
mybatis的逆向工程_mybatis逆向工程多表查询
逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的逆向工程生成的都是单表操作, 1:mybatis逆向工程开发文档:
全栈程序员站长
2022/09/24
6760
mybatis的逆向工程_mybatis逆向工程多表查询
mybatis逆向工程
就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。
西西嘛呦
2020/08/26
5430
mybatis逆向工程
逆向工程——栈[三]
栈是计算机科学里最重要的且最基础的数据结构之一。 从技术上讲,栈就是CPU寄存器里面的某个指针所指向的一片内存区域。这里所说的某个指针通常位于x86/x64平台的ESP寄存器/RSP寄存器,以及ARM平台的SP寄存器。 操作栈最常见的指令是PUSH和POP,在 x86 和 ARM Thumb 模式的指令集里都有这两条指令。 PUSH指令会对ESP/RSP/SP寄存器的值进行减法运算,使之减去4(32位)或8(64位),然后将操作数写到上述寄存器里的指针所指向的内存中。 POP指令是PUSH的逆操作:他先从栈指针(Stack Pionter,上面三个寄存器之一)指向的内存中读取数据,用以备用(通常是写到其他寄存器里面),然后再将栈指针的数值加上4或8. 在分配栈的空间之后,栈指针,即Stack Pointer所指向的地址是栈的底部。PUSH将减少栈指针的数值,而POP会增加它的数值。栈的“底”实际上使用的是整个栈的最低地址,即是整个栈的启始内存地址。 ARM的栈分为递增栈和递减栈。递减栈(descending stack)的首地址是栈的最高地址,栈向低地址增长,栈指针的值随栈的增长而减少,如STMFA/LMDFA、STMFD/LDMFD、STMED、LDMEA等指令,都是递增栈的操作指令。
HACK学习
2019/08/05
8940
mybatis逆向工程
mysql-connector-java-5.1.28-bin.jarjava连接mysql包
用户10325771
2023/03/14
3980
mybatis逆向工程
mybatis逆向工程
mybatis逆向工程的作用是根据数据库里的表结构自动生成实体类,映射文件,和接口。 和hibernate的自动建表相反。
Mshu
2018/10/31
1.1K0
逆向工程----MBG
逆向工程 逆向工程概念 MBG概念 步骤1: 导入相关依赖 引入mybatis-generator.xml配置,建议从官网文档粘贴后,进行配置修改 使用代码运行,也可以用命令行 效果 小tips 使用插件方式启动mbg,需要在build标签中进行设置,以及引入最开始给的插件依赖 MBG的具体使用看这篇文章 逆向工程概念 ---- MBG概念 ---- 步骤1: 导入相关依赖 <!--mybatis的逆向工程--> <dependency> <
大忽悠爱学习
2021/11/15
3930
APK逆向工程
APK(android Application PacKage)文件是安卓app的安装文件,其实就是一个zip或rar压缩包,把apk后缀改为zip,即可解压得到一堆安卓相关文件。
李小白是一只喵
2020/11/24
1.2K0
APK逆向工程
漫谈逆向工程
逆向工程,原名Reverse Engineering,简称RE。关于其书面介绍我就不复制粘贴百度百科了,简而言之就是从发布的产品中反向分析其程序逻辑和算法——基于各种目的。
evilpan
2023/02/12
1.1K0
漫谈逆向工程
mybatis逆向工程
三、点击maven,在点击Plugins,找到mybatis-generator:generate 双击即可运行!
栖西
2023/10/17
2270
mybatis逆向工程
Android逆向工程
在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的。然而,目前无论是软件加固方式,或是数据处理能力后台化,还是客户端数据真实性验证,都有了一定积累和发展,让此“懒技术”不再是破解修改的万金油。再者,阅读汇编指令,函数指针替换,压栈出栈等技术需要一定技术沉淀,不利于开发同学上手。 两年前,也是因为懒,很懒,非常懒,堆积了足够的动力,写了一个基于人工模拟方式,对一个特定规则的游戏进行暴力破解。我们都知道,人工模拟方式,绕过了大量防破解技术,只要还是人机交互模式,
xiangzhihong
2018/02/05
1.2K0
Android逆向工程
mybatis逆向工程
pom文件引入插件 <plugin> <!--Mybatis-generator插件,用于自动生成Mapper和POJO--> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--配置文件的位置--> <co
Ssss
2020/03/26
4960
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis,一个相对于hibernate的轻量级DAO框架,它的逆向工程可以很方便的从数据库到生成对应的entity和mapper接口。
全栈程序员站长
2022/09/24
5990
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis逆向工程配置文件_mybatis逆向工程多表查询
mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤
全栈程序员站长
2022/09/27
3340
mybatis逆向工程配置文件_mybatis逆向工程多表查询
Mybatis--逆向工程
<generatorConfiguration> <!-- targetRuntime="MyBatis3Simple":生成简单版的CRUD MyBatis3:豪华版 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- jdbcConnection:指定如何连接到目标数据库 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
SuperHeroes
2018/05/30
5880
MyBatis逆向工程 Generator
正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件 添加依赖和插件 pom <!-- 依赖MyBatis核心包 --> <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar
鱼找水需要时间
2023/02/16
4580
MyBatis逆向工程 Generator
逆向工程——汇编基础[二]
除了显示地操作堆栈(使用push和pop指令)之外,很多指令也需要使用堆栈,如INT、CALL、LEAVE、RET、RETE、IRET等等。配对使用上述指令并不会造成什么问题,然而,如果你打算使用LEAVE、RET、RETE、IRET这样的指令实现跳转(比JMP更为麻烦,然而有时,例如在加密软件中,或者需要修改调用者状态时这是必要的)的话,那么要搞清楚他们做的到底是什么,并且精确而了解自己要做什么。
HACK学习
2019/08/05
1.2K0
逆向工程——汇编基础[一]
汇编语言是一种最接近计算机核心的编码语言。不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。 汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。
HACK学习
2019/08/05
1.5K0
MyBatis的逆向工程
MyBatis是目前很流行的持久层框架,很多企业都在采用。但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致最终功能运行失败。例如:在几十个字段的表中,某一列的列名配置疏忽。基于此,mybatis 推出了一套 jar 包,可以依据我们设计好的数据库表,自动生成 pojo、mapper 以及mapper.xml。有了逆向工程,便大大缩减了我们的开发时间。
宋先生
2019/07/18
4550
mybatis与其逆向工程
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。myBatis在目前在SSM框架中做为持久层在使用。
Tim在路上
2020/08/04
3690
Mybatis的逆向工程
我这里使用的的eclipse插件的方式,来逆向生成代码。给出配置文件 generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT
用户5927264
2019/07/31
3480

相似问题

逆向工程

12

逆向工程?

31

对安装程序进行逆向工程

20

逆向工程: C#字典的表示?

30

逆向工程Flash

83
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文