您应该只根据您愿意发布它的任何许可证对其进行双重(或三重或 n 元组)许可。双重许可证是您说用户可以选择在哪个许可证下使用该程序的许可证。
GPL 经常在双重许可下使用;大多数程序都在“GPLv2 或更高版本”下获得许可,此时意味着 GPLv2 或 GPLv3。还有很多软件是在 GPL 和MPL或类似许可下双重许可的(实际上通常是多路许可,因为所有涉及的许可通常都有“或更高版本”)。
当然,MPL 是弱 Copyleft 许可证(如 LGPL),而不是像 GPL 那样的强 copyleft。因此,如果您在 MPL 下获得双重许可,您的代码可能会在其他专有程序中使用,但必须发布对代码本身的修改。
您在问题中建议的问题,“如果您将使用 gpl-like* 许可证的 FOSS 软件合并,您可以重新获得该许可证的许可。否则,您可能不会更改许可证,其中 gpl-like 是任何 FOSS许可证要求整个项目都在同一个许可证下”是大多数许可证的利益冲突不是与类似 GPL 的许可证(除 GPL 之外还有其他强大的 Copyleft 自由软件许可证),而是与类似 MPL执照;也就是说,GPL 要求整个程序按照 GPL 的条款分发,而 MPL 要求该部分按照 MPL 分发,没有额外的限制,造成冲突。如果你允许它在 MPL 下分发,那么人们可以在专有程序中使用它,
所以,你必须问问自己你对什么感兴趣。你是否对你的程序或库只在自由软件中使用过感兴趣?然后使用 GPLv2 或更高版本以获得最大的兼容性。您是否对您的库始终保持免费感兴趣,但希望它能够链接到与 GPL 不兼容的程序(可能包括专有程序)?然后使用 LGPL、MPL 或类似许可,或者双重或三重许可(例如 GPLv2 或更高版本、MPL v1.1 或更高版本,或者 LGPL v2.1 或更高版本,就像大多数 Mozilla 源代码已获得许可一样)。你希望任何人都能够为所欲为吗?然后使用X11/MIT许可证(比 BSD 更短更简单)或WTFPLv2(我见过的最短、最清晰的许可证)。
如果你觉得非常慷慨,你可以将代码发布到公共领域,比如SQLite,它带有祝福而不是每个文件中的许可证:
愿你行善不作恶
愿你为自己找到宽恕并原谅他人
愿你自由分享,从不索取超过你给予的。
我总是觉得这比大多数许可证中涉及的冗长、乏味和可怕的法律声明要愉快得多。