There are lots of different open source licenses and many of them have minor differences. You need to decide what is important to you in how your code will be used and distributed by others.
There is a good comparison of some of the available licenses on Wikipedia.
From that list, you should also check out the wikipeida page on each license for details on their specifics.
the major ones you should take a look at are GPL, LGPL, MIT, BSD, Apache and Mozilla.
It's also worth taking a look at the various creative commons licenses. They offer some easily configurable options to build a license that suits you.
Be aware that some licenses like the GPL require that if anyone wants to work with your code, they must release under the same (or compatible) license. This can place restrictions on your code being used by commercial companies or in propriety software, so some people prefer a less restrictive license. This of course is entirely down to you, and how you would like your code to be used.
How can i make sure that no one will take my source code and use it as theirs, i mean the program is free
Maybe you don't want to open source it at all. You can still make it available for free even without the source.
If you open source it there is no way (and no sense in) preventing other people from using and changing your sourcecode with also makes it their sourcecode. So at that time it will not be "yours" anymore. At least not exclusively.
如果你有自由选择,我建议使用 MIT 许可证,因为这是 Ruby 代码的标准许可证。它非常简短且可读。
1) Once you distribute software you automatically start leaving evidence of ownership around. Open Source software archives are mirrored, several organizations maintain archives of public mailing lists and other pieces of the Internet. Distributed version control means that the whole history of a project can be held by lots of people.
Linus Torvalds joked that real men don't backup, they just upload their stuff and let the world mirror it.
In practice, it's more likely that few people will use a piece of software, rather than anyone will care enough to pass it off as their own.
2) You must use a license that complies with the terms of the licenses of the software that you are reusing. This is why the GPL is called viral - if you write software that directly links to any piece of GPL software you must use the GPL for your code, or get an exemption from the copyright holder.
If you have a free choice, I would suggest using the MIT license, because this is the standard license for Ruby code. It is very short and readable.
Which licence you chose depends heavily on the license of the components you've used. As far as I can see, partimage is GPL, the others probably MIT or BSD and LGPL. You need to use a license that is compatible with all your components. So, if your project is (for instance) mostly an extension of partimage, you'd have to go for GPL.
If you want to go with the "Debian spirit" of things, GPL would also be a natural choice.
1) - is however impossible. That way lies DRM and heavy crypto-stuff. The only thing you can do is to put on a license and expect people to respect it. Or, of course, take things to court whenever you notice anyone breaking the license - expensive and annoying.
There is only one way to ensure know one uses your sourcecode as theirs. Don't publich your sourcecode. But judjing from the way you wrote your question, this is not an option for you.
Licences
Be avare. No free software license, inhibits any person to do whatever they want to do with your sourcecode, as long as they don't publish it.
The right license for your project depends on your intention on sharing:
If you just wan't your name to be remembered in every derivative, nomatter whether the derivative is free or properitary, use a BSD-style license. But be aware. Even microsoft would be allowed to include your code in their new windows version without telling you. There are several of these license (BSD, MIT, MPL, ...). There is a list of them at http://en.wikipedia.org/wiki/BSD_licenses#BSD-style_licenses.
If you want to ensure, that all derivatives of your software are also free. You could use the GPL. The GPL forces all derivatives to also be GPL.
GPL
There are several variants of the GPL with different restrictions:
AGPL any derivative which uses your code must be published under the AGPL. Even if the derivative is only accesible vie network (for example if I modify your http server and it runs on my server), it must be published under the AGPL.
GPL any derivative which uses your code must be published under the GPL or AGPL. Even if they only use your code as a library
LGPL any derivative which uses directly your sourcecode must be published under the LGPL or GPL or AGPL. If somebdy just uses your library withouth packing it with his own project, he can use whatever license he want's.
So if you use GPL software and partimage is GPL software, you have to use GPL as license for your software. I persanaly prefer the AGPL.
Be aware: The GPL only says you have to give the sourcecode to those, you gave the program. So if somebody is selling his derivative, he only has to give you the sourcecode, if you buy the program.
You can use a source code obfuscator to make decompiled code hard to read. This is useful in situations where you don't want to make the source code public and want to make it hard for people to reverse engineer the code.
The point of using an open source license is that you distribute the source code with the program, so the two requirements are difficult to reconcile.
发布评论
评论(9)
有许多不同的开源许可证,其中许多都有细微的差别。您需要决定其他人将如何使用和分发您的代码,什么对您来说是重要的。
Wikipedia 上对一些可用许可证进行了很好的比较。
从该列表中,您还应该查看每个许可证的 wikipeida 页面,了解其具体细节的详细信息。
您应该查看的主要协议是 GPL、LGPL、MIT、BSD、Apache 和 Mozilla。
各种知识共享许可证也值得一看。他们提供了一些易于配置的选项来构建适合您的许可证。
请注意,某些许可证(例如 GPL)要求,如果任何人想要使用您的代码,他们必须在相同(或兼容)许可证下发布。这可能会限制您的代码被商业公司或专有软件使用,因此有些人更喜欢限制较少的许可证。当然,这完全取决于您以及您希望如何使用代码。
There are lots of different open source licenses and many of them have minor differences. You need to decide what is important to you in how your code will be used and distributed by others.
There is a good comparison of some of the available licenses on Wikipedia.
From that list, you should also check out the wikipeida page on each license for details on their specifics.
the major ones you should take a look at are GPL, LGPL, MIT, BSD, Apache and Mozilla.
It's also worth taking a look at the various creative commons licenses. They offer some easily configurable options to build a license that suits you.
Be aware that some licenses like the GPL require that if anyone wants to work with your code, they must release under the same (or compatible) license. This can place restrictions on your code being used by commercial companies or in propriety software, so some people prefer a less restrictive license. This of course is entirely down to you, and how you would like your code to be used.
您的标签表明您想要分发 ruby 软件。您可以通过 gemcutter 将其作为 gem 分发。
而且不可能保证没有人会重复使用您的代码作为自己的代码,因为并非每个人都遵守许可证条款。
Your tags suggest that you want to distribute ruby software. You could distribute it as a gem via gemcutter.
And it's impossible to guarantee that no one will reuse your code as their own as not everyone follows the terms of licenses.
也许您根本不想开源它。即使没有来源,您仍然可以免费提供它。
如果您将其开源,则无法(也没有意义)阻止其他人使用和更改您的源代码,也使其成为他们的源代码。那么到时候它就不再是“你的”了。至少不完全是。
Maybe you don't want to open source it at all. You can still make it available for free even without the source.
If you open source it there is no way (and no sense in) preventing other people from using and changing your sourcecode with also makes it their sourcecode. So at that time it will not be "yours" anymore. At least not exclusively.
1) 一旦你分发了软件,你就会自动开始留下所有权证据。开源软件档案是镜像的,一些组织维护公共邮件列表和互联网其他部分的档案。分布式版本控制意味着一个项目的整个历史记录可以由很多人掌握。
Linus Torvalds 开玩笑说,真正的男人不会备份,他们只是上传自己的东西,让世界镜像它。
在实践中,很可能很少有人会使用某个软件,而不是任何人都会足够关心并将其冒充为自己的软件。
2) 您必须使用符合您要重复使用的软件的许可证条款的许可证。这就是 GPL 被称为病毒式的原因 - 如果您编写的软件直接链接到任何 GPL 软件,您的代码必须使用 GPL,或者获得版权所有者的豁免。
如果你有自由选择,我建议使用 MIT 许可证,因为这是 Ruby 代码的标准许可证。它非常简短且可读。
1) Once you distribute software you automatically start leaving evidence of ownership around. Open Source software archives are mirrored, several organizations maintain archives of public mailing lists and other pieces of the Internet. Distributed version control means that the whole history of a project can be held by lots of people.
Linus Torvalds joked that real men don't backup, they just upload their stuff and let the world mirror it.
In practice, it's more likely that few people will use a piece of software, rather than anyone will care enough to pass it off as their own.
2) You must use a license that complies with the terms of the licenses of the software that you are reusing. This is why the GPL is called viral - if you write software that directly links to any piece of GPL software you must use the GPL for your code, or get an exemption from the copyright holder.
If you have a free choice, I would suggest using the MIT license, because this is the standard license for Ruby code. It is very short and readable.
您可以使用 MyFreeCopyright 来表明您已对其拥有版权。这可能是最简单的方法。
您应该使用什么许可证取决于您允许其他人使用它做什么。
You can use MyFreeCopyright to show that you've copyrighted it. It's probably the easiest way.
What licence you should depends what you allow others to do with it.
您选择哪个许可证在很大程度上取决于您所使用的组件的许可证。据我所知,partimage 是 GPL,其他的可能是 MIT 或 BSD 和 LGPL。您需要使用与所有组件兼容的许可证。因此,如果您的项目(例如)主要是partimage 的扩展,则您必须选择GPL。
如果你想遵循“Debian 精神”,GPL 也是一个自然的选择。
1) - 然而这是不可能的。这就是 DRM 和大量的加密技术。你唯一能做的就是颁发许可证并期望人们尊重它。或者,当然,只要您发现有人违反许可证,就可以将事情告上法庭——昂贵且烦人。
Which licence you chose depends heavily on the license of the components you've used. As far as I can see, partimage is GPL, the others probably MIT or BSD and LGPL. You need to use a license that is compatible with all your components. So, if your project is (for instance) mostly an extension of partimage, you'd have to go for GPL.
If you want to go with the "Debian spirit" of things, GPL would also be a natural choice.
1) - is however impossible. That way lies DRM and heavy crypto-stuff. The only thing you can do is to put on a license and expect people to respect it. Or, of course, take things to court whenever you notice anyone breaking the license - expensive and annoying.
只有一种方法可以确保人们将您的源代码用作他们的源代码。不要公开你的源代码。但从你写问题的方式来看,这不适合你。
许可证
要小心。没有自由软件许可证,禁止任何人对您的源代码做任何他们想做的事情,只要他们不发布它。
适合您的项目的许可证取决于您共享的意图:
GPL GPL
有多种变体,具有不同的限制:
因此,如果您使用 GPL 软件并且partimage 是GPL 软件,则必须使用GPL 作为您的软件的许可证。我个人更喜欢 AGPL。
请注意:GPL 仅规定您必须将源代码提供给那些您提供了程序的人。因此,如果有人出售他的衍生产品,如果您购买该程序,他只需向您提供源代码。
There is only one way to ensure know one uses your sourcecode as theirs. Don't publich your sourcecode. But judjing from the way you wrote your question, this is not an option for you.
Licences
Be avare. No free software license, inhibits any person to do whatever they want to do with your sourcecode, as long as they don't publish it.
The right license for your project depends on your intention on sharing:
GPL
There are several variants of the GPL with different restrictions:
So if you use GPL software and partimage is GPL software, you have to use GPL as license for your software. I persanaly prefer the AGPL.
Be aware: The GPL only says you have to give the sourcecode to those, you gave the program. So if somebody is selling his derivative, he only has to give you the sourcecode, if you buy the program.
使用 GPL - http://www.gnu.org/licenses/gpl.html
将其包含在您的源代码中。
这是有关如何使用它的指南 - http://www.gnu.org/licenses /gpl-howto.html
Use the GPL - http://www.gnu.org/licenses/gpl.html
Include that with your source code.
Here's a guide on how to use it - http://www.gnu.org/licenses/gpl-howto.html
您可以使用源代码混淆器使反编译的代码难以阅读。当您不想公开源代码并希望让人们难以对代码进行逆向工程时,这非常有用。
使用开源许可证的要点是您将源代码与程序一起分发,因此这两个要求很难协调。
You can use a source code obfuscator to make decompiled code hard to read. This is useful in situations where you don't want to make the source code public and want to make it hard for people to reverse engineer the code.
The point of using an open source license is that you distribute the source code with the program, so the two requirements are difficult to reconcile.