简短答案
Eclipse公共许可证和LGPL的组合可以确保您所希望的一切:必须对代码进行修改,但是在较大的产品中使用该代码不会强制对较大的产品进行重新许可。组合是必要的,以便允许在GPL和非GPL项目中使用该代码。
这是诸如JGraphT之类的项目所采用的方法。他们在EPL和LGPL下重新许可了他们的项目。其动机和过程在其Wiki中进行了描述。
长答案
我认为,Mozilla Public License(MPL)或Eclipse Public License(EPL)是您正在寻找的许可证,因为“如果从该库创建了任何派生作品(例如,对该库进行了任何改进),它[IS ),并在同一许可证下向所有人开放。
MPL和EPL许可证在GPL和MIT之间。
MIT允许用户使用它进行所有操作,包括修改,出售和不将修改后的代码回馈社区。
即使您的库仅占整个产品的1%,GPL 也会迫使用户向社区分发所有代码。
LGPL强迫用户放弃对LGPL部分代码的修改。
MPL和EPL与LGPL相似:它还会迫使用户提供修改后的源。“修改的源” 仅包括MPL // EPL覆盖的代码的一部分。这意味着,用户可以在您的库中构建新产品。如果他修改了MPL- / EPL-部分,则必须发布它。他的新事物不需要公开。
我觉得MPL / EPL更合适,因为LGPL明确地谈论“库”,而MPL只是谈论“涵盖软件”(范围更广)。
但是,选择EPL会导致将软件与GPL软件组合在一起的麻烦:EPL与GPL不兼容。如果仅使用MPL,则不是这种情况。
如果要确保在GPL和非GPL项目中都可以使用您的代码,请按照简短答案中的描述在LGPL和EPL下双重许可代码。
例子