林旅强 Richard,出身台湾的开源布道师,在大中华区多年来致力于推广开源理念、开源治理及社区建设,同时也对国内第一个草根开源联盟“开源社”的成立及成功做出大量贡献。Richard刚刚从代码托管服务 GitCafe(开源社发起成员单位)市场总监的岗位离开,即将到华为任职,从事技术领域的市场推广运营工作。下面是Richard在智囊团活动的最新干货分享。
大家好,我是 Richard 林旅强,感谢云头条邀请,我想跟大家分享下开源相关的议题。我先说说我的背景以及为什么分享这个议题。
先自我介绍。2013 年底我在开源代码托管平台 GitCafe 的邀请下,决定来到大陆打拼,到现在也快两年了。担任市场总监的工作中,我也希望为中国的开源事业也尽份心力,因此联合了一些公司、社区和个人,成立了 “开源社”;同时在许多开发者大会和高校当中演讲,播下更多开源的种子;此外也提供企业开源策略及公部门政策方面的建议。现在刚好在工作转换期,今年底我将入职华为,担任开发者社区运营经理。
我在到大陆之前已和开源结缘已久。我在台湾的中央研究院从事自由软件和开源的研究超过 5 年,研究领域是开源知识产权、开源商业模式、社区运营和开源治理。我也利用业馀时间投入组织了台湾开源人年会 (COSCUP) 以及JavaScript 开发者年会 (JSDC.tw) 等活动,希望将研究成果透过活动让开源落地生根。
开源的领域很广,我今天打算从开源许可证开始谈起。国内各界对开源理解普遍还不够深,对于知识产权的意识也不够强,要更深刻的理解开源,必须对于开源世界当中的宪法和游戏规则,也就是开源许可证,要有初步认识。这个规则不仅让开发者可以更无私的投入到项目代码的贡献,同时也涉及商业模式及产品设计是否能合规,在知识产权方面的遵循更是打入国际市场的前提要件,所以想从这个听起来或许不是那么 sexy 的议题跟大家聊起。
开源 ≠ 公开源代码
首先,什么是开源?很多人以为把代码公开放在网上让人下载就是开源,其实不然。这里有两个前提条件:1. 只有这个代码的着作权人才有开源他的权利;如果是别人的代码或是你工作时写的代码(着作权是公司的,不是程序员的)那是不能随便拿来开源;2. 如果一个开源项目没有选用一个经过 OSI (Open Source Initiative) 所认证的开源许可证,那么这个项目只能说是 “开放代码给人看”,但不能确保它是 “开放代码给人用”。
所以,如果你在 GitHub 上面看到一个好项目,想要取用其中的代码到你的项目当中,首先你要确认这个项目的作者拥有代码的着作权;再来,你必须在项目当中能找到经过 OSI 认可的开源许可证。否则你最好采取商业授权的方式跟原作者取得代码着作权的授权许可,而不是用你想像中的开源模式来用。如果你自己或你公司的产品想开源的话,也必须注意这个先决条件,否则其他人也无法用的安心。
再来,许可证怎么选?首先要先了解许可证的类型和性质。OSI 核准的许可证已经超过 70 种,你可能听过 GPL、Apache、MIT 等名字。它们主要的区别是在于,对于使用开源项目或参与这个开源项目开发的人,到底是比较宽松还是限制较多的条件。要先了解着作权的性质,接着了解各类许可证的特色,才能选出你要的许可证。
着作权的 1 或 0
下面我用 “光谱图” 的概念来说明这些许可证的宽严程度,先从着作权的默认规范说明:
在没有开源许可证的情况下,着作权只有最左和最右的两个状态。最左红色端是私有软件 (proprietary software),这是着作权法的默认值,你的代码一旦完成作品就能享有着作权,一般来说商业软件大多採用这种闭源商业授权的方式来销售。最右绿色端是公有领域 (public domain),是指已经丧失着作权(例如已超过着作权法保护的年限)或主动放弃着作权的情况,
例如,SQLite 在官网就说明它的着作权状态属于公有领域。没有着作权,可以无任何限制的使用。若没有开源许可证,着作权的状态就是 1 或 0 的两个端点,没有中间值。
介于 0 到 1 之间的开源许可证
公有领域的项目的源代码虽然也是开放出来,让人任意取用,但它跟开源的本质还是截然不同的:开源是基于项目享有着作权的前提来许可授权的,你要利用这个开源项目还是需要遵循许可证中的限制条件。反观公有领域,因为无人拥有着作权,所以毫无限制,没有任何使用规范。
我将几个比较常见知名的许可证放置在这条光谱上,愈靠右边绿端的限制愈少,反之左边红端的限制就愈多。
Copyleft 着佐权
我们可以用 “Copyleft” 将开源许可证分为两大类,一类属于 copyleft license,另一类是 non-copyleft license,也叫做 permissive license。自由软件运动的发起人,也是知名的着佐权许可证 GPL 的发起人理查德·斯托曼 (Richard M. Stallman) 曾写了 “What is Copyleft” 这篇文章来说明什么是 copyleft,大家有兴趣可以找来读。该文第一句开宗明义:“Copyleft is a general method for making a program (or other work) free, and requiring all modified and extended versions of the program to be free as well.” 所有修改自或衍生自着佐权程序的新版本程序都必须使用相同的许可条件,才能确保软件自由得以长存。
例如最着名的 GPL,如果你的项目是修改自或衍生自一个 GPL 项目,你的项目也必须使用 GPL 协议。所以有许多商业用户对于 Copyleft 许可证感到恐惧,深怕自己的项目沾到了 GPL 的代码,自己的项目就必须被迫开源。
其实这个理解不太精确,因为 GPL 并没有要求用到就要主动把源代码拿出来开源,而是若你的项目若已经受到 GPL 许可证的拘束了,在你将产品交给某个用户时,才需要把源代码交给这个用户。反之,如果你的商业模式(例如 SaaS)不需要将产品的二进制码交给用户,那么 GPL 并没有要求在这种情况下必须主动向用户提供源码。在所有着佐权许可证当中,除了 AGPL 之外,都没有要求要主动提供源代码给未取得产品二进制码的用户。
AGPL 则是即使用 SaaS 的情况,只要是透过互联网提供服务的软件后台是AGPL 的衍生代码,就必须主动提供源代码给用户,所以它的规范更多更严格,就放的比 GPL 更靠左边红端。
至于其他的着佐权条款如 LGPL、MPL、EPL 等,则是在认定什么是修改或衍生程序的认定标准比起 GPL 更加宽鬆,以 LGPL 为例,若是主程序动态链接到一个 LGPL 的 lib,则主程序并不会被要求也要以 LGPL 来许可,还是可以保持其原着作权状态。这裡暂不细说,有问题我们可以再详谈。
Non-copyleft / Permissive
非着佐权类型的许可证在绿框当中,重点就是,你只需要符合许可证当中的要求,你就可以自由地选择用任何许可证或商业授权的方式进行后续利用。例如,MIT 要求你必须署名说明你的产品是修改自或衍生自它的项目,类似写论文要加上一个出处的概念,以及该项目不负担瑕疵担保责任,意思就是代码都给你看给你改了,风险自负,不要上法院起诉着作权人这个开源项目有问题。所以这类许可证被认为是商业友好,许多闭源模式的公司如微软、苹果等,在产品开发中都不排斥使用非着佐权类型的开源软件。
着作权 vs 专利
上面一段讲的只限于着作权。如果大家对于知识产权有基本概念的话,通常都会问到使用开源是否就存在专利授权的问题。首先,对于着作权和专利样要能正确的区分:着作权是代码本身,专利权则是代码之上的技术方法。例如,同一个功能用不同语言实践出来就是两段不同的代码,其各自都有独立的着作权,互不侵权;但如果是一个具有专利权的技术方法,不论用什么语言去编程,只要这个程序使用到了这个技术方法,就必须要取得专利授权才不会违法侵权。
若是基于开源软件开发商用软件,最担心的就是踩到第三方的专利权。举个例子,Linux kernel 是採用 GPL 2.0,Android 是基于 Linux 核心发展出来的操作系统,但使用 Android 的部分厂商是有支付专利授权金给微软的。Android 不是微软的产品,Linux kernel 更不是,但微软宣称 Linux kernel 有使用到微软的软件专利,依此要求厂商使用 Android 的厂商付钱。Linux kernel 是社区打造出来的,就有时社区开发的代码运用了第三方的专利权却不自知,这形成了一个商业成本的隐患。
解决专利问题的有一个组织叫做 OIN (Open Invention Network),他们将使用开源和 Linux 的公司形成联盟,利用专利交互授权,若其他人想拿专利来告使用 Linux 的产品,他们可以拿出联盟中的其他专利来告对方,形成一种双方都有核弹的冷战态势,以战止战,阻挡一些妨害开源和软件自由的专利诉讼。如果你的企业有开源相关问题,不论是已发生的或早期预防,甚至作为产品策略的考虑,我们也可以一同进行个案分析和处理。
开源 x 商业策略 x 政府政策
企业拥抱开源是目前的大趋势,因为不用的人反而会落时,最终将脱队。倘若自己打造产品,虽然不是不可能在短期做到更快的开发速度及较高的质量,但长期来看,可能会因为自己不在开源项目的生态系统当中,而被边缘化,淘汰出局。但是,单单利用开源也只是在站队、选生态系统,自己若无法成为这个开源项目的主导者,那也是为人作嫁,无法站在自身企业的利益得到最佳的成果。
近年来开始有国内大型的互联网 IT 企业开始参与、跻身在国际开源社区当中,这发出了很好的信号;开源不只是大企业的事,更是许多中小企业能快速发展和拓展产品的一个路径。当今的国家政策虽然还没有直指开源,但不论是 “互联网+” 和 “万众创新、大众创业” 当中,重视云计算、大数据、IoT 的目标下,建设一个更加完善的开源生态系统也是达到成效的必备要素;例如从中国信通院技术与标准研究所针对云计算、大数据和 OpenStack 中国联盟的工作、与开源社区人士合作举办 “开源时代沙龙” 以及投入在 ICT 产业创新与知识产权保护论坛的工作,都可以看到政策上的支持推进。
今天先概说了开源的着作权和专利权,相关商业策略及决策考量,必须在熟知这些游戏规则的情况下再来做成。有任何问题,都欢迎咱们一块儿研究讨论。(邮箱:legist.tw@gmail.com/微信:legist_qiang)
[本文转载自云头条]