为此,翻译本文,但不是简单地直译,在某些表述上做了适当修改,甚至渗透了译者的某些观点。原文地址见参考文献[1]。
我们应该认识到,开源是一种社会契约。
从什么是开源软件谈起,我认为:
★开源软件就是源代码,其许可方式是:用户可以免费使用。 ”
开源项目除了提供源代码之外,还有别的义务吗?我的答案是:没有。
开源软件的启动和终止取决于软件及其许可。如果想让你的开源项目更具有社会性,让别人来使用,该怎么办呢?对此,固然还有很多需要探讨的话题,但一个非常必要的中心思想就是:彼此以礼相待。
首先,我认为建立开源代码维护者和开源代码的使用者(即用户)之间的关系是很重要的。如果从真实世界中选一个恰如其分的示例类比,可能是:
★我把一堆存有开源代码的 USB 放在草坪上,旁边竖立着一个牌子,上书“免费”。当你需要这里存放的开源代码时,就来找一个标记着最新版本的 USB 拿走。 ”
这就是我与大多数开源代码用户之间关系:我推出一个新的版本,用户使用它,而我们从不互相交谈。这是当前实际存在着的典型的关系。
假设一种场景,你很不喜欢我开源出来的免费软件,结果还冲我乱喷,你觉得这么做合理吗?
记住:我没有强迫你使用,你是在完全自由和理智地下载我开源的免费软件,因此,你应该对自己使用免费的开源代码而感到愤怒,这是你自己的问题,而不是我的问题。你也有权利停止使用,也有权利换别的。
当然,并不是说你不能提建设性意见和建议,但这和大呼小叫是完全不同的。
哲学家康德在他的《道德形而上学的基础》一书中这样说:
★以你对待人类的方式行事,无论是对待自己的方式还是对待别人的方式。不要仅仅把行动作为达到目的的手段,而应同时把行动作为目的。 ”
所谓“达到目的的手段”,即使用某物来获得其他东西。比如我要做一些动作,作为一种手段,最终从中得到某些具体的东西。
“作为目的”指的是不利用某人达到预期的结果。例如,在你的生活中,有很多人是你的朋友,这不是因为你想利用他们得到什么,而是因为你喜欢他们。你把他们当作自己的目的,因为你和他们在一起时没有带着最终会得到某些具体东西的期望。
我们应该把这个理论用在开源中。当你把维护者看作是从他们的软件中获取东西的一种手段时,你在道德上并没有恰当地把他们当作目的(换句话说,你只是在利用他们),因此在道德上也没有把他们当作人来对待。但是当你把维护者当作一个可以自愿帮助你的人来对待时,你最终会处在一种合适的关系中,不会试图利用维护者来做某些特定的事情。
真正可悲的是,那些认为大喊大叫是可以接受的、并把维护者当作达到目的的手段的人,实际上伤害了维护者,同样也伤害了他们自己。当开源软件的维护者不再工作了,结果就是“双输”。
开源软件的维护者和使用者,在良性互动的氛围中,能够共同维护开源生态,否则,结果就是开源代码的永远消失。
★开源代码的每一次提交都应该被看作是来自维护者的一份独立的礼物。如果他们愿意的话,会把它放在自己的前院让其他人去享用;将它们视为获取开放源代码的手段是不道德的。 ”
当您意识到开源维护者真的不欠你任何东西时,就不应该对下一次提交、下一次发布等抱有任何期望。如果你从这个角度来看待开源代码,那么当它存在的时候,你会把它看作是一份礼物。因此,当开源代码没有按你所希望的方式发展时,希望你不会那么沮丧,因为它一开始就是一种礼物。这将引导你们把维护人员当作目的,从而当作人类的伙伴。
[1]. https://snarky.ca/the-social-contract-of-open-source/