开源协议的修改源码应该怎么理解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
chenos

开源协议的修改源码应该怎么理解?

  •  
  •   chenos 2021 年 10 月 29 日 2219 次点击
    这是一个创建于 1639 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class A extends B {} 

    比如 B 是某个 Apache2 协议的类,我继承之后改了 A ,这种情况需要说明吗?

    怎么算是修改源代码?继承重写算吗,还是只是修改源代码文件才算修改源码。

    3 条回复    2021-10-30 17:19:51 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021 年 10 月 29 日
    这,我感觉源代码才算代码,就是原作者原项目中的所有文件,
    你继承是你的文件里的代码,应该不算,
    1BF6oSYCD9ngBHo1
        2
    1BF6oSYCD9ngBHo1  
       2021 年 10 月 29 日
    如果楼主要探讨 license 的话,那大概率是要发布这个新项目(因为如果只是自己玩的话随便怎么折腾都可以。

    楼主没说清什么语言,以 java 为例的话,准确来说,要看 B 所属的项目的 license 有没有写明白 CPE ( classpath exception ) 。

    如果没理解错的话,楼主的“改了 A”应该是指:B 允许被 extend 并且 A override 了 B 的函数。这种情况下,

    1. 如果写明了 CPE ,并且新项目是把 B 所在项目当作 lib 来引用,那就没问题(即,随便发布)。但如果你的 A 是要加进原油的项目里,那也行,不过你要在你新发布的项目里边采用 apache2 的 license 并且,遵循原有 license 里边列出来的要求(细节因 license 不同而不同,但一般来说 apache 族的特点是需要注明修改处)
    2. 如果没 CPE ,即使只是把 B 当 lib 引用,那也不能随便发布了,而是要需要采用 apache2 并且,遵循....(同上)。

    总之,如果 B 所在的项目是开源项目并且有完整有效的 license ,在遵守它并符合它提出的要求的情况下,该怎么发布就怎么发布。

    具体点:openjdk 的 String 类,你 call 或者 extends 都是没问题的,因为 openjdk 的 license 有 CPE (然而现实比较可惜:String 类是 final 类。)
    msg7086
        3
    msg7086  
       2021 年 10 月 30 日
    源代码就是源代码,这没什么歧义吧。
    你 A 继承了 B ,又没改过 B 的源代码,怎么能算改过源代码呢。
    继承和重写,和源码有什么关系。
    继承和重写是编译期和运行期的东西,你的类还能跑到别人项目里改人家源代码?

    CPE 主要是许可证污染性上有区别。Apache2 是个宽松许可证,并不污染衍生作品。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 22:19 PVG 06:19 LAX 15:19 JFK 18:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86