东欧世界的战火终究还是烧到了开源世界。
2022 年 3 月 2 日,Github 官方发文称,会遵守美国政府的相关规定,限制俄罗斯通过 Github 获得军事技术能力。除了 GitHub,更多的开源社区也加入了这场运动:Node.js 官网在其首页加入了声援乌克兰的标语;知名前端框架 React 也在官网中加入了声援乌克兰的横幅;俄罗斯「国民操作系统」Sailfish OS 的制造商 Jolla 公司正试图切断与俄罗斯的联系……美国当地时间的昨天,React 在 Github 的代码仓库涌入了来自全世界的政见不合的开发者, 彼此通过提交 issue 的方式发表激烈意见,直到官方入场才得以平息。在「科技无国界」、「艺术无国界」、「体育无国界」被大家认为不存在的今天,「开源无国界」也成为伪命题了吗?
1
开源软件开发者有国界
公元 1 世纪,哲学家普鲁塔克提出一个问题:如果忒修斯船上的木头被逐渐替换,直到所有的木头都不是原来的木头,那这艘船还是原来的那艘船吗?今天的开源圈,类似的忒修斯悖论依然存在。开源软件的代码量和复杂度上已远超当年,一个开源项目可能会使用或集成多种开源组件,同一个开源项目可能也会有成千上万的开发者参与进来,贡献他们的智慧。当一个开源项目中的代码被逐渐替换,甚至所有的代码都不是原来的代码,那这个项目的所有者还是最初的作者吗?就目前的共识来看,这个问题是肯定的。代码原作者对代码拥有所有权,可以自由决定谁可以使用自己的代码。这些天,就有开发者发表声明,禁止俄罗斯境内的程序员使用其开源的代码。也就是说,假设今天有一个俄罗斯程序员,参与到了某个开源项目的建设中,甚至成为了其中的主要贡献者。但如果项目的原作者,认为项目被俄罗斯政府运用在了军事领域,决定禁止俄罗斯境内的个人或组织使用这些开源代码,这位程序员就只能看着自己的努力付之东流了。所以,开源开发者是有国界的。
2
开源平台和社区有国界
除了开源作者拥有限制他人使用开源代码的权利,在开源托管平台眼中,开发者同样会因为其所处的国家而享有不同的待遇。2019 年,全球最大开源代码托管平台 GitHub 出于美国贸易管制法律要求,对伊朗、克里米亚的开发者用户进行了限制,甚至是封禁账号。还是在这一年,全球第二大开源代码托管平台 GitLab 宣布了一个「封锁令」,禁止给中国和俄罗斯公民提供 offer,不久后,GitLab 风险与全球合规总监对这种歧视性和报复性的行为不满而辞职。开源代码可以在许可证的范围内自由传播,但保管开源代码的公司,却不得不以实体的方式,遵守所在地的法律法规。即便国家政策不以黑纸白字的方式严格约束,在政治正确、舆论环境等多方因素影响下,代码托管平台同样难以保持中立。这次 GitHub 发布公告后,一种声音再次被提起,我们要建设一个属于国内开发者自己的代码托管平台,要摆脱对对国外开源社区的依赖。所以,开源社区也是有国界的的。
3
开源有国界,开源精神无国界
当大家反驳各种「科学/艺术/体育无国界」时,说的最多的就是「科学家/艺术家/运动员有国界」。不可否认,程序员之间也同样有国界,这也是为什么大家在 Github 的 React 代码仓库争论的原因。当人们带着对同一件事情的不同看法,抱着想要说服对方的目的,怀着累积已久的情绪,来到同一个空间,结局必然是惨烈的。这些年国内外各大社交平台的分化,已经无数次证明了这一点。但之所以开源社区能保持一份相对的平和与冷静,和大家来到这里的目的,以及交流的方式是有密不可分的关系的。开源最初很简单,一个人创造了一个东西,拿出来分享给大家,大家通过自由使用这个东西,为世界创造价值的同时,收获快乐和回报。带着这个美好的初衷,开源走过了几十年岁月,发展成为数字世界的基石,并还在不断壮大中。人性总有善的一面,也有恶的一面。但在开源大家庭里,大家收获善意并用善意回报,在这个过程中慢慢学会同理、尊重、分享等美好品质。哪怕彼此因为出身和经历不同,会有各种各样的摩擦,但最终能带着共同的愿景,放下偏见,互相成长。也许你会因为同情支持某一方,也许他会出于同理而支持另一方,但究其本质,都是出于善。科技有国界,开源也许也有国界。如果真有什么东西是无国界的,那就是人与人之间的善意。■
腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。
欢迎关注「腾源会」公众号,期待你的「在看」哦~