vinle
2021-10-29 23:08:23 +08:00
如果楼主要探讨 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 类。)