跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 偷了点开源代码的 CSS,作者发邮件来要诉诸法律
未分類
10 3 月 2021

偷了点开源代码的 CSS,作者发邮件来要诉诸法律

偷了点开源代码的 CSS,作者发邮件来要诉诸法律

資深大佬 : hooopo 1

大概是这样的,最新搞了一个开源项目 https://v2ex.com/t/758460 由于前端能力有限,从另外一个开源项目里扒了大部分 CSS,由于 Plausible 是 AGPL v3 协议,作者发来邮件需要我把项目从 Apache 2.0 也改成 AGPL v3,否则要采取法律途径…

偷了点开源代码的 CSS,作者发邮件来要诉诸法律

吓得我赶紧连夜搞了个 PR

https://github.com/HyperCable/hypercable/pull/28

有没有熟悉开源协议的朋友,请教一下还需要注意什么?我可以移除这部分依赖之后再改回 Apache 2.0 或者 MIT 吗?

大佬有話說 (91)

  • 資深大佬 : iseki

    如果你的代码没有其他人的 pr,那么你可以随时决定你写的部分的许可证(仅仅是你写的部分(在不违反各项依赖的许可证的情况下

  • 資深大佬 : FS1P7dJz

    我说主…做错事就要认错好不好

    GPL 协议最主要的几个原则:

    确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。

    AGPL = GPL + 一条限制
    一条限制:如果使用 AGPL 许可的软件与用户通过网络进行交互,也需要提供源代码给用户,所有的修改也要给用户。

    所以既然对方是 AGPL,那么你使用了对方的代码,你的项目也已经上线了,那自然就变成 AGPL 协议,

  • 資深大佬 : wangxn

    @iseki 按照那个发邮件的人的意思,AGPL 是扩散的吧,用了的话整个项目必须是 AGPL 。你说的像是 LGPL 协议。

  • 資深大佬 : FS1P7dJz

    如果你依然坚持用 Apache 2.0 那么就不要用别人的代码,自己写,或者使用兼容协议的组件

  • 資深大佬 : alan0liang

    把来自 plausible 的代码彻底清除之后就跟他们没关系了,只要代码全是自己写的,并且不违反依赖库的 license,就可以自己随意定 license 。license 是用来限制别人的,自己可以随意处置自己写的代码(当然,不能违反依赖项目的 license)。

    Disclaimer: IANAL

  • 資深大佬 : bagheer

    css 不是人家创造出来的??
    奇怪,这语气显然是不把前端当代码

  • 主 資深大佬 : hooopo

    @FS1P7dJz 同意你的说法哇 所以我现在按照他的指示改了 但不清楚还有什么需要注意的地方

  • 主 資深大佬 : hooopo

    @bagheer 你说的对!

  • 主 資深大佬 : hooopo

    @alan0liang 就是说 license 是以文件为单位的吗 不是整个项目为单位?

  • 資深大佬 : alan0liang

    @hooopo #9 其实 license 可以比文件更细,但是 AGPL 要求 derivative work 全部 AGPL,这时候整个项目都可以看作 derivative work,所以项目全部需要 AGPL 。

  • 主 資深大佬 : hooopo

    @alan0liang 可怕

  • 資深大佬 : justin2018

    @hooopo 另外一个开源项目是哪个项目 我挺喜欢这个 UI 的 求 Github 地址

  • 資深大佬 : wwwe

    看了一下 Plausible 之前用的是 MIT 协议,是不是用那时候的版本的代码就没问题了?

    还有一个问题,难道说用了 AGPL 协议统计服务的网站也必须遵守 AGPL 么?

  • 主 資深大佬 : hooopo

    @justin2018 https://github.com/plausible/analytics

  • 資深大佬 : alan0liang

    @wwwe 我觉得可以认为统计服务和网站本身的关系只是 mere aggregation,不构成 derivative work,见 https://opensource.stackexchange.com/a/4500 ; Again, IANAL.

  • 資深大佬 : anguiao

    我想知道原作者是怎么发现的

  • 主 資深大佬 : hooopo

    @anguiao 在 Twitter 上被转发了 就被看到咯

  • 資深大佬 : l4ever

    css 名字改改?

  • 資深大佬 : leeg810312

    移出使用的代码,有 release 包含相关代码的,删除这些 release,这样你可以仍然保持 Apache 许可

  • 資深大佬 : mxT52CRuqR6o5

    @wwwe 像 c 语言这种如果使用一个库,如果用静态链接则会受 gpl 传播影响,用动态链接就不会
    (按照我的理解)前端应该也是类似的道理,你直接 script 标签引 js 库不受影响,但如果用 webpack 之类的打包工具把 gpl 协议的库 inline 到最后生成的 bundle 中就会受 gpl 影响了

  • 資深大佬 : binux

    我想知道抄 devtools 里的 computed CSS 算抄源码吗?

  • 資深大佬 : Jirajine

    @alan0liang “只要代码全是自己写的”确实没问题,但一般开源项目很少满足这个条件。
    像某些 GPL 许可的项目运营很久以后突然宣布修改协议并闭源这种,完全是违反协议的。

  • 資深大佬 : LokiSharp

    可以把 CSS 拆出来独立一个项目吧

  • 資深大佬 : feather12315

    写个中间层封装,动态导入 lib,该中间层用别的协议发布

  • 資深大佬 : Jirajine

    @mxT52CRuqR6o5 你说的应该是 LGPL,GPL 按 FSF 的说法动态链接也不行。像 Qt 、GTK 这些允许你动态链接发布的都是 LGPL 许可的。

  • 資深大佬 : alan0liang

    @mxT52CRuqR6o5 动态链接也不行,不然就不会有 LGPL 了。

  • 資深大佬 : ai277014717

    这种代码改改名字调换一下顺序。还会产生纠纷不?

  • 資深大佬 : yaphets666

    @binux 当然不算了 源码是啥意思 源代码文件里的代码

  • 資深大佬 : no1xsyzy

    @Jirajine 不一定有违反什么,许多项目的 CONTRIBUTING 设置的是贡献者完全放弃权利捐献给项目方( GNU 项目似乎就推荐你完全放弃权利全部给 FSF )。
    你当然可以不接受,那也就是说你也不应当贡献进主代码树(硬分叉)。
    但同时,已经 GPL 发布的版本你仍然被允许使用,你甚至可以在此版本上建立硬分叉,独立维护一个开源版本。

    @mxT52CRuqR6o5 LGPL 才不影响动态链接。GPL 仍然影响动态链接。

    @hooopo 你要 filter-branch 或者 BFG,历史提交中存在 AGPL 授权的代码的话,这些提交也同理。
    另外,AGPL 不可撤销。我已经 fork 了你处于 AGPL 状态的版本,你删光别人的 AGPL 授权代码再 relicense 也没用了,一旦 AGPL 发布过就再也回不去了 °3°

  • 資深大佬 : binux

    @yaphets666
    @ai277014717
    但是有可能违反版权哦

  • 資深大佬 : vbcity

    还是上国内的 gitee 吧, 外国人再怎么厉害,也没法整我们中国人的代码,即便是抄的,那也是鞭长莫及。

  • 資深大佬 : no1xsyzy

    @wwwe @alan0liang 一是不构成 derived work,二来 A 前缀是针对网络交互的,实际上与运行了 AGPL 的代码的服务进行交互的不包含提供内容的服务器。

    AGPL 的要求不是 “用户” 而是 “网络交互的对端”(因为充分地考虑到 P2P 程序的存在。)
    以 Plausible 为例,(如果我没理解错的话)此处客户端是 “用户浏览器中运行的 JS”,服务端是 “接受回报并生成分析的 Elixir 程序”。
    如果你根据其 protocol 重新实现一个客户端,或者重新实现一个服务端,则不需要向对方告知你修改了代码。
    如果你修改了服务端,你必须向任何尝试向你的服务端提交信息的客户端告知你修改后的服务端源码。
    如果你修改了客户端,你必须向你尝试提交信息的服务端告知你修改后的客户端源码。

    @hooopo 话说我倒是觉得奇怪,analytics 类系统为什么还会有用 Apache ?
    通常而言,重度反 Google 人士才会自己写一个 analytics,而反 Google 人士都喜欢用 AGPL 。
    而且 analytics 系统是可以比较容易地被 cloud-private 的。

  • 資深大佬 : aisk

    @vbcity 偷东西不被发现就没问题了?

  • 資深大佬 : a719031256

    GPL 系列-假开源
    MIT-真开源

  • 資深大佬 : rootmaster

    作者在国外 ,让他来告啊 ,钱都是问题

  • 資深大佬 : Jooooooooo

    可以不理他, 你在中国他就管不着.

  • 資深大佬 : throns

    @Jooooooooo
    @rootmaster 在中国是管不着,主被发现主要是在 Twitter 推广,受众基本都是外国人

  • 資深大佬 : impl

    哈哈,主抄的太明显了

  • 資深大佬 : no1xsyzy

    @hooopo 我发现说得不够明确。
    你可以 BFG 掉别人的代码然后再重新以 Apache 授权,这一操作是没问题的。
    但是已经发出的 AGPL 授权不可撤回,也就是说我(或者地球上任何自然人或法律实体)将永远可以在 AGPL 授权的条款下使用你的代码。

    也就是说,你即使切换回去,当前的快照也是 double-licensed 的状态。
    别人可以任意地选取其中一种许可接受。

    再参考 https://choosealicense.com/appendix/ 可知,AGPL 大部分情况下限制更严格(所以通常无差)。
    这里主要的差异就是你的 trademark 被释放了,别人(在选择了接受 AGPL 授权的情况下)可能可以在自己的网页内贴上一句 “我用了 HyperCable 来进行访问量统计” 之类的话语 —— 这在 Apache License 2.0 下是显式不授权的(但并不是说 AGPL 下存在显式或隐式的授权)。

  • 主 資深大佬 : hooopo

    @no1xsyzy Thanks♪(・ω・)ノ

  • 主 資深大佬 : hooopo

    @throns 还是要在规则内玩啦 我现在只是对这些规则不太清楚…

  • 資深大佬 : alienx717

    你可以打印出来把源码给他,到付

  • 資深大佬 : Greatshu

    我遇到过,直接无视,同时上传到自建 git 服务器

  • 資深大佬 : Chappako

    回复里好些人偷的那么脸不红心不跳的

  • 資深大佬 : caola

    @hooopo 临时解决办法,直接压缩一下 CSS 代码就可以了,
    以后有时间慢慢修改一下 class 的名称之类的,再更换一下 CSS 的前后顺序,反正让人看不出是抄的就行

  • 資深大佬 : QBugHunter

    @rootmaster

    @Jooooooooo

    对于你们脸皮的厚度,在下佩服。。。。

  • 資深大佬 : imzcg2

    删库不跑路。换国内 git 服务并且不理他。tx 直呼内行

  • 資深大佬 : coderluan

    低情商 : 仗着位置不怕告, 你是腾讯吗?
    高情商 : 宣布是外包干的, 已经开除了, 然后改几个对方说的文件, 剩下的装没看见, 表示可以赔使用者几毛钱, 但是不会赔偿开发者.

  • 資深大佬 : kaedea

    这东西就跟玩盗版游戏,可以搞,just be guilty

  • 資深大佬 : maggiett

    上面那个不是很明显反串嘲讽的?这么直的勾你们也咬?

  • 資深大佬 : RedBeanIce

    @maggiett 钓鱼的没有明显暗号,一律杀掉。否则怎么认得清。

  • 資深大佬 : RedBeanIce

    上的部分人,真的可以直接 block

  • 資深大佬 : muzuiget

    要么你死不认偷的,顶多是仿的,代码是自己写的,人家没证据的话,耐不了你何。

    你现在都已经发帖自爆认偷了,人家有资格叫你开源了。

    要不你死厚脸皮下去。

  • 資深大佬 : muzuiget

    好吧,原来已经开源,那个版本只能是 AGPL 了。

  • 資深大佬 : biguokang

    @Jooooooooo 如果他的项目托管在 github,或者其他境外网站,有可能会被 DMCA 掉的。。。当然放 gitee 之类的就没影响

  • 資深大佬 : charlie21

    有点意思

  • 資深大佬 : HFX3389

    有没有人来科普一下 GPL 、LGPL 、AGPL 、MIT 等等各种开源协议的区别呀?

  • 資深大佬 : vbcity

    @aisk 偷东西得看怎么偷啦。 只要不被发现,法律也没辙。
    另外偷的对象也得区分对待。国内有厂家,解密了芯片,获取芯片的逆向汇编逻辑,从而了解了产品的核心设计思想,这算啥呢? 这叫“引进消化吸收”,为祖国的崛起做出了了不起的贡献。
    另外,你要人家不抄袭,还是不要开源的好, 另外加上种种混淆加密,至少要增加别人破解的时间成本。最后呢, 不要卖给中国人高端的东西,他们会逆向的。

    最后,狗头保命。。doge

  • 資深大佬 : iseki

    @wangxn 是的,agpl 也是有传染性的,所以我说,在不违反依赖性的许可证的情况下,可以重新对自己的代码 relicense

  • 資深大佬 : iseki

    也就是说,假设该项目未接受其他人的 pr (否则必须逐一要求同意),在移除该依赖项后可以重新使用自己喜欢的许可证(

  • 資深大佬 : dc25b

    我还是想给主解决问题的态度点个赞,比置之不理什么的强多了。

  • 資深大佬 : maqingxi

    要开发个项目真是不容易。

  • 資深大佬 : ck65

    对面 CEO 回复很真诚啊,看了也学到点东西。

  • 主 資深大佬 : hooopo

    @iseki 是的 更新了内容

  • 資深大佬 : lewinlan

    不把 css 当代码,这可不就在说我吗 X-)

  • 資深大佬 : baobao1270

    看来搞开源之前阅读相关科普真的非常重要

    我第一次用 GitHub 的时候,就去学习了各种 License 的区别,也知道了 GPL 的扩散性

  • 資深大佬 : huangqihong

    我想到了腾讯了

  • 資深大佬 : encro

    应用第三方,最好还是 MIT 吧。
    一般来说商业公司选择 AGPL+另外一个商业协议是开源的比较好选择。

  • 資深大佬 : FaiChou

    我更好奇他是如何发现代码被 copy 了的? 有什么途径吗? 我之前遇到过 https://www.v2ex.com/t/664883#reply0

  • 資深大佬 : Felldeadbird

    既然对方找上门,自己确实用了人家的代码,要么回滚库,要么按照 AGPL 执行。

  • 資深大佬 : joesonw

    @iseki 全部移除之后的那个 commit 开始可以是自己的 license. 之前的部分还是是 AGPL.

  • 資深大佬 : richardwong

    @Greatshu 那你很勇哦

  • 資深大佬 : no1xsyzy

    @iseki @joesonw 操作上是可以 git filter-branch (这时候谁不用 BFG ?)之后 force push 的,之前的版本仍然可以被 relicense,当前快照可以以 AGPL 永久使用的原因是 OP 简单地替换了 License 。OP 的想法是 Apache 的情况下其实没多大差异,反正 Apache 授权代码可以简单地合并进 GPLv3/LGPL/AGPL 授权代码,但合并结果须以后者相同授权发布。

    @Felldeadbird 不一定回滚库,也可以 filter-branch

    @FaiChou 外形上就非常相似了。

    @baobao1270 @iseki 话说我不认为 GPL 侧有传染性,而是专有许可证有传染性。GPL 侧是 “无菌环境” 限定。
    简单的类比:两个专有许可证放到一起会发生的情况跟两个病毒放在一起会发生的情况一样完全不可预料。而 GPL 就很简单 —— 你必须无菌,并且合并时符合更高要求的无菌环境。

  • 資深大佬 : jaylee4869

    让我们回顾一下践踏 GPL 的 QQ 影音: https://byvoid.com/zhs/blog/qq-player-ffmpeg-gpl/

  • 資深大佬 : jsjgjbzhang

    V2 上当然怎么正义怎么来了,关了论坛当然无视咯

  • 資深大佬 : 327013234

    读书人那能叫偷嘛

  • 資深大佬 : FaiChou

    @no1xsyzy #73 比如我开源一个前端 GPLv3 协议的项目到 github 上, 别人用 npm 安装, 我如何检测安装的项目没有遵循正确的协议? 可以在哪里添加脚本? 项目代码里还是 npm ?

  • 主 資深大佬 : hooopo

    @FaiChou 商机来了,可以做一个检测协议兼容性的 bot

  • 資深大佬 : FaiChou

    @hooopo #78 我觉得已经有这种 bot 了, 我只是不知道怎么实现的. 而且你的代码如果是 copy 的, 作者怎么知道你“抄”了他代码?

  • 資深大佬 : no1xsyzy

    @FaiChou 不清楚你指的范畴是什么?
    甲、有客观依据的:
    1. 从许可证声明来说,package.json 里有许可证声明。
    2. 从协议兼容性及合规性自动化检测来说,也可以自动地检查整个依赖系的许可证声明。
    乙、无客观依据,有客观方法的:
    3. 从代码文本分析上来说,有各种相似度检测。具体的相似度百分比取值是玄学,只能保证同一相似度 scheme 下,相似度更高的更可能是更相似的(注意这一表达是个贝叶斯学派的表达)。
    丙、无客观方法的:
    4. 从代码检查来说,似乎除了雇用(组织内或外包)观测者以外并没有很好的方法。(本案中 OP 自称是 Twitter 上宣传被看到了。)
    5. 从定性上来说,具体是否算 “抄” 是法庭的事儿。

  • 資深大佬 : no1xsyzy

    @no1xsyzy 4. 应是 “从全网代码监控来说”

  • 資深大佬 : siteshen

    问下熟悉协议的大佬们,如果项目里 `pip install` 或者 `mvn install` 了某 AGPL 的包,是不是整个项目都应该 AGPL 了?不太清楚「 import 」、「使用」、「修改」等的区别和界限。

  • 資深大佬 : Jat001

    @siteshen #82
    搜了一下,感觉是个充满争议的话题,没有具体的案例可供参考,但大部分回答认为整个项目也要在 GPL 下进行分发
    https://opensource.stackexchange.com/questions/2139/can-i-license-python-project-under-3-clause-bsd-while-it-has-gpl-based-dependenc
    https://opensource.stackexchange.com/questions/7291/optional-gpl-dependency-in-commercial-python-application
    https://opensource.stackexchange.com/questions/6033/can-a-non-gpl-python-program-use-gpl-python-module
    https://opensource.stackexchange.com/questions/1640/if-im-using-a-gpl-3-library-in-my-project-can-i-license-my-project-under-mit-l

  • 資深大佬 : FightPig

    @vbcity 这,,不是掩耳盗铃?

  • 資深大佬 : vbcity

    @FightPig 额。 这叫“引进、消化、吸收”,读书人偷书不算窃。。 你要开源的话,就要做好被人家窃的准备,否则就别开源。

  • 資深大佬 : ch2

    @HFX3389 MIT 是真开源,随便你怎么用无所谓,其他的不是

  • 資深大佬 : sykp241095

    先把 repo 设置为签署 cla 吧:
    https://gist.github.com/ff2e070e68f5342a35022dde505f5560
    https://cla-assistant.io/

  • 資深大佬 : efaun

    看了上面的一些回复,国内开发环境就是这样被破坏的

  • 資深大佬 : liudengchn

    既然是开发人员,还是守规矩的好~大家都遵守一定的规则,开发这个事情才能越玩越好。

  • 資深大佬 : msg7086

    LICENSE 是你给别人的授权。
    你自己的代码,你是版权所有的,有无限的权利。而别人呢,默认没有任何权利。
    现在你写了 LICENSE,你可以把你拥有的一部分权利转让给别人。

    那么现在你(借)来了一部分别人的代码。
    这部分代码不是你版权所有的,因此你默认没有任何权利。
    现在对方以 AGPL 许可证授权你使用。

    对方说:
    兄弟,只要你的代码全都是 AGPL 的,那你就可以把我的代码也放进去用。
    但是,如果你的代码不是 AGPL 的,那对不起,你不能用,请乖乖删掉。

    那么你有两个选择。
    1. 把你的代码改成 AGPL,然后白嫖别人 AGPL 的代码。
    2. 保持你的许可证不变,然后删除白嫖的许可证不兼容的代码。

    当然,你完全可以先选 1,以后再选 2 。
    代码所有的作者可以一起决定代码的许可证。
    如果删除了外来代码以后,所有代码都是你写的,那么你自己就可以更换许可证。
    如果所有的代码是你和路人甲一起写的,那么你和路人甲两个人同时同意后就可以更换许可证。

    许可证只对当前版本生效。换句话说,这个软件在今天之前的版本是 Apache 2.0 的,今天之后的版本是 AGPL 的,有朝一日等你改回 Apache 2.0 的话,也只对改回以后的版本生效。

    所以,一般我们为了不惹麻烦,都是(借) MIT 或者 BSD 许可证的项目。

  • 主 資深大佬 : hooopo

    @msg7086 通俗易懂

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具