BSD 从 1989 年到 1994 年清除了受版权保护的 AT&T 代码。
如果 BSD 和 System V 都兼容 POSIX,我不明白“清除受版权保护的代码”意味着什么。
两个系统本质上都在做相同的事情。让我们举个例子/bin/cp
。如何在不侵犯版权的情况下重写一个执行完全相同操作的程序?
答案1
就像数学问题一样,本质上有无数种方法可以正确解决问题,即使答案始终保持不变,也有几乎无数种方法可以编写程序来完成完全相同的事情。
复制软件代码就像在老师不看的情况下逐字复制/剽窃同学的解决方案。如果该解决方案受版权保护,则将构成侵犯版权,并可能受到法律惩罚。
但是,如果您自己解决问题而不查看任何现有解决方案,那么您很可能会想出不同的解决方案:不同的方法、不同的步骤、不同的变量名称、不同的中间结果、不同的注释。计算机程序也是如此。
尝试查找概念上简单的memcpy
函数的实现 - 您会惊讶地发现可能有这么多非常不同的实现!
答案2
很难说,因为没有人验证过新代码。
在 UCB 就 AT&T 不尊重 UCB 代码许可证提起诉讼后,该诉讼已结束。 UCB 要求 AT&T 取回所有曾经发布的 UNIX 文档,并用提及 UCB 版权的更正版本替换它。
最后人们发现 AT&T UNIX 包含的 UCB 代码确实比 UCB 从 AT&T 获取的代码还要多。
总的来说,部分代码已被 GNU 代码所取代,后来又必须替换这些代码才能再次使代码自由,其他代码已被 BSD 项目重写。
顺便说一句:大约在 1992 年,Stallman 发表了一篇关于如何修改 AT&T 源代码的论文,其方式很难判断是否被使用过。我找不到原始论文了,但这就是我的想法:
AT&T 代码经过优化,可以创建小型二进制文件,并且无需使用 malloc()。使用 malloc 并重写代码以消耗大量内存以提高速度。
删除所有评论
重新排序所有声明
重命名所有函数和变量
修改用于输出的文本字符串。
重写循环,例如 while -> do 或类似的
答案3
这归结为想法与表达的区别在版权法中:一个想法不能受版权保护,只有表达该想法的特定方式受版权保护。 POSIX 指定什么一个程序,比如/bin/cp
必须做(“想法”)但不是如何它应该去做(“表达”)。
作为可能发生何种变化的一个简单示例,程序cp
可以一次复制一个文件的一个扇区(最大限度地减少内存使用),或者可以在再次将其写出之前将整个文件读入内存。
答案4
版权保护的是作品而不是想法。
按摩作品会产生衍生品。这不提供法律保护,但很可能愚弄某人。
所以,你可以做什么
这个想法是免费的,因此您可以为原始想法创建测试。并开始进行替代工作。确保新产品通过所有测试。
如果现在你的原件被证明是原件的精确副本,你就有了辩护,你可以在版本控制系统中显示你的历史记录。它将显示您如何创建代码。他们将不得不争辩说您也窃取了他们的修订控制存储库。如果对于任何不平凡的问题,历史记录与您相同,则可能足以让他们证明存在副本。