白话常见开源协议

GitHub上的开源协议是一组规则和指南,用来定义别人可以如何使用、修改和分享在GitHub上发布的代码。

就像是在你的代码上附加了一份使用说明书,告诉别人他们可以或者不可以做什么。

下面我用通俗的方式解释几种常见的开源协议:

  1. MIT许可证
    • 这是一种非常宽松的协议。想象你做了一个蛋糕并告诉大家:“你们可以随意吃这个蛋糕,可以加点你们喜欢的东西,也可以给别人一些。只要你告诉他们这个蛋糕最初是谁做的就行。”
    • 使用MIT协议的代码,别人可以自由地使用、修改和再发布,只要他们在代码中包含原始许可证的副本。
  2. GPL(GNU通用公共许可证)
    • 这是一种更严格的协议。它就像是说:“你可以用这个蛋糕,也可以改变它,甚至可以拿去卖。但是,如果你决定分享这个蛋糕或你对它做的改变,你必须用同样的方式允许别人再次分享。”
    • GPL确保了软件和对软件的任何修改都必须以同样的自由方式共享。
  3. Apache 2.0
    • 这种协议像是这样说:“你可以使用、修改和分享这个蛋糕,但你不能把它当成是你自己的作品。而且,如果这个蛋糕不小心让某人生病了,我不负责。”
    • Apache 2.0协议允许代码被广泛使用和修改,但它还包含了一个不承担责任的声明,防止软件作者因软件被使用而产生法律责任。
  4. BSD许可证
    • 这个协议类似于MIT,也是非常宽松的。它就像是说:“你可以做任何你想做的事情,只要你保留了原来的许可证就行。不过,请不要用我的名字和这个项目的名字来推广你的派生产品。”
    • BSD许可证允许人们几乎无限制地使用代码,只要他们保留版权声明和免责声明。
  5. LGPL(较宽松的GNU通用公共许可证)
    • 类似于GPL,但它允许将开源代码与非开源代码混合在一起。这就像是说,“你可以用这个蛋糕的一部分,并把它加入你自己的蛋糕中,只要你在分享时保持这部分是开源的。”
  6. Mozilla Public License (MPL)
    • 这是一种中等程度的宽松协议,要求如果修改了代码的某一部分,则必须共享该部分的源代码。它好比是说,“你可以用和改这个蛋糕,但如果你改变了配方的一部分,你需要告诉大家你是怎么改的。”
  7. Eclipse Public License (EPL)
    • 这是一种商业友好的开源协议,要求共享对代码的任何改动。它就像是说,“你可以用这个蛋糕,也可以卖它,但如果你做了改变,你需要把改变的部分公之于众。”
  8. Artistic License
    • 这是Perl编程语言最初使用的协议,它鼓励开放源代码软件的自由使用和改进。这个协议类似于说,“你可以自由地使用和修改这个蛋糕,但如果你想要出售基于它的产品,你需要或者保持它是开源的,或者使它有明显的不同。”
  9. Creative Commons Licenses
    • 虽然通常用于文档、音乐和艺术作品,但某些Creative Commons协议也可以用于软件。这些协议的范围从非常宽松(允许几乎任何类型的使用)到非常严格(如只允许非商业性使用)。
  10. Affero General Public License (AGPL)
    • 这是一个类似于GPL的严格协议,但它还包括了如果您通过网络运行软件,也必须提供源代码的规定。这就像是说,“不仅当你分享蛋糕时需要共享配方,即使你只是让别人远程尝一尝蛋糕,也需要共享配方。”

每种开源协议都有其特点和适用场景,选择哪种协议取决于你希望他人如何使用你的代码。重要的是,使用开源协议可以帮助你明确地告诉别人他们可以(或不可以)用你的作品做什么。