作者 | 宋林飞 责编 | 何苗
受访嘉宾 | 卫剑钒
出品 | CSDN(ID:CSDNnews)

关注开源的人一定对《大教堂与集市》非常熟悉,随着这本书的中文版在国内发行,译者卫剑钒逐渐被更多的人熟知,而今,开源圈的朋友们亲切地称他卫Sir。书中,原作Eric S. Raymond用许多抽象概念为大家讲述了开源运动的理论与实际应用。这些“晦涩难懂”的英文也给卫剑钒的翻译工作带来诸多挑战,但他一直信奉的一句格言“麻烦的事中藏着珍宝”。历经无数个周末斟酌字句“较真”地翻译,他终于将《大教堂与集市》中文版完整、准确地展现给读者,使许多中国热爱开源的人跨越语言隔阂,领略到这本被称为开源运动“圣经”的风采。

作为网络安全专家的卫剑钒因为工作性质并没有机会过多参与到开源项目中,但他化身为“卫Sir”在个人的博客和公众号上为大家用“人话”来解读诸多开源中抽象、“不明觉厉”的元素,例如开源理念,开源许可证,热点开源事件等等… 宛若一位世外高人。许多读者在看完他的文章后对开源有了更接地气的了解。

古人云:“当局者迷,旁观者清”, 本期《开源访谈录》邀请到《大教堂与集市》译者、信息安全专家卫剑钒来分享他从一位“开源观察者”的角度对开源协议、开源安全性以及开源发展的见解。

如何破解开源程序员的普遍困境:用开源获得收益与影响力?

“麻烦的事中藏着珍宝”

CSDN:你曾将开源著作《大教堂与集市》翻译成中文,也时常将晦涩难懂的开源协议解读给大家听,这两件事不是易事,从你个人的成长经历来看,为什么会坚持做这类事情?

卫Sir:这两件事有它的相通之处,都有翻译的性质,而且都有难度。如果大家看过原版的《大教堂与集市》,就会知道它阅读和理解起来是比较困难的。开源许可证也有这个特点,如果对开源不了解、对IT没有了解、英文不好,直接阅读会觉得非常吃力。而我正好从事IT领域工作,对开源有一定了解,掌握的英文也足以用来翻译,因此决定做这件事。有一句格言我很喜欢,“麻烦的事中藏着珍宝”。一些简单的事情,可能大家已经有很多途径获得解决方法。但比较难、比较有价值的知识,就需要有一个通俗的媒介,使得人们可以相对容易地去接触、了解、掌握。如果我一个人费点功夫,可以让更多人受益,这是我理解的一种开源精神。

CSDN:为什么会鼓励青少年和年轻的开发者去尝试开源?
卫Sir:我主要基于两个判断。第一,这个世界终将走向数字化,大家应该能感受到这些年数字化趋势越来越明显,发展速度越来越快。这两年大火的元宇宙,就是人类对于未来生活在数字化世界中的一种设想。

另外一方面,我认为未来的软件终将被开源吞噬,大多数都走向了开源。如果闭源软件和开源软件在功能相差无几,那么开源软件竞争力一定更强,因为大家会更倾向于源码开放的软件。因此年轻人参与编程,参与开源项目,也是尽早为进入未来社会做准备。这方面能力越强,在未来就越有竞争力。

开源协议是一纸合同,也是创作者与使用者的默认契约

CSDN:开源圈中大家都知道你擅长解读开源协议,为什么理解开源协议对我们如此重要?

卫Sir:开源协议本质上是一纸合约,是开源项目的作者很认真、很郑重其事地把他对使用者的要求以书面形式展现出来,为了提醒使用者要注要按照他的要求来使用。比如要保留作者版权信息,使用导致的问题不要找作者等等。如果使用者不重视这些明文要求,在使用过程中违背了开源许可证,可能会给自己带来麻烦。轻则引发作者本人的愤怒,产生一些纠纷,重则惹上诉讼、官司,因此作为开源使用者一定要重视开源协议中的要求。

CSDN:能否为开源新手介绍一下常用的几种开源协议和它们的特点,区别是什么?假如要开源一个项目,该如何在其中进行选择?

卫Sir:最常用的开源协议包括BSD、MIT、Apache、GPL。简单地说,BSD和MIT是最简单、最宽松的协议,对使用者要求也是最少的。Apache许可证不像MIT和BSD那么简单,它包含了一条关于专利的描述,这是它比较创新的地方,风格也相对严谨,考虑的因素会更加全面。 GPL最主要的特点是它具有“传染性”,使用附带GPL协议的开源代码,其项目也必须要开源。

使用者需要注意不同开源协议的特点,结合自己的情况挑选适合的协议。如果是自己写写玩票性质的小软件,用MIT、BSD就可以,不用那么讲究。如果是个有一定规模和考虑商业化的开源软件,可以考虑使用Apache协议,会比较周全,它会考虑专利的授权问题;如果比较崇尚自由软件的精神和理念,则可以用GPL系列的协议。

我个人比较喜欢宽松的协议,比如MIT简单、随意,既然都选择了开源,不如开放得更彻底一些,有些东西放到公共空间(Public Domain)也很不错。

CSDN:目前国内还没有以开源软件为主题的法律,开源软件的协议是否具有法律效应?它怎么约束开源作者和使用者?

卫Sir:国内虽然没有直接和开源相关的法律,但开源协议可以看作是个合同,受《合同法》的保护。虽然创造者与使用者双方并没有在协议上面签字,但是作者在软件发布时是附带着“合同”一并发布的。开发者一旦使用作者发布的软件就默认接受了合同的规定,如果不接受就不要使用。此外,开源软件本身是有版权的,所以它也受《著作权法》保护。国内去年就有两起与GPL协议相关的著名案件,经法院审判后的判决书我们也能看到,我就此写了两篇文章,大家有兴趣可以看看。

CSDN:最近地缘政治冲突已经蔓延到了开源世界,甚至像GitHub这种开源平台和一些开源社区,在美国政府要求或呼吁下已经向俄罗斯停止部分服务,这个举措是否意味着法律政策凌驾于一切开源协议之上?开源是否存在国界?

卫Sir:开源协议只是一个合同,显然法律的效力大于开源协议,尤其是当开源协议与法律所规定的内容冲突时,法律的效力更高。GitHub的这次限制,是这么说的“在我们努力确保所有国家的开发者都能使用GitHub的同时,我们也在继续确保所有人都能获得免费的开源服务,包括俄罗斯的开发者。我们的法律团队对此类权限进行了彻底审查,而且我们正在遵守不断发展的出口管制和贸易法规。这包括实施严格的新出口管制,旨在严格限制俄罗斯获得其维持侵略性军事能力所需的技术和其他物品。”我们需要认识到的一点,GitHub是一家被微软收购的公司,它的所有行为仅仅代表这个美国公司的行为,而美国公司是受美国法律管控的。因此,我们可以说,开源程序、开源精神、开源社区是无国界的,但每一个开源开发者,每一家开源公司,都是有所属国家的。

维护开源安全需要多方共同努力

CSDN:一般企业使用开源软件会存在哪些风险?

卫Sir:企业使用开源主要存在两大类风险。第一大类风险是能否用好开源。要想用好开源其实不太容易,一个企业的代码可能是自己开发的,或是从供应商购买的软件和代码。对企业来说,如果技术能力不强,即便成功部署了开源软件,出现安全漏洞时,可能还得等待社区出了补丁才能把漏洞补上。但如果社区短期内无法给与支持,企业自身是没有能力修复的(除非是一家有很强技术实力的IT企业),这对企业来说是一个风险。

第二类是合规性问题,主要存在于在那些有输出能力的企业中。输出产品、代码都需要检查其是否违背开源许可证中要求的内容。假设代码中使用了含有GPL协议的开源代码,企业是否做到了将源码开放出去?如果没有就会出问题,这就是合规风险。

CSDN:开源技术,因为它开放和不设门槛的特点,很容易受到黑客攻击。之前发生过多起开源技术漏洞导致的安全事故,你从网络安全专家的角度如何看待开源安全性?

卫Sir:开源的安全性和任何软件的安全性没有本质区别,只要是人写的软件,都会有安全问题,和它是否开源关系不大。业界有个广泛流传的说法:“只要眼球多,bug容易捉”。由于开源天然的协作特性,开源的安全性应该更高,但事实上,很多安全漏洞隐藏得很深,不是眼球多就能看出来的,想要发现这种漏洞,独特的安全技术和安全专业能力是必不可少的。而且找功能bug和找安全bug的思路是完全不同的。

开发人员的思维和安全人员的思维完全是反着来的。开发人员更在意实现功能和提升性能,而安全人员考虑的是如何用各种意想不到的手段获取数据和权限。如何理解这两种思维的差异?可以从最简单的用户名和密码的功能为例。传统测试只会测试不同长度、不同类型的字符输入是否会导致程序崩溃和异常;而安全测试人员会构造精巧的数据作为输入,比如构造SQL注入语句,或者导致缓冲区溢出执行恶意代码的数据,这是传统测试不会考虑的。安全人员更多是要用一种在开发人员开起来匪夷所思的角度和路径去找到那些隐藏很深的安全bug,这些不是常规的测试,这是安全性测试。当然,我们建议开发人员应当具备一定的安全思维和安全能力,但看上去困难重重,开发人员对安全往往是不太关心的。专业的培训会有一定帮助,再有就是在整个软件生命周期嵌入安全流程,比如DevSecOps等,让人们做出更安全的软件。

要想防范甚至消灭开源软件的安全漏洞,除了提升开发者安全能力和加强流程管控外,还可以在更多技术领域发力,从CPU、硬件体系架构、操作系统、编程语言、安全工具等方面,都可以有更多的安全创新和改进。总的来说,经过20多年的发展,不论是安全法规、安全理念、安全意识,还是安全技术、安全产品、安全生态,整个环境比我刚接触这个领域时(2000年左右)要好得太多了。

我想看到开源吞噬世界的那一天

CSDN:如今国内的一些开源产品和开源文化的发展情况如何?是否存在瓶颈?

卫Sir:我所了解到的国内比较出名的开源产品目前都发展得很好,但有更多无法脱颖而出的开源项目没有进入大家的视野。

谈到开源文化,我能感受到如今大家对开源的态度比原来要友好很多。10年前左右,很多人对开源甚至会有一些错误的认识,认为开源是“坏”东西,是“别有用心”的,这在现在看来简直不可思议。现在大家逐渐以一种实用主义的眼光来看待开源,发现开源软件不仅可以解决自己的问题,还能获取源代码、甚至商业化。我认为只要不违反开源许可证,这些想法都是自然的、正常的,是理性思考的结果。另一进步是如今大家普遍意识到了开源可能带来的风险,和开源的合规问题。有经济实力的公司会购买商业版本的开源软件,并且会购买开源相关服务。一些IT企业也开始贡献上游,开源内部软件,促进开源生态发展,这些都值得赞赏。

总的来说,我认为国内开源目前没有瓶颈,也无需突破。大家自由发展、自由竞争、自由使用,只要合规就好。

CSDN:你曾专门撰文探讨 faker.js 和 colors.js 的项目作者毁库跑路的故事,这里着重探讨了开源程序员在“如何用开源获得收益”的困境,除此之外,您认为开源开发者还面临着哪些困境?

卫Sir:在很长一段时间内(对于个人项目,现在我也这么认为),我都认为开源是有钱有闲的人玩的游戏,你可以将它作为一种兴趣或者乐趣。如果你还面临温饱问题,我建议还是先务实一点,找一份被雇佣、可以拿薪水的工作,不要试图快速从开源之中变现。玩开源可以为了乐趣,为了提高能力、获得名声,为了满足存在感,但不管怎样,现阶段个人玩开源,不要指望能直接赚到钱。开源本身更多是一种奉献精神,对个人来说,这是开源最主要的困境。

此外,很多人搞创作还是希望得到他人的认同,发挥自己的价值,给社会带来一些有益的影响。但你开源的代码可能未必有人关注,也未必有人下载、使用它,也未必产生你预期的效果和影响力。创作者的普遍困境就是,当你的作品并没有人关注,没有人用的,一定会感到很失落,也很容易放弃。所以你做的东西,必须足够优秀,解决足够有趣、有价值的问题,你必须拥有足够的能力,甚至包括程序员所稀缺的营销能力,才能获得更多的关注和认可。

CSDN:你曾经说“免费”、“搭便车”等话题已经失去了讨论的意义,那么开源圈内还有哪些问题是您长期比较最关心的?

卫Sir:我比较关心的是,什么时候每个人都能用上开源的桌面操作系统、开源的office软件,甚至于人们使用的软件全都是开源的?也即开源何时能够真正地吞噬世界?这大概需要很长时间,甚至在有的领域永远不会实现,比如可以直接盈利的消费型软件一般都不会开源。不过,以后的世界真的很难想象,也许开源会以一种现在无法想象的方式,吞噬世界。

此外,前面谈到一个程序员因为无法获得收入愤然删库跑路的例子,我们是否可以找到一种方式,让程序员进入一种自由编码的状态,不再需要考虑生计问题,且不用被雇佣,仅仅通过写代码,参与开源项目或是自创项目,就可以轻松获得回报?这也是我长期关心的问题。开源开发者因为赚不到钱而删库跑路不是个例,他们的代码使用量很大,但因为是免费的,没有任何经济回报的机制,开发者就无法因此致富。假如能有一种方式,只要代码被人使用了,产生价值了,就能得到收益,这对开源开发者而言就是非常理想的状态。目前看来web3似乎是一条比较可行的道路,但也有人觉得Web3并不靠谱。

一切尚不明朗,不过我很期待。

《开源访谈录》是一档聚焦开源发展的访谈类栏目,每周将邀请1位具代表性及影响力的开源专家,探讨大家广泛关注的开源话题,从不同角度还原开源圈真实面貌。

“我曾认为开源是有钱闲人的游戏,不要试图快速从中变现” | 对话《大教堂与集市》译者卫剑钒-LMLPHP

05-12 13:26