• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

讨论 什么是开源

开头的碎碎念

最近感觉身边涉及到开源的问题不停的再重现。无论是 MineBBS 还是 MCMOD 都在激烈的为 “什么是开源” 而辩论。
事实上,在我的观察中,即便是一些老练的开发者似乎都对开源和开源精神存在误解。当然,这不是什么稀奇的事情,开源是复杂的,就像是自由软件中的自由的意义与代价一样复杂。

本文并不是来批判那些为 “什么是开源” 而激烈辩论的人,而是尽可能的以大白话的形式向任何人解释 “什么是开源”。
当然,就像前文说的,开源软件与自由软件指代的意义非常复杂,本文可能会因使用大白话而变得不严谨,抑或是自身存在谬误,如果您知道如何修正这些错误,请报告,这会让这篇文章变得更加健全并且帮助到更多人。

正文开始前,如果您想知道开源软件与自由软件的区别,恕我无法解释:GNU 作为自由软件的代表,它自身是为站在法庭上诞生的。
我无法细致的解释自由软件中如何解释自由,这个问题留给读者从 GNU 公开的回答中理解:

https://www.gnu.org/philosophy/free-sw.zh-cn.html#copyleft

另外,读者可能会想先知道开源的定义:

https://open-source.org.cn/osd/

那么下面将开始正文。

到底什么是 “开源”

这个问题对于一些开发者而言,开源好像就是开放源代码。有开,有源,没毛病。

实则不然。开源,原文 Open Source,其中从未提及 “源代码”。强加概念对于开源软件与自由软件是致命的,这种强加的概念可能会导致一连串的误会与言论自由上的限制。

细心的读者肯定会提问,“OSI 对 Open Source 的定义中包含 Source Code 啊,这怎么不算源代码?”

非常好的问题。但时代是会变迁的。读者可能需要知道,当初被 “开源“ 的内容无非就是 Unix 以及其衍生作品。大多商业公司都选择保留专权,最好能把其他临摹的小公司告到裤衩都不剩。但现在,通常我们可以理解这样的需求是针对 “如果可以被用在源代码的情况下” 而定义的准则,但不是 “必须与源代码有关”。基于这一点,我们得到了一些定义丰富的解释:

例如 Art Free License,这是一份受 OSI 批准,但与源代码毫无瓜葛的许可证。正如其名,它是为艺术作品而生的社区开放许可证。

再者,MIT 是一份广为人知的许可证。但是 MIT 首行通常包含了 ARR[0] 的声明,且全文核心目的就是署名。没有任何担保,没有条款,没有代码的用法。这意味着即便使用了 MIT 分发一个模组,也不必要去公开模组的源代码。因为分发二进制产物也符合 MIT 需求的内容。

那么,到底什么才是 “开源”?

这个问题恐怕仁者见仁。至少目前来看,符合 OSI 开源定义都可以算作开源。但综合上文举例,在这些特殊情况下这些定义不是强制的。当然,如果这篇文章的核心就是这么一个模棱两可的回答,那可太没意思了。因此,若是让我来解释...

“开源”,拆解为 “开放(Open)” ,与 “源数据(Source)”。
其中,“开放” 的定义应该属于 “言论自由” 的一个部分。它通常无法直接与自由软件意味的言论自由相提并论,但它对 “言论自由” 下的约束相较于专有软件会更加宽松。
而 “源数据”,则是字面意思——您创作的产出物,它无论是何种形式,都可以被算作 “源数据”。
那么我们合起来理解,要做到 “开放源数据”,那么这份 “(受限的)言论自由” 的授权应当是 “自动授予” 的,并且其他人在受限的情况下,应该拥有足够的使用权,分发权,商用权(不包括商标)等。而具体限制何种内容,由对应的许可证进行约束。

与 “开源” 的对立面​

与开源的对立面是 “闭源软件”,或者 “专有软件”[1],显而易见。也正如其名,闭源软件可能不会公开源代码,亦或者作为专有软件时,原作者可以仅提供他想提供的内容而不允许其他人进行自由/开放的使用。

不过需要注意的是,闭源或专有的软件并不意味着源代码一定是不会开放的。它们可能开放了源代码,但分发方式中并不包含符合开源标准的开源许可证。依旧是上文提到过的,既然我们现在存在源码分发的情况,那么就符合开源标准中 “源代码” 的定义。反之,如果读者认为直接叫他 “闭源软件” 很奇怪,那么 “专有软件” 就很合适了。

我该怎么做才算开源?​

在读本篇文章的读者想必都是来自 Minecraft 社区的玩家与开发者,那么我便直截了当的说出一个符合开源标准的模组或插件必须要做到的:
  • 您的项目必须公开于众人,这包括二进制产物于源代码。
  • 您的项目的源代码必须公开于众人,这通常透过传递到代码托管平台[2]
    • 您的项目源代码必须是直接传递到其他人可见范围内的。
    • 您的项目源代码必须是经过正当途径即可取得的,例如您批准其他人可以反编译您的项目,这不算开源,这只是您个人意愿。
  • 您的项目的源代码应该有一份或多份经过 OSI 批准(或您自建但符合 OSI 对开源定义的)许可证。
    • 您可以选择不公开源代码之外的资产文件,这通常不影响您宣称您的项目是开源的。
    • 您可以选择书面形式完全放弃您对项目的所有权,例如 CC,WTFPL,NoLicense[3] 等放弃版权的许可证。本篇文章也采用的是 CC0-1.0 授权,某种意义来讲也是 “开源” 的,是的,您甚至可以宣称这篇文章是您撰写的。

我的开源项目被侵犯了,他们认为我是 “无条件供应”!​

开源是一场巨大的君子游戏,每个人都在遵守。但是对于那些伪君子,开源许可证中的保底条款将会发力,在适当的时候,您可以:
  • 向目标项目的作者报告。如果对方是无意的,您的善意提醒可以让社区变的更加强壮。
  • 如果对方是故意的,那么您的终极选择:起诉。是的,就像文章开头说的,GNU 与它的自由软件社区中的许可证均为法庭而存在。大多 OSI 批准的开源许可证也为法庭上公证提供了附加解释。当然,如果您使用的许可证的保底条款并没有那么宽的限制…很抱歉,我恐怕您无能为力[4]

我可以突发奇想修改或撤销许可证吗?​

可以。但仅限于您未来发布的版本。大多许可证具备不可撤销性,您已经发布的版本将会永久的绑定许可证于它自动授权的特征。如无特殊情况,您不应该半道修改您的仓库所有权。
但有种情况:您已经放弃了您的项目所有权。除非您现在打算拾起您已经放弃的所有权,那么您最好妥善的处理;否则这些所有权归属于社区,而不是您。

总的来说,您可以修改,但您必须妥善的处理,您修改后的许可证最好于先前的许可证兼容[5]

我该如何遵守许可证?​

开发过程中难免遇到不想自己制造轮子的情况。虽然一些许可证晦涩难懂,但是如果您善用网路搜索,那么您可以得到一些省流回答——如果您正在从事商业活动或专有软件开发,那么您可能不适合阅读省流,您最好确保您的行为是符合许可证的。

我该如何为我的项目选择许可证?​

许可证有很多种,确实难以选择。幸运的是,我们有一些公开的许可证选择工具,例如:

https://kaiyuanshe.github.io/license-tool/

当然,通常来讲这些选择器并不会涵盖完整的许可证选择。如果您的耐心足够,建议在 OSI 公开的许可证列表中寻找属于适合您的许可证。

最重要的 “开源精神”​

您可能想知道,文章中出现多次的 “开源精神” 到底是什么。这个问题也恕我无法回答,不过开源精神通常是这样:
  • 包容:开源社区的成员互相关照,互相包容。
  • 和谐:不要歧视,不要鄙视,不要窝里斗。
  • 开放:您遵守了开源许可证的情况下,无论做什么都应当是问心无愧的,而不是担心自己是否应该去报告原作者。
  • 共享:您不一定需要会编程。就像正文开头说的,您对 “开源” 的贡献可以是任何方式的贡献。您的无私奉献会让开源社区更加强壮。

好吧,那么 “自由软件” 又是什么?​

呃啊,请看文章开头的解释。我真的无法回答,让 GNU 官方来解释吧。


最后,感谢您看到这里,希望您有愉快的一天。


[0]:All Rigth Reserved,保留所有解释权。
[1]:专有软件并不意味着必须得有专有版权,任何未经过申明而分发的内容默认情况下均属于 ARR。部分情况下,对于开放源代码的专有软件,我们称之为 “看源软件”。但由于此名词不够严谨,故暂未考虑放置于正文。
[2]:例如 Github,GitLan,BitBucket 等公共开放式平台,以及各类基于 Gita,Gitea 等自建托管平台。
[3]:NoLicense 并不是不配备许可证,这个许可证就叫 No License。其条款仅有一条:不要触犯法律界限。
[4]:您可能得知道,如果您为之去报复对方,这不符合开源精神。即便对方是小人,您也应当维护您君子的形象。当然,我们都希望这种事情不会发生。
[5]:许可证之间存在兼容性,这也是绑定多许可证时必须要注意的。
 
内容版权许可
CC0 1.0 版权共享
打赏用户
晓路锅锅 User.Time
最后编辑:
其实我国的开yuan的历史很早,唐朝曾有过短暂的开yuan盛世 :evil:
大风机关先生何时来的
风机关先生
请放下路人的手机
上大号说话
(((
 
还有开原神世
一个开源之神创造的世界,称之为开源神世?所以这个世界上的人会尊称他为源神?在人们做开源项目的时候会不忘源神的恩赐从而大喊 “开源神!” 来感谢源神?
 
开(放)源(代码)
 

在线会员

  • 宥时雨
  • 诺诺noo
  • 沐予
  • 可乐不加冰
  • 1002
  • 请输入用户名91
  • 小叶
  • 健纲 黄
后退
顶部 底部