每个开发者应该知道什么是法律问题?
今天, 我对GPL许可证的一些含义有了一个惊喜 ,主要是我不能像我想的那样自由使用它。
现在我明白了。
还有什么我应该知道,更广泛地说,每个开发者应该知道这样的法律事物?
您可以将员工,自由职业者,开源项目贡献者(等等)分开,或给出更广泛的答案。
软件开发的十二个法律考虑
-
软件如果向公众开放,则受版权保护。 在应用程序或源代码中不再需要提供版权声明。 版权所有者是作者或支付作者的公司。
-
软件的版权可以由版权所有者分配,也可以由所有者保留,软件可以由所有者授权给用户或用户。
-
开发中使用的图书馆可能在使用和分发方面有所限制。 GPL不会使图书馆成为公有领域,也不会使图书馆拥有开发平台。 在分发应用程序之前,您应该阅读并理解许可证。 一些图书馆要求特许权使用费,尽pipe近年来这种情况已经不常见了。
-
软件专利诉讼是垃圾笋。 当然,您不应该故意违反软件专利。 但是,有一些公司会因为违反他们的专利而起诉你。 即使您独立开发软件,您从未听说过专利,这种情况也可能会发生,专利涵盖了一种直观明显的技术,几乎完全与您的软件无关。 鉴于目前的USPTO政策,除了购买保险以外,没有太多可以避免这种情况。 好消息是,专利巨人通常以大量的钱起诉大公司。
-
如果您使用员工或自由职业者开发软件,则应以书面forms明确说明谁拥有应用程序的版权,包括源代码。 一些自由职业者和合同开发公司认为源代码是他们自己的财产,使公司依赖于原始开发者。 如果它在开发协议中,这是合法的。
-
如果你有一个“全天候”开发软件的员工,你应该明确谁拥有这个软件,以及员工应该能够在公司之外编写和分发什么样的软件。
-
如果您是开发软件的员工或自由职业者,在开始开发之前,您应该明确谁将拥有您的应用程序的版权。 此外,你应该知道或澄清谁拥有你自己写的软件。 一些公司在就业协议中有条款声明拥有在开发期间由开发者编写的任何软件的所有权,无论在家中还是在工作中。 许多公司在雇佣协议中有不竞争的条款,限制员工可以在公司外部分发的软件。 有时这些限制是相当广泛的。
-
商标是名称或符号,而不是软件本身。 如果您分发软件,您应该:(a)确保您的应用程序名称和“标记”或名称的devise与其他应用程序不是“混淆性相似”,并且(b)注册您的商标。 首次使用date对于解决冲突非常重要,因此您应该logging应用程序首次在商业中的使用情况。
-
当您申请一个应用程序,检查注册商标,但也检查谷歌。 首次使用该名称的申请可能能够在申请成功后获得您的姓名和商标,即使他们没有注册商标并且您拥有。
-
当您使用或签署合同或协议时,确保双方都了解。 在就业协议中,提前提到任何潜在的敏感领域可以防止以后出现很多问题。 在开发协议中,如果双方知道谁拥有源代码,谁负责升级,谁负责维护等,进入开发项目,那么申请之后的起诉的可能性要小得多已经完成。 在分销协议中,确保分销商了解协议的责任和期限。
-
每个非平凡的应用程序都有错误(或“devise考虑”:-))。 任何用户协议或分发协议都应该清楚地表明您对无错软件不承担责任,并且不能期望修复所有的错误。 清楚地说明,开发人员可以select(或尽最大努力)进行更改,修复和升级,并明确谁来支付修复和升级费用。
-
即使在你咨询有关软件开发和分销协议的律师之后,你应该阅读其他软件公司的协议,看看他们的律师提出了什么。
-
我不是律师,这不是法律意见。
如有疑问,请联系律师。
我不是律师,但随着时间的推移,我收集了法律人士的一些经验法则,可以节省时间:
- GPL许可证是“copy-left”或“viral”。 这意味着你写的任何依赖于GPL组件的代码也必须在GPL下发布。 一个好的经验法则是,如果你需要一个GPL组件来编译你的软件,你的软件必须在GPL许可下发布。
- 如果你没有发布你的软件,你没有义务使你的源代码可用。 例如,如果为了内部目的或在Web服务器上运行软件,则不需要释放源代码。 这就是为什么Google不需要发布使用GPL库的软件。 这是GPL v3中的一个关键点。
- LGPL(库或更低版本的GPL)只需要您将GPL自己的源代码join到LGPL库中,使其成为不可替代的。 如果您只使用库,您自己的软件不需要成为GPL。 包括头文件和链接到库的
.dll
/.so
是您可以“使用”LGPL编码没有任何义务的方式之一,除了适当的版权声明。 - BSD许可证(Apache许可证非常相似)允许您创build使用开源组件的商业扩展。 这就是为什么苹果selectLinux上的FreeBSD作为OSX的内核。
- MPL是非常商业化的,因为Netscape认为他们可能会在许可证写入的时候从Mozilla中赚取一些钱。
它通常有助于联系开源项目的维护者。 他们最有可能就许可的初衷以及他们对开源的看法向你提供build议。 有时维护人员愿意发布多个许可证下的软件来帮助你。 他们通常不是。 取决于拥有版权的人。
KDE项目有一个方便的matrix
我认为Stephen Fishman律师的networking和软件开发法律指南就是你要找的。
评论
一本很棒的书! 几乎所有你能想象得到的法律问题,以及你从未想过的一些问题。 – 个人电脑杂志John Dvorak
涵盖了每一个可以想象到的细节,对这样一个迅速发展和无形的媒体重要。 – 企业家
这本书通过我自己的法律指南的个人testing – 比任何其他法律指导的分数更高。 – PC技术杂志编辑Jeff Duntemann
产品描述
保护你的权利,你的辛勤工作!
涵盖网站和软件开发的法律是复杂而混乱的,但如果不解决这些法律问题,可能会花费您数千美元的律师费和诉讼费。
幸运的是,“networking与软件开发法律指南”对这一复杂的法律领域进行了彻底的解读,并以便于读者阅读的英文。 它还提供CD-ROM上的合同,协议和法律forms,并提供一步一步的填写说明,这样您就可以保护您的软件和网站,而无需支付律师的赎金。
使用法律指南进行networking和软件开发学习:
- 你需要什么样的法律保护
- 每种保护的优点和局限性
- 如何避免侵权
- 起草协议时需要哪些条款
- 如何获得使用他人资料的许可
您将find完整的分步说明:
- 就业协议
- 承包商和顾问协议
- 发展协议
- 许可协议
“networking和软件开发法律指南”第5版完全更新,提供最新的判例法和修订。
其他一些build议:
- 为自己工作:独立承包商,自由职业者和顾问的法律和税收 (同一作者)。
- 顾问和独立承包商协议 (同一作者)。
- 软件许可手册 Jeffrey I. Gordon。
- H. Ward Classen的许可证和许可人软件许可实用指南 。
- 技术合同袖珍指南:由David Tollen 为销售人员,合同经理,业务开发人员和律师提供的软件和服务协议 。
如果是自由职业者或承包商:确保你有良好的责任保险,并知道它涵盖的内容。
例如,我的代码中可能会暴露信用卡号码的错误不承担责任。 所以我不再触摸那些东西了!
对于员工:我们应该能够为您的客户提供第一轮的build议 – 就像他/她们在应用程序中使用我们想要的组件一样?
对于自由职业者:我们必须能够给你的客户提供强有力的build议; 并select我们可以为我们开发的应用程序使用哪些组件。
当然,你的话不如律师能给你的build议好; 但是你已经可以在第一轮帮助了; 比如说“我们明确地不能使用这个,因为这意味着……”
最后,律师会知道很多关于angular落案件 – 但如果你能帮助一点点…
对于开放源码软件的贡献者来说:如果你关心人们如何处理你的代码(重新分配,修改,在商业应用中使用,在专有应用程序中使用它,
一个答案认为,法律不像代码。 我不同意。
在早期,IBM通过指令为程序员付钱。 (我知道有人说他和一个这样富有的程序员一起工作,显然这个人不知道如何使用机器的索引寄存器;他写了一个内存零例程,在每个内存地址中手动存储零)。
还有一段时间(很久以前),律师是由这个词支付的。 这有助于普及诸如将人们作为“最受尊敬的某某”等其他语言的做法。
我刚刚读了一个答案,说VB.NET 2008 仍然允许行号 。 您仍然可以在现代PC上运行纯DOS。 所有的COBOL程序都是从一个共同的祖先开始逐渐变化的,这个笑话有很多的道理。 向后兼容性和“历史原因”在我们这个领域很盛行。
这相当于法律的领域。 有些法律对其他法律做了小的(或大的)修改。 你有一种依赖 – 地狱。 有一些荒谬的历史规律(在塔斯马尼亚的霍巴特,男人在日落之后穿女人的衣服是违法的 – 因为曾几何时,犯人会打扮成女人和杯子),没有人会想要强制执行,就像软件中有一些历史function,没人再用。
法律通常会有意想不到的后果(bug),以创造性的方式使用(包括!),包含漏洞(安全漏洞!),其中一些是故意的(后门!),被修改(补丁!)或被推翻(卸载! 。
是的,法律(不同于代码)可以解释。 但是我觉得这很像代码维护。 它有助于将法律调整到新的社会规范。
直接回答这个问题:每个开发者都应该知道,法律就像是一个已经发展了数百年的荒谬巨大的软件项目。 (实际上,每个国家都有自己的项目,他们以不同的方式解决问题。)理论上,在阅读许可证之后,您将知道自己可以做什么,不能做什么。 但是,如果一个称职的程序员不能通过阅读他的代码来发现所有的错误,那么非律师就法律文件的angular落案例和灰色地带进行分析有什么机会呢?
与软件源代码一样,您通常可以阅读法律文件的要点,但是如果您需要了解具体内容, 请咨询专业人士 。
NOLO(我不为他们工作)出版了一套很好的法律如何为外行书籍。
http://www.nolo.com/products/a-legal-guide-to-web-&-software-development-SFT.html
我会以同样的方式回答这个问题,即我会回答“每个律师应该怎么知道编程?” 也就是说,知道你不可能深入了解深度领域,而不是做最简单的事情。 得到专家。
您应该知道您要使用的许可证的基本权利和义务。 这并不难,即使有很多,你只需要仔细阅读你将要使用或触摸的那些。 只要阅读它们,大多数情况下它们都很清楚。
还有什么你可能需要的,那要看情况。 专利? 商标? 如果你需要这些东西,那么很有可能你在一家公司,并且有一个法律部门为你做这件事。
我总是会假设一个项目的开发人员希望任何使用他们的工作的软件在同一个许可证下被发布。 阅读他们的常见问题和法律页面以获取更多信息,如果您还不确定,请不要犹豫与开发人员/维护人员联系。
如果您需要帮助了解许可协议的细节,请咨询律师。
- 不要在一个律师比开发者多的国家工作。
- 所有(美国)软件专利中有相当大的比例是虚假的,但你无法支付或等待它们失效。
- 如果您想使用/开发开源软件,请使用现有许可证,不要修改它。 不要靠近许可证的含义。
一个好的知识产权律师的名字。
6.如果你有一个“全天候”开发软件的员工,你应该明确谁拥有该软件,以及该员工应该在公司外部编写和分发哪种软件。
在大多数宪法(特别是开发者是否在24小时内自由发表)中所述的言论自由权可以使法院在法庭上失败
法律不像代码。 这不是一套完整的步骤和规则,可以毫不含糊地理解。