在这个问题中,我将 Delphi 运行时源代码称为“开源”,仅仅是因为它是开放的。其他人不同意这一点,因为 Delphi 本身就是一个商业产品。根据维基百科,开源必须遵守一套规则。
我在 Delphi 许可证中进行了快速扫描,但找不到关于它的许可状态的明确说明。它在 system.pas 中有一个名为 DECLARE_GPL 的编译器指令,它是所有其他 Delphi 单元的根。系统单位是唯一不需要添加到单位的单位,因为它是自动添加的。因此,如果 system.pas 是 GPL,那么任何使用它的东西也都是 GPL!但是 Delphi 为这些源文件提供了双重许可,因此人们可以选择不使用 GPL 许可。
尽管如此,如果 Delphi 源代码可用并且它支持 GPL,即使它也有一个也可以应用的二级许可证,那么 Delphi 运行时源代码是否是开源的?
来自 Delphi 2007 的 system.pas:
(* GPL 符号的存在表明系统单元和 Delphi 运行时库的其余部分是根据 GNU 通用公共许可证 (GPL) 的条款编译使用和分发的。
根据 GPL 的条款,所有应用程序编译带有 GPL 版本的 Delphi 运行时库也必须根据 GPL 条款分发。有关 GNU GPL 的更多信息,请参阅http://www.gnu.org/copyleft/gpl.html为商业/专有软件开发购买的 Delphi 运行时库中不存在 GPL 符号。
如果您的源代码需要知道它被编译成哪种许可模型,您可以使用 {$IF DECLARED(GPL)}...{$IFEND} 来测试 GPL 符号是否存在。符号本身的价值并不重要。*)
尤其是源代码中的这段文字让我对许可证产生了怀疑。如果它可以作为 GPL 分发,这是否意味着它也是开源的?