科技云报道原创。
但不可否认的是,在过去的一两年,开源在全球呈高速发展趋势,越来越成为跨越国界和语言的共识。
据GitHub官方数据显示,2021年GitHub活跃用户数和活跃代码仓库数量均有明显增长,其中新增活跃用户数超过1600万,新增活跃代码仓库数量超过6100万。
不难发现,象征着“自由”的开源软件,正在逐渐从“开发者亚文化”变成一个主流的软件开发模式。
但自由意味着免费吗?近期开源界发生了一则轰动性的事件,将这一问题浮出了水面。
近日,一位开源开发者故意破坏自己的开源项目,引发了机构依赖开源库的争议。
被破坏的开源库是Marak Squires开发的color.js库和faker.js库。这两个库被广泛使用,其中不乏企业和商业客户。
因此,有数千个大型项目受此影响出现了停止运行,包括亚马逊AWS 的Cloud Development Kit。
Marak在color.js库的v1.4.44-liberty-2版本中给新的美国国旗模块加入了无限循环,依赖color.js的项目会在控制台看到不停打印的非ASCII字符。
faker v6.6.6版本的情况类似,他将这两个搞破坏的版本推送到GitHub和npm。
数据显示,有近19000个项目依赖color.js库;faker的周下载量超过280万次,有超过2500 个项目依赖它。
reddit上的热门帖子表示,Marak破坏库代码是因为缺乏资金和被滥用开源项目。
事实上,在此次事件之前,这位开发者就曾公开批评,指责使用了这些库的企业对社区没有任何回馈。
2020年11月,他曾警告说,自己将不再义务工作支持大企业:“恕我直言,我不会再免费工作来支持《财富》500 强(Fortune 500)公司(以及其他规模较小的公司)了。
趁这个机会,要么发给我一份年薪六位数的合同,要么赶紧分叉项目、找其他人接手”。
Marak的大胆举动旋即引发轩然大波,各界纷纷就此事发声。部分开源软件社区成员赞扬了这位开发者的勇敢行为,但也有人对他的过激举动表示震惊,觉得这是“又一个开源开发者造成的流氓案件”。
值得注意的是,Marak 的此次过激行为发生在不久前影响巨大的Log4j 漏洞事件之后。
作为一套重量级开源库,Log4j在不同企业及商业实体开发的各类Java应用程序当中都有广泛使用。
而Log4shell漏洞的曝光,使得不少开源维护者不得不在休假期间无偿帮助修复这些项目。
于是开源业界开始普遍担忧,认为大企业们已经习惯于“压榨”开源成果。不少公司以此获利颇丰却不支付费用,也不对开源社区做出相应的回馈,矛盾便日益凸显甚至激化了。
回到开头的问题,开源软件是否意味着免费?答案显然是否定的。
首先,开源软件和免费软件是两个概念:
开源软件是指公开源代码的软件。开源软件在发行的时候会附上软件的源代码,并授权允许用户更改、传播或者二次开发。
免费软件就是免费提供给用户使用的软件。但是在免费的同时,通常也会有一些限制,比如源代码不公开,用户不能随意修改、不能二次发布等。
免费软件的例子比比皆是,QQ、微信、迅雷、酷狗、360 等都是免费软件,你可以随意使用。
但是如果你嫌弃它们复杂,自己删除了一些无用的功能,然后在网上发布了一个精简版本供大家下载,那么你就离法院的传票不远了。
开源软件在追求“自由”的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情。因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。
常见的开源协议包括:GNU通用公共许可证、BSD协议、Apache许可证版本、MIT协议、GNU 宽通用公共许可证等。
以GNU通用公共许可证为例,只要软件中包含了遵循GPL协议的产品或代码,该软件就必须也遵循GPL许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件。
遵循GPL协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。
再比如Apache 许可证版本(Apache License Version)协议,是适用于商业软件的。
Apache协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。
现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的。
可以看到,开源协议规定了在使用开源软件时的权利和责任,也就是规定了可以做什么,不可以做什么。
开源协议虽然不一定具备法律效力,但是当涉及软件版权纠纷时,开源协议也是非常重要的证据之一。
对于开源软件的开发人员而言,了解当前最热门的开源许可协议,选择一个合适的开源许可协议,可以最大限度保护自己的软件权益,或许能避免发生Marak这类的过激行为。
事实上,并非所有的开源软件都是免费的,开源的精神和目的也不是免费使用或者对作者源代码”为所欲为”。
反过来说,开源软件也是不抵触商业的。开源的目的不是做慈善事业,而是通过更多人的参与,减少软件的缺陷,丰富软件的功能,同时也避免了少数人在软件里留一些不正当的后门。
开源软件最终还会反哺商业,让商业公司为用户提供更好的产品。
Android就是大众最熟知的一款开源操作系统,它除了用在手机上,还用在汽车、平板电脑、电视、智能手表等其它硬件平台,小米、华为、OPPO、三星等都是 Android 的受益者,他们都赚得盆满钵满。
很多著名的开源项目背后都有商业公司支撑,它们的开发者也都有正式的工作,享受和我们一样的社会福利。
从IBM鲸吞RedHat,微软收购GitHub,到Elastic、MongoDB等初创公司相继上市,这一系列事件早就不再是对开源本身的认可,而是标志着开源业务作为一种商业行为(business),其价值和模式逐渐复兴,获得了资本市场的广泛承认。
如果一个成功的开源项目背后没有商业公司,这反而是不健康的,社会需要开源和商业之间的互补来促进技术的革新。
那么,开源项目到底应该如何商业化呢?
有一点很重要却经常被开发者所忽视的是,开源最开始的出发点可能就是奔着商业化去的。
如果没有商业化的动力,团队和个人仅凭热爱是很难长期来维护和迭代开源项目的。
既然开源项目是奔着盈利去的,那么一开始就应该做长远的商业规划。如果仅仅是个人爱好,则没有必要一开始就收费。
很多成功商业化的开源项目,在诞生之初是绝对免费的,在提供给用户不可替代的价值贡献和价值提升后,有些用户希望能在用好软件的基础上,提供一些增值服务,如企业版、高级版功能等,这时开源团队就可以建立收费的专业版来盈利,甚至是完成大公司的定制化订单。
随着开源项目所在的社区越来越大,迎来更多的用户需求,产品功能越来越完善,适配的功能越来越多,用户的付费意愿到了临界点后,接下来的商业化将是水到渠成的事情。
还有一点值得开发者关注的是,光有一个非常优秀的开源项目还远远不够,没有好的宣传和推广也不足以走上商业化的正规,这时候开源项目创始人的个人形象就至关重要。
比如以太坊的发起人V神(Vitalik Buterin),在19岁时写了《以太坊白皮书》。
他原来在社区就是一个积极写文章的人,他有很强的思考逻辑性,文章写得特别漂亮,在社区里面有很强的影响力。
必须要建立个人信誉,让大家相信这个人,开源项目才能获得成功。
开源可能是一种非常理想化的思想,现实总会与其精神出现偏差,但这种理想主义思想是具有现实意义的,只有不断的提倡和传播这种思想,社会才会聚集更多的正能量。
开源可以让人们自由享受软件所带来的便利以及思想的交流和创新,但在享受别人带来的福利时,也请尊重别人的劳动成果。
自由传播和使用,不等于免费使用和无偿使用,在打破壁垒,敢于创新的同时,也要遵循基本的开源精神。
来源:科技云报道
免责声明:此文内容为第三方自媒体作者发布的观察或评论性文章,所有文字和图片版权归作者所有,且仅代表作者个人观点,与 无关。文章仅供读者参考,并请自行核实相关内容。投诉邮箱:editor@fromgeek.com。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。