我应该如何对我的免费软件进行版权和许可?

时间:2009-10-21 10:51:31

标签: ruby open-source licensing debian

我对开源免费软件的事情都很陌生,但无论如何我都会很好(我猜!!)。

现在的问题是:在分发我的程序的过程中,我将不得不分发我的源代码,所以它将是一个带有安装程序的(.gz),或者是(.deb)。< / p>

我的问题是:

  1. (我知道这是一个愚蠢的,但我是新来的)我怎样才能确保没有人会把我的源代码用作他们的源代码,我的意思是该程序是免费的,但是我需要某种证据证明这件事是我写的吗?

  2. 我应该为该计划提供什么样的开源许可? (考虑到我使用的是Debian,Ruby,Cron,Partimage,Qt4)

9 个答案:

答案 0 :(得分:6)

有许多不同的开源许可证,其中许多都有细微差别。您需要确定对您的代码如何被其他人使用和分发的重要性。

Wikipedia上的一些可用许可进行了很好的比较。

从该列表中,您还应该查看每个许可证上的wikipeida页面,了解其详细信息。

你应该看看的主要是GPL,LGPL,麻省理工学院,BSD,Apache和Mozilla。

同样值得看看各种creative commons许可证。它们提供了一些易于配置的选项,可以构建适合您的许可证。

请注意,某些许可证(如GPL)要求如果有人想使用您的代码,则必须使用相同(或兼容)的许可证进行发布。这可能会限制商业公司或专有软件使用的代码,因此有些人更喜欢限制较少的许可。这当然完全取决于您,以及您希望如何使用代码。

答案 1 :(得分:2)

您的代码表明您要分发ruby软件。您可以通过gemcutter将其作为宝石分发。

并且不可能保证没有人会将您的代码重新用作自己的代码,因为并非所有人都遵守许可条款。

答案 2 :(得分:2)

  

我如何确保没有人会将我的源代码用作他们的源代码,我的意思是该程序是免费的

也许你根本不想开源它。即使没有来源,您仍然可以免费使用它。

如果你开源它没有办法(也没有意义)阻止其他人使用和更改你的源代码也使它成为他们的源代码。所以当时它不再是“你的”了。至少不是唯一的。

答案 3 :(得分:1)

您可以使用MyFreeCopyright来表明您已对其进行了版权保护。这可能是最简单的方法。

你应该获得什么许可取决于你允许他人做什么。

  • GPL - 一般用途,保持免费,仅适用于开源社区
  • LGPL - 如果对应用程序/库的任何改进也是免费的,则可用于商业应用程序
  • MIT - 如果许可证保持不变,则可用于所有目的
  • Copyleft - 用它做任何你想做的事
  • 知识共享 - 多种选择,更易于理解

答案 4 :(得分:1)

您选择的许可证在很大程度上取决于您使用的组件的许可证。据我所知,partimage是GPL,其他可能是麻省理工学院或BSD和LGPL。您需要使用与所有组件兼容的许可证。因此,如果您的项目(例如)主要是partimage的扩展,那么您必须选择GPL。

如果你想要符合“Debian精神”的话,GPL也是一个很自然的选择。

1) - 然而不可能。这就是DRM和沉重的加密内容。你唯一能做的就是申请许可证并期望人们尊重它。或者,当然,只要你发现任何人违反许可证,就会把事情告上法庭 - 昂贵且烦人。

答案 5 :(得分:1)

只有一种方法可以确保知道一个人使用您的源代码作为他们的源代码。不要公开您的源代码。但是从你写问题的方式来判断,这对你来说不是一个选择。

许可证

天啊。没有免费软件许可,禁止任何人对源代码做任何他们想做的事情,只要他们不发布它。

您项目的正确许可取决于您的分享意图:

  • 如果您不想在每个衍生品中记住您的名字,无论衍生品是免费的还是合法的,请使用BSD风格的许可证。但请注意。甚至微软也可以在不告诉你的情况下将你的代码包含在新的Windows版本中。这些许可证中有几个(BSD,MIT,MPL,......)。它们列在http://en.wikipedia.org/wiki/BSD_licenses#BSD-style_licenses
  • 如果您想确保您软件的所有衍生产品都是免费的。你可以使用GPL。 GPL强制所有衍生品也是GPL。

GPL

GPL的几种变体有不同的限制:

  • AGPL使用您的代码的任何衍生产品必须根据AGPL发布。即使衍生产品只能通过网络访问(例如,如果我修改您的http服务器并且它在我的服务器上运行),它必须在AGPL下发布。
  • GPL使用您的代码的任何衍生产品必须根据GPL或AGPL发布。即使他们只将您的代码用作库
  • LGPL任何直接使用您的源代码的衍生产品必须根据LGPL或GPL或AGPL发布。如果某个人只是使​​用你的图书馆而没有用他自己的项目打包,他可以使用他想要的任何许可证。

因此,如果您使用GPL软件并且partimage是GPL软件,则必须使用GPL作为软件的许可。我一直不喜欢AGPL。

请注意:GPL只说你必须给那些源代码,你给了程序。因此,如果有人出售他的衍生品,他只需要给你源代码,如果你购买该程序。

答案 6 :(得分:1)

1)一旦您分发软件,您就会自动开始留下所有权证据。开源软件档案是镜像的,一些组织维护公共邮件列表和其他Internet部分的档案。分布式版本控制意味着项目的整个历史记录可以由很多人持有。

Linus Torvalds开玩笑说,真正的男人不会备份,他们只是上传他们的东西,让世界反映它。

在实践中,很可能很少有人会使用某个软件,而不是任何人都会关心自己的软件。

2)您必须使用符合您重复使用的软件许可条款的许可。这就是GPL被称为病毒的原因 - 如果您编写的软件直接链接到任何GPL软件,您必须使用GPL代码,或者获得版权所有者的豁免。

如果您有自由选择,我建议使用MIT许可证,因为这是Ruby代码的标准许可证。它非常简短易读。

答案 7 :(得分:0)

使用GPL - http://www.gnu.org/licenses/gpl.html

包含您的源代码。

以下是如何使用它的指南 - http://www.gnu.org/licenses/gpl-howto.html

答案 8 :(得分:0)

您可以使用源代码混淆器来使反编译代码难以阅读。这在您不希望公开源代码并且希望人们难以对代码进行反向工程的情况下非常有用。

使用开源许可证的关键是您使用程序分发源代码,因此这两个要求难以协调。