每个开发人员应了解法律事项什么?[关闭]


80

今天,对GPL许可证的某些含义感到惊讶,这主要是因为我不能像我想的那样自由地使用它。

现在我明白了。

我还应该了解什么,并且更广泛地讲,每个开发人员应该对类似的法律知识了解什么?

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


11
当我听到“它是开源的。您可以用它做任何您想做的事”时,我感到不安。这不是真的。
吉姆(Jim)

4
@吉姆:从技术上讲,这不是您不能做的事情,这是您完成自己想要的事情后被迫要做的事情。
亚当·贝莱尔

20
当我看到在4行文本框中显示带有5000多个单词的许可协议时,我也感到畏缩,其下面的“我同意”按钮。
NVRAM

7
而且,当他们希望您每次发布新的修补程序版本以检查是否有差异时,都希望您阅读它时,我会感到更加畏惧。差点给我,该死!
Stefano Borini

6
一般来说,我只是畏缩很多。
j_random_hacker 2011年

Answers:


135

软件开发的十二个法律注意事项

  1. 如果该软件可供公众使用,则该软件受版权保护。不再需要在应用程序或源代码上放置版权声明。版权拥有者是作者或付费作者的公司。

  2. 软件的版权可以由版权所有者分配,也可以由所有者保留,并且软件可以由所有者授权给一个或多个用户。

  3. 开发中使用的库可能在使用和分发方面受到限制。GPL不会使图书馆成为公共领域,图书馆也没有附带开发平台这一事实。在分发应用程序之前,您应该阅读并了解许可证。一些图书馆需要支付版权使用费,尽管近年来这种情况已不那么普遍了。

  4. 软件专利诉讼就是废话。当然,您不应故意违反软件专利。但是,有些公司会以极小但真实的机会起诉您侵犯其专利。即使您是独立开发软件,却从未听说过该专利,而且该专利所涵盖的技术在直观上是显而易见的,而且几乎与您的软件完全无关,否则可能会发生这种情况。鉴于美国专利商标局当前的政策,除了购买保险外,您没有很多方法可以避免这种情况。好消息是,专利巨魔通常以大笔钱起诉大公司。

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

  6. 如果您有一个“不间断”开发软件的员工,则应明确说明谁拥有该软件,以及该员工应该能够在公司外部编写和分发哪种软件。

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

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

  9. 为应用程序命名时,请检查注册商标,同时还要检查Google。首次使用该名称的应用程序在您的申请成功后仍可以使用您的名称和商标,即使它们尚未注册商标也已注册。

  10. 当您使用或签署合同或协议时,请确保双方都理解。在一份雇佣协议中,提前提及任何潜在的敏感区域可以防止以后出现很多问题。在开发协议中,如果双方都知道谁拥有源代码,谁负责升级,或者谁负责维护等进入开发项目,那么在申请后提起诉讼的可能性就会大大降低已经完成。在分销协议中,请确保分销商了解协议的责任和条款。

  11. 每个不平凡的应用程序都有错误(或“设计注意事项” :-)。任何用户协议或发行协议都应明确说明您对无错误软件不承担任何责任,也不希望您修复所有错误。明确指出,更改,修复和升级是开发人员的选择(或尽力而为),并明确指出谁为修复和升级付费。

  12. 即使您就软件开发和发行协议咨询了律师,您也应该阅读其他软件公司的协议,并看看他们的律师提出了什么。

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


4
我接受了这个答案,因为它非常有趣,而且自从最近添加以来就没有太多的见解。一个同样有趣的答案是:stackoverflow.com/questions/1396191/…。当然,每个人都还提到咨询律师很重要的事实。
marcgg

1
这也是一个有趣的答案:stackoverflow.com/questions/1396191/…,参考了​​一些与此主题相关的书。
marcgg

Some freelancers and contract development companies consider the source code their own property, leaving the company dependent on the original developer(s). This is legal if it's in the development agreement.如果您不做自由职业者,则最好额外付费。如果您花时间设计一个干净的基础系统,为什么要让他们带到一些车身修理厂获得回报呢?您已经在代码库中进行了投资,这就是您使投资获得回报的方式。此外,这还使您可以将其他地方的通用逻辑重用于下一个客户端。
雪橇

1
@ArtB,因为您已经获得报酬了?
罗布·福克斯

如果在金钱和可以赚钱的东西之间做出选择,那么赚钱的人就超过了钱。长期的业务将是值得的。它甚至可以让您提供较低的初始出价。地狱,您甚至可以将代码库出售给其他开发人员!除非您拥有可以产生更高回报率,花费更少资金和更多资金的地方,否则对于独立承包商而言,这只是一种出色的商业模式。
雪橇

28

如有疑问,请联系律师。


18
...而且在怀疑方面犯了错误。
Beska

2
我的想法也是,如果您了解一些知识,您将能够更加轻松地告知何时需要联系律师。就像吉姆(Jim)在评论问题时所说的那样,有些人认为“它是开源的。您可以用它做任何想做的事。”
marcgg

3
如有疑问,可以。但是“怀疑”应该足够小,以至于我们不需要所有人都聘请律师。任何开发人员都应该对知识产权法有合理的了解,并且对通用开放源代码许可所施加的限制和义务有清晰的了解。律师是一个棘手的问题。
亚当·贾斯基维奇

1
@Adam-在法律上,如果有人对他们提出争执,即使是简单的问题也可能变得“难” ...
Rook

1
您不会为每一个麻烦去找医生,也不会为每个法律问题都去找律师。每个成年人需要足够的了解医药在其营业,这些都是真正的法律-要知道,当你真的需要调用在专业人士的帮助!
汤姆·史威利

26

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

  • GPL许可证为“左复制”或“病毒”。这意味着您编写的任何依赖GPL组件的代码也必须在GPL下发布。一个好的经验法则是,如果您需要GPL组件来编译软件,则必须根据GPL许可发布软件。
  • 如果您不分发软件,则没有义务使您的源可用。例如,如果您出于内部目的或在Web服务器上运行该软件,则无需发布源代码。这就是Google无需发布使用GPL库的软件的原因。这是GPL v3中的关键竞争点。
  • 如果以不可替代的方式合并LGPL版本的库,则LGPL(库或较小的GPL)仅要求您使用自己的源代码GPL。如果您仅“使用”该库,则您自己的软件不必是GPL。包括头文件并针对库的.dll/.so进行链接是您无需任何义务即可“使用” LGPL编码的方法之一,除非获得适当的版权声明。
  • BSD许可证(Apache许可证非常相似)允许您使用开放源代码组件创建其商业扩展。这就是为什么Apple选择Linux上的FreeBSD作为OSX的内核。
  • MPL对商业非常友好,因为Netscape认为在编写许可证时,他们可能会从Mozilla赚钱。

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

KDE项目有一个方便的矩阵


1
好的,我们都知道,“希望请律师”答复是(希望)涉及细节的常识。除此之外,这是一个很好的总结性答案...仅靠KDE矩阵链接是非常方便的参考!
食人魔赞美诗09年

2
对第一点的一种纠正:仅当“依赖”涉及(动态或静态)将GPL代码链接到程序的可执行文件中或以其他方式将程序复杂地捆绑在一起(例如,内存转储)时。如果您为使用grep的Linux编写了专有程序,并且仅适用于GNU版本,那么只要grep代码不在可执行文件中,您就可以了。不过,IANAL。
Michael Ekstrand 2009年

关于GPL的另一点是,它仅适用于您分发的软件。如果您在自己的服务器上运行它,则不会自动进行GPL。
mpeters 2011年

> LGPL(库或较小的GPL)仅在您以无法替代的方式合并LGPL版本的库时才需要您自己的源代码。从来没有听说过。在哪里可以阅读更多内容?
Esben Skov Pedersen

2
便捷矩阵的链接不再返回便捷矩阵。
oob

8

我认为您正在寻找斯蒂芬·菲什曼律师(Stephen Fishman Attorney)撰写的《网络与软件开发法律指南》

替代文字

评论

一本了不起的书!回答几乎所有您能想到的法律问题,以及一些您从未想过的问题。-PC杂志John Dvorak

涵盖了对于这种快速增长且无形的媒介重要的所有可想象的细节。 - 企业家

这本书通过了我自己对法律指南的个人测试-得分高于任何其他法律指南。-《 PC技术杂志》编辑Jeff Duntemann

产品描述

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

有关网站和软件开发的法律既复杂又令人困惑,但是如果您不加以理会,则可能要花费数千美元的律师费和诉讼费用。

幸运的是,《网络与软件开发法律指南》以通俗易懂的英语彻底解释了法律的这一复杂领域。它还在CD-ROM上提供了合同,协议和法律表格,并附有逐步填写的说明,因此您可以保护软件和网站,而无需支付律师的赎金。

使用法律指南进行网络和软件开发以学习:

  • 您需要什么样的法律保护
  • 每种保护类型的优势和局限性
  • 如何避免侵权
  • 起草协议时需要哪些规定
  • 如何获得使用他人材料的许可

您将找到完整的分步说明来起草:

  • 雇佣协议
  • 承包商和顾问协议
  • 发展协议
  • 许可协议

网络和软件开发法律指南的第5版已完全更新,以提供最新的判例法和法定修订本。

其他一些建议:


4

如果是自由职业者或承包商:请确保您有良好的责任保险,并了解其中的内容。

例如,对于可能暴露信用卡号的代码错误,我的责任不承担任何责任。所以我不再碰那个东西!


3

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

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

当然,你的话不如律师能给你的建议多。但是你已经可以为第一轮比赛提供帮助; 例如,说“我们一定不能使用它,因为这将意味着...”
最后,律师将对拐角案件了解很多-但如果您能提供一些帮助...


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


3

一个答案断言该法律与法规不同。我不同意。

在早期,IBM通过指令向程序员收费。(我认识的人说他曾与这样富有的程序员一起工作。显然,这个家伙不知道如何使用机器的索引寄存器;他编写了一个内存为零的例程,该例程在每个内存地址中手动存储了零。)

还有一段时间(很久以前),律师付钱给了他。这有助于普及一些做法,例如称呼人们“最受尊敬的某某某某”和其他冗长的词句。

我刚刚在SO上读到一个答案,说VB.NET 2008仍然允许行号。您仍然可以在现代PC上运行纯DOS。这个笑话有很多道理,那就是所有COBOL程序都是通过增量更改而脱离同一个祖先的。向后兼容和“历史原因”在我们领域中盛行。

这相当于法律领域。有些法律会对其他法律进行较小(或较大)的更改。您有一种依赖地狱。有一些荒谬的历史法则(在塔斯马尼亚州的霍巴特,日落之后男人穿女人的衣服是违法的-因为从前,罪犯会打扮成女人和杯子的人),没人会梦想执行,就像软件中有一些历史功能,不再有人使用。

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

是的,法律(与法规不同)需要解释。但是我认为这很像代码维护。它有助于使法律适应新的社会规范。

要直接回答这个问题:每个开发人员都应该知道法律就像一个可笑的巨大软件项目,已经开发了数百年。(实际上,每个国家/地区都有自己的项目,它们以不同的方式解决问题。)从理论上讲,阅读许可证后,您将知道您可以使用或不能使用您的代码。但是,如果有能力的程序员不能仅通过阅读就能发现其代码中的所有错误,那么非律师有多少机会分析合法文档的特殊情况和灰色区域?

像使用软件源代码一样,通常可以通过阅读来获得法律文档的要旨,但是如果您需要了解特定的知识,请咨询专业人员



1

我的回答方式与回答“每个律师应该对编程了解什么”的方式相同。就是说,要知道,除了最简单的事情之外,您不可能完全了解深度领域以完成更多工作。找专家。


但是,为了节省资金,对此有一个基本的了解总是有帮助的,并且有点觉得法律问题将会出现,您不是吗?
marcgg

绝对。(因此,我投票赞成该问题。)但我认为最重要的问题是,在学习新概念的过程中,人们常常会误以为他们知道多少……直到后来,他们才知道。发现该领域的深度和微妙之处。在许多领域这可能是危险的,法律当然也不例外。我想尽可能多地了解,以便识别危险信号并传递给专家进行分析。
Beska

1

您应该知道将要使用的许可证的基本权利和义务。这并不难,即使有很多,也只需要仔细阅读将要使用或接触的内容即可。只需阅读它们,在大多数情况下,它们都非常清楚。

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


1

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

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


1
  1. 不要在律师比开发人员多的国家/地区工作。
  2. 在所有(美国)软件专利中,很大一部分都是虚假的,但您不能付款或等待它们被无效。
  3. 如果要使用/开发开源软件,请使用现有许可证,不要修改它。不要走在许可证应该指的边界附近。


0

6.如果您有一名员工“不间断”开发软件,则应清楚说明谁拥有该软件,以及该员工应能够在公司外部编写和分发哪种软件。

大多数宪法中规定的言论自由权(尤其是如果开发人员不按时免费提供软件)可能会使此类条款在法庭上惨败


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.