根据定义,脚本是“开源的”吗?

时间:2009-01-09 03:04:07

标签: scripting lua

前几天,我为朋友的魔兽世界插件调整了剧本。他很惊讶你可以编辑插件 - 他们是“开源的”。 (魔兽世界插件是用Lua脚本语言编写的)我发现自己想说“当然你可以 - 所有脚本都是'开源'。”

这是真的吗?当然,一些脚本可以编译为字节码,但几乎不是所有脚本都被解释?也就是说,根据定义,解释脚本的设备不需要“源”吗?

8 个答案:

答案 0 :(得分:17)

这取决于你如何解释“开源”。

当然,您拥有源代码,但通常并不是Open Source的含义。通常开源是指许可。拥有“开源”意味着您可以出于任何目的自由修改源代码,包括在许多情况下重新分发源代码。

只是让源代码在一般软件意义上不会使它成为开源。如果脚本受版权保护,则在技术上“关闭”,除非明确给出开源许可证。您可以对其进行修改,但如果您在未经作者许可的情况下重新分发,则违反了其隐含(或明确注册)的版权。

答案 1 :(得分:14)

Open source是关于许可的。脚本可以拥有作者(或版权所有者,例如雇主)想要的任何许可。所以答案是“不”。

脚本通常以与编写它们相同的形式分发 - 没有编译格式。所以你可以看到来源。这并不意味着他们是开源的。

答案 2 :(得分:4)

“开源”与能够查看源代码不是一回事;开源许可是关于合法权利从该源代码派生作品。

如果您在未经其明确同意的情况下接受他人的工作,修改并重新分发,则您侵犯了他们的版权,违法

答案 3 :(得分:2)

“开源”并不仅仅意味着您拥有源代码,它还用于描述您在是否进行修改时重新分发代码的合法权利。

基于版权和许可,许多脚本开源。

答案 4 :(得分:1)

正如许多人所指出的那样,仅仅因为您有权访问该来源并不能让您根据自己的喜好进行操作。

你问

  

几乎所有脚本都没有被解释?也就是说,根据定义,解释脚本的设备不需要“源”吗?

没有。即使在解释器中,源也会在被解释之前经历几次转换。最终解释的表单通常是基于堆栈或基于寄存器的虚拟机的一系列指令;这些指令通常称为“字节码”。也可以相对有效地解释内部。主要为教学目的而设计的口译员可能会使用效率更低的方案。

某些实现允许您获取内部表单并将其写入磁盘,从中可以重新读取和解释它。感知的优势通常是

  • 程序加载并运行得更快,因为初始处理阶段在内部表单写入之前执行一次,然后反复重复使用。

  • 内部表单可以防止源代码被窥探。

主要的缺点是典型的内部形式通常不如源代码便携,可能是因为字节顺序或字大小不同。

在Lua的特定情况下,luac编译器会将字节码写入磁盘。它很少使用,因为字节码不可移植,因为编译器已经非常快。在“魔兽世界”的特定情况下,它们实际上是encouraging people to use Lua to modify the interface并且可以自定义体验;他们希望每个人都能共享代码,因此请保持开源。 WoW拥有超过1000万用户,至少有5000人提供了代码。所以贡献了一些代码的用户群的百分之五,这让我对编程作为一种职业的未来感到高兴。

答案 5 :(得分:0)

要为口译员分发程序,来发送源代码(虽然不一定是可理解的来源)。这并不意味着这些术语的使用方式是Open or Free

答案 6 :(得分:0)

我似乎记得在游戏条款和条件中阅读要求插件获得许可作为开源的东西,但我现在似乎无法找到它,所以我可能已经想象它了。但在所有实际情况中,他们都是。

答案 7 :(得分:-1)

您可以编译Lua和其他脚本语言,并以各种方式隐藏它们。对于默认情况下打开源的情况比其他语言的情况更常见 - 不是更必要。