每个开发人员应该了解法律事务?

时间:2009-09-08 20:32:15

标签: open-source licensing

今天I had a bad surprise了解GPL许可证的一些含义,主要是因为我无法像我想象的那样自由使用它。

现在我知道了。

我应该知道什么,更广泛地说,每个开发人员应该了解这类合法的事情?

您可以将员工,自由职业者,开源项目贡献者(等)分开,或者给出更广泛的答案。

15 个答案:

答案 0 :(得分:135)

软件开发的十二个法律考虑因素

  1. 如果软件向公众开放,则软件受版权保护。不再需要在应用程序或源代码中提供版权声明。版权所有者是向作者付费的作者或公司。

  2. 软件的版权可以由版权所有者指定,也可以由所有者保留,软件可以由所有者许可给用户或用户。

  3. 开发中使用的库可能会限制其使用和分发。 GPL不会使库成为公共领域,也不会使库附带开发平台。在分发应用程序之前,您应该阅读并理解许可证。有些图书馆需要支付版税,尽管近年来这种情况已经不那么常见了。

  4. 软件专利诉讼是废话。当然,您不应该故意违反软件专利。但是,有些公司会因违反专利而起诉你。即使您独立开发软件,您从未听说过该专利,也可能会发生这种情况,该专利涵盖了一种直观明显且与您的软件几乎完全无关的技术。鉴于目前的USPTO政策,除买入保险外,没有太多可以避免的事情。好消息是,专利巨魔通常会以大量资金起诉大公司。

  5. 如果您使用员工或自由职业者开发软件,您应该以书面形式明确谁拥有该应用程序的版权,包括源代码。一些自由职业者和合同开发公司认为源代码是他们自己的财产,使公司依赖于原始开发人员。如果它在开发协议中,这是合法的。

  6. 如果您的员工“全天候”开发软件,您应该明确谁拥有该软件,以及员工应该在公司外部编写和分发哪种软件。 / p>

  7. 如果您是开发软件的员工或自由职业者,您应该在开始开发之前明确谁将拥有您的应用程序的版权。此外,您应该知道或澄清谁拥有您自己编写的软件。一些公司在雇佣协议中有条款声称对开发商在雇佣期间撰写的任何软件拥有所有权,无论是在家还是在工作。许多公司在雇佣协议中都有不竞争条款,这些条款限制了员工可以生产以在公司外部分发的软件。有时这些限制非常广泛。

  8. 商标是名称或符号,而不是软件本身。如果您分发软件,您应该(a)确保您的应用程序名称和“标记”或名称的设计与其他应用程序不“混淆地相似”,并且(b)注册您的商标。首次使用日期对于解决冲突非常重要,因此您应该记录应用程序首次在商业中使用的时间。

  9. 当您为应用程序命名时,请检查注册商标,还要检查Google。首次使用该名称的申请可能会在申请成功后取得您的姓名和商标,即使他们尚未注册您的商标,也可以。

  10. 当您使用或签署合同或协议时,请确保双方都理解。在就业协议中,预先提及任何潜在的敏感区域可以防止以后出现很多问题。在开发协议中,如果双方都知道谁拥有源代码,谁负责升级,谁负责维护等,进入开发项目,则申请后诉讼的可能性要小得多。已经完成。在分销协议中,确保分销商了解协议的责任和期限。

  11. 每个非平凡的应用程序都有错误(或“设计考虑因素”:-))。任何用户协议或分发协议都应明确表明您不对无错误的软件负责,并且不能指望您修复所有错误。明确指出,开发人员可以选择(或尽最大努力)进行更改,修复和升级,并明确谁为修复和升级付费。

  12. 即使在您咨询律师有关软件开发和分销协议之后,您也应该阅读其他软件公司的协议,看看他们的律师提出了什么。

  13. 我不是律师,这不是法律建议。

答案 1 :(得分:28)

如有疑问,请联系律师。

答案 2 :(得分:26)

我不是律师,但随着时间的推移,我从法律人员那里收集了一些可以用来节省时间的经验法则:

  • GPL许可证是“副本左侧”或“病毒式”。这意味着您编写的依赖于GPL组件的任何代码也必须在GPL下发布。一个好的经验法则是,如果您需要GPL组件来编译您的软件,您的软件必须在GPL许可下发布。
  • 如果您不分发软件,则没有义务提供您的来源。例如,如果您为内部目的或在Web服务器上运行该软件,则无需释放源。这就是Google不需要发布使用GPL库的软件的原因。这是GPL v3中的一个关键争论点。
  • 如果您将LGPL-ed库合并为不可替代的LGPL,则LGPL(Library或Lesser GPL)仅要求您使用GPL自己的源代码。如果您只是“使用”库,则您自己的软件不需要是GPL。除了正确的版权声明之外,包括头文件和链接到库的.dll / .so是您可以“使用”LGPL编码而无任何义务的方法之一。
  • BSD许可证(Apache许可证非常相似)允许您创建使用开源组件的商业扩展。这就是为什么Apple选择FreeBSD而不是Linux作为OSX的内核。
  • MPL非常友好,因为Netscape认为在编写许可证时可能会从Mozilla赚到一些钱。

通常有助于联系开源项目的维护者。他们最有可能向您提供有关许可的初衷以及他们对开源的看法。有时,维护者愿意在多个许可证下发布软件来帮助您。通常他们不是。取决于拥有版权的人。

KDE项目有一个handy matrix

答案 3 :(得分:8)

我认为Stephen Fishman律师Legal Guide to Web & Software Development正是您所寻找的。

alt text

  

查看

     

一本很棒的书!答案差不多   您可以想象的每个法律问题   还有一些你从未想过的   的。 - John Dvorak,PC Magazine

     

涵盖所有可以想象的细节   这样一个快速增长的重要   和无形媒介。 - 企业家

     

这本书通过了我自己的个人测试   法律指南 - 有更高的分数   比任何其他法律指南。 - 杰夫   Duntemann,编辑,PC技术   杂志

     

产品说明

     

保护您的权利和您的辛勤工作!

     

涵盖网站和软件的法律   发展是复杂和令人困惑的,   但如果你不解开它们,那就是它   可能会花费你数千美元   律师费和诉讼。

     

幸运的是,网络法律指南&   软件开发解码了这一点   法律的复杂领域,彻底   和读者友好的英语。它   还提供合同,协议   和CD-ROM上的法律形式   填写的逐步说明   他们出去了,所以你可以保护你的   没有付费的软件和网站   律师的赎金。

     

使用网络法律指南&软件   发展学习:

     
      
  • 您需要什么样的法律保护
  •   
  • 每种保护的优点和局限
  •   
  • 如何避免侵权
  •   
  • 在起草协议时您需要哪些条款
  •   
  • 如何获得使用他人资料的许可
  •   
     

你会发现完整的,一步一步的   起草说明:

     
      
  • 就业协议
  •   
  • 承包商和顾问协议
  •   
  • 开发协议
  •   
  • 许可协议
  •   
     

第5版“网络法律指南”   &安培;软件开发完全是   更新以提供最新的判例法   和法定修订。

其他一些建议:

答案 4 :(得分:4)

如果是自由职业者或承包商:确保您拥有良好的责任保险并知道其中涵盖的内容。

例如,我所承担的责任不包括可能会泄露信用卡号码的代码中的错误。所以我不再触摸那些东西了!

答案 5 :(得分:3)

对于员工:我们应该能够向您的客户提供第一轮建议 - 就像他们/我们在他们的申请中使用我们想要的组件一样?

对于自由职业者:我们必须能够为您的客户提供强有力的建议;并选择我们可以为我们开发的应用程序使用哪些组件。

当然,你的话不如律师能给你的建议好;但你已经可以帮助第一轮了;例如,说“我们绝对不能使用它,因为它意味着......”
最后,律师会对角落案件了解多少 - 但如果你能帮上忙......


对于OSS贡献者:了解免费许可证之间的某些差异可能很重要,如果您关心人们可以对您的代码做什么(重新分发?修改?在商业应用程序中使用它?在专有应用程序中使用它?)

答案 6 :(得分:3)

一个答案断言法律不像代码。我不同意。

在早期,IBM通过指令向程序员付费。 (我知道有人说他和一个以这种方式致富的程序员一起工作。显然那个人不知道如何使用机器的索引寄存器;他写了一个内存为零的例程,在每个内存地址中手动存储零。)

还有一段时间(很久以前)律师被这个词支付了费用。这有助于普及诸如将人们视为“最受尊敬的诸如此类”和其他动词的做法。

我刚刚读了一篇关于SO的回答说VB.NET 2008 仍然允许行号。您仍然可以在现代PC上运行纯DOS。这个笑话有很多道理,所有COBOL程序都是通过增量变化从共同的祖先中解脱出来的。向后兼容性和“历史原因”在我们的领域中很普遍。

这与法律领域相当。有些法律对其他法律进行了小的(或大的)改变。你有一种依赖 - 地狱。有一些荒谬的历史规律(在霍巴特,塔斯马尼亚,一个男人在日落之后穿女人的衣服是非法的 - 因为曾几何时,囚犯会打扮成女人和马克杯的人)没有人会梦想强制执行,就像软件中有一些历史特征,没有人再使用了。

法律经常有意想不到的结果(错误!),以创造性的方式使用(黑客!),包含漏洞(安全漏洞!),其中一些是有意的(后门!),被修改(补丁!)或被推翻(卸载!)。

是的,法律(与代码不同)需要解释。但我认为这更像是代码维护。它有助于根据新的社会规范调整法律。

直接回答这个问题:每个开发人员都应该知道法律就像一个已经开发了数百年的荒谬巨大的软件项目。 (实际上,每个国家都有自己的项目,他们以不同的方式解决问题。)理论上,在阅读许可证后,您将知道您的代码可以做什么,不能做什么。但是如果一个称职的程序员只是通过阅读就无法发现他的代码中的所有错误,那么非律师有什么机会分析法律文件的角落案例和灰色区域?< / p>

与软件源代码一样,您通常可以通过阅读来获取法律文件的要点,但如果您需要了解具体的内容,请专业人士

答案 7 :(得分:1)

NOLO(我不为他们工作)为外行人出版了一套合法的法律书籍。

http://www.nolo.com/products/a-legal-guide-to-web-&-software-development-SFT.html

答案 8 :(得分:1)

我会以同样的方式回答这个问题,我会回答“每个律师应该对编程知道什么?”也就是说,要知道你不可能完全了解这个深度领域,而不是做最简单的事情。找专家。

答案 9 :(得分:1)

您应该了解您将要使用的许可的基本权利和义务。这并不难,即使有很多,你也需要仔细阅读你将要使用或触摸的那些。只需阅读它们,在大多数情况下它们都很清楚。

你需要的任何其他东西,这取决于。专利?商标?如果您需要这些东西,很可能是您在一家公司并且有一个法律部门为您做这件事。

答案 10 :(得分:1)

我总是假设项目的开发人员希望使用他们的工作的任何软件在完全相同的许可下发布。阅读他们的常见问题解答和法律页面了解更多信息,如果您仍不确定,请随时联系开发人员/维护人员。

如果您需要帮助了解许可协议的详细信息,请咨询律师。

答案 11 :(得分:1)

  1. 不要在律师多于开发人员的国家工作。
  2. 所有(美国)软件专利中有很大一部分是虚假的,但您无法支付或等待它们失效。
  3. 如果您想使用/开发开源软件,请使用现有许可证,不要对其进行修改。不要靠近许可证的含义。

答案 12 :(得分:0)

知识产权律师的名字。

答案 13 :(得分:0)

  

6.如果您的员工“全天候”开发软件,您应该明确谁拥有&gt;该软件,以及员工应该能够编写和分发的软件类型   在公司外面。

大多数宪法所规定的言论自由权(特别是如果开发人员免费提供免费s / w)可以使这些条款在法庭上失败

答案 14 :(得分:-1)

法律不像代码。它不是一套精心设计的步骤和规则,可以毫不含糊地理解。