《中智观察》第1592篇推送
作者:雨涵
编辑:苏苏
头图来源:哔哩哔哩Gitee酱
2022年新年伊始,开源圈被推上了风口浪尖。
前有知名开源工具Faker.js 的作者 Marak 故意破坏了 GitHub 上的这个开源库,将项目所有代码清空;后有Apache PLC4X 的创建者 Christofer Dutz发布声明称,将停止对 PLC4X 的维护……
短短数周,因开源项目作者删库跑路,数千个应用程序无限输出乱码,在引发了广泛关注的同时,对于开源的讨论也此起彼伏。
所谓“开源”是指源代码、文档等设计内容开放的开发模式,是群智协同、开放共享、持续创新的理念和生产方式,也是当下软件开发者乐于并广泛运用的开发方式。
开源带来的价值和影响不言而喻,但当开源有悖初衷、无法真正做到开放包容时,赋予开源的本质意义也就变了味。
如今,开源已经上升至国家战略层面。根据工信部发布的《“十四五”软件和信息技术服务业务发展规划》中提出“开源重构软件发展新生态”的重要判断,开源逐步成为重塑软件产业生态的关键力量。网信办十四五信息化规划也提出“鼓励中国开源输出、参与国际开源组织、参与全球标准合作”,开源内生的全球化属性越来越受到认可。
与此同时,我国的开源生态也在快速发展。根据信通院调研数据显示,2021年我国已经使用开源技术的企业占比为88.2%,其中超过90%的中国金融机构已经引入开源软件。
一方面是对开源的积极向好,另一方面怎样避免包括删库跑路等在内的开源风险、如何对开源代码负责等也成为亟待解决的问题。
‖开源项目遭删库跑路
“Nobody is perfect.”这是坐拥千万用户的“码神”Marak Squires 在1月20日写到的一句话。
今年1月初,一个知名开源库Faker.js的作者Marak Squires,选择主动恶意破坏自己的这个项目。不仅“删库跑路”,还注入了导致程序死循环的恶意代码,让所有使用“colors”的程序在控制台无休止地打印各种非ASCII字符序列,从而使数以千计的的项目直接崩溃,给全球大量使用该项目的个人与企业都带来了不小的影响。
(Marak注入恶意代码,引起众多应用程序崩溃)
据了解,Faker.js 是十分流行的 Node.js 工具库,提供了各种类型的模拟数据,用于开发调试。最早的 Faker 项目于 2004 年由 Jason Kohles 首次使用 Perl 实现。后来 Marak 实现了 Node.js 版本,并投入了大量精力和时间来维护 Faker.js。
作为GitHub上的知名开源库,Faker.js 可以生成可用于应用程序开发/测试方面的 Fake 数据,包括用户名、密码、邮件、日期、地址、文章等内容。对于开发者而言,在实际的软件开发过程中使用假数据进行测试是一个必要环节,其同时也能够帮助开发者验证前端设计的合理性。其受欢迎程度甚至被《财富》世界 500 强企业在内的数百家公司使用。
作为项目的托管平台,GitHub对Marak的账号进行了封禁。Faker.js 也成为被社区控制的项目。自接管 Faker.js 以来,新团队已对 issue 进行了分类和审查 PR、提供在线文档、迁移至 TypeScript、创建公开的推特帐号、在 npm 上发布软件包、清理 Prettier、CI、Netlify Deploy Previews 和 GitHub Actions 等工具,并承诺将继续开发和维护 Faker.js 项目。
目前随着事件的不断发酵,Marak似乎也感到“后悔”,声称“每个人都会时不时地犯编程错误,没有人是完美的”以希望重回GitHub,但从目前看,Marak的这一做法并未获得太多的支持。
除了Marak删库跑路外,近日,Apache PLC4X 的创建者 Christofer Dutz 在 GitHub 上发布声明称,由于缺乏任何形式的回报,他将停止对 PLC4X 的维护,也将停止向 PLC4X 的企业用户提供免费社区支持。
针对近期频发的删库跑路事件,作为企业级开源分布式数据库厂商的PingCAP副总裁刘松在接受中国软件网采访时表示,从短期来看,在某种程度会对开源社区的参与者产生一定的心理影响,让开发者对开源协议的宽松跟自由产生一些疑惑。从长期来看,删库跑路不会对开源协作的大浪潮产生较大影响。刘松进一步指出,“这也让开发者越来越意识到,无限自由的开源协作并不是终点。从某种程度上说,由一些商业实体或者基金会孵化的开源项目,具有更高的稳定性和持续性,也更值得开源社区的贡献者长久持续的贡献。”
冰鉴科技研究院高级研究员王诗强也持有同样的观点。“开源项目删库跑路,不会对现在开源盛行的局面带来影响。但它会让代码开源者认真思考,为什么要开源、选择什么开源的协议、怎样从开源的免费模式进度到商业化的模式。同时,这也让很多公司在开源项目的使用选择上非常慎重,也会对已使用的开源代码在数据备份上更加重视。”
中国开源软件推进联盟秘书长刘澎认为,“开源作者删库跑路的行为有违道德。”开源软件遵循开源许可证,实际是作者单方面放弃一些权力的约定。但删库属于商业违规,不能剥夺遵守开源软件许可证的用户的权利。同时,开放代码后,有很多社区人士在方方面面不断贡献,删库跑路的行为也损害其他贡献者的权利。”
‖开源还有哪些风险
根据不完全统计,全球97%的软件开发者和99%的企业使用开源软件,基础软件、工业软件、新兴平台软件大多基于开源,开源软件已经成为软件产业创新源泉和“标准件库”。
值得关注的是,企业在享受成本降低、迭代速度加速等便利的同时,开源许可证的兼容性问题、开源项目的合规问题、开源安全漏洞问题和开源知识产权的侵权等问题也日趋凸显。
以开源协议为例,通常情况下,为了维护开源社区、代码不被滥用,一般在开源时会加一份开源协议。开源的协议有上百个,目前流行的有MIT、GPL、BSD、Apache。其主要区别在于,别人修改代码后是否可以闭源( 私藏起来 ),是否要遵循同样的开源协议。
具体来看,不同于GPL中,程序使用协议下的项目需要公开,MIT则相对宽松,开发者只需要在软件和软件的所有副本中包含著作权声明和许可声明即可。
Marak 删库跑路的Faker.js采用的正是MIT协议。因此,从法律角度看,Marak质疑其他公司拿着他的项目去赚钱而自己分文未得的行为并不受到制约。
再以证券行业为例,根据信通院发布的《证券行业开源治理白皮书》显示,在外购商业业务系统场景下,外购软件的开源组件存在数据不清、风险不明、影响不定、修复不易、来源不一等痛点,可能会将开源安全合规风险引入到证券机构。
王诗强表示,从目前看,部分开源的代码存在软件质量低下、代码可读性、可维护性差、代码安全性差等问题;另外受限于免费的模式,很多关注度少的项目,维护更新的周期慢、活跃度不高,采用这类开源项目的公司产品,也无法得到有效的支持。
在防范开源风险方面,王诗强提出了三大建议,“第一,采用开源项目的公司需要正确评估使用开源项目使用的开源协议如MIT、Apache GPL等,避免因开源协议的问题导致的商业代码被迫开源的风险;第二,选择开源项目应该看项目的活跃程度、维护更新的频率,加强选用的源码的备份,如做本地镜像;第三,对同一种开源的软件,需要有一种以上的备用软件,便于出现删库跑路的情况下,可以随时进行适配。”
“开源并不存在太大的风险,开源的协作模式已经运行了几十年,近几年也逐步进入企业级用户的视野,而且越来越成为支持数字经济的主要支撑。一个先天不足的体系很难经过时间的考验。”刘松坦言,开源的伟大之处之一在于其不断的纠错和适应能力,开源的自由开放会使类似删库跑路的事情造成的影响降到最低。
他进一步表示,“在开源社区里面,每个人、机构都可以 fork 自己的副本,在发生重大分歧的时候,开源社区也依然能作出自己的选择并且坚持。在风险防范方面,开源基金会,从事开源的大中型企业也都在持续强化自己的开源治理,以系统性方式降低使用开源的风险。”
(摘自《2021年影响中国开源未来的十大热点》)
‖谁对开源代码负责
如今,应用开源是大势所趋,用开源的方式做开源风险治理,让开源用多样性拥抱不确定性,形成开源新范式。
值得注意的是,随着开源项目作者删库跑路事件的升级,对开源是否脆弱、谁应该对开源代码负责等关注点引发了广泛地讨论。
对此,刘松表示,“开源脆弱性是一个普遍存在的误解”他进一步解释到,“在《大教堂与集市》这部有关开源的经典著作中,作者ESR已经通过大量的论证证明了开源集市模式的先进性,在那本书问世之后的20多年里,开源技术体系支持了整个互联网包括移动互联网的蓬勃发展,集市模式的生命力已经充分得到了验证。”
“一个开源项目的脆弱性不取决于它的代码是否开源,而是取决于它是不是存在一个足够活跃和多样化的开源社区。”刘松坦言,“开源的开放性意味着任何有参与意愿的开发者都可以自由地参与到项目当中来。与以前以企业为主体的封闭式开发相比,开源社区的参与者的激励动机存在着多样化的特征,除了物质激励以外,在开源社区中的贡献能获得声誉和荣誉是大家更加追求的一种激励形式,这也是开源社区繁荣的根本。如果开源项目需要满足产品级或者企业级的需求,更理想的状态是这个项目的开源社区中有一个商业组织持续不断的为此努力和贡献,这样才能更好的解决‘开源脆弱性’的问题,也能在时间上更快速的响应用户的需求。”
王诗强认为,软件开源是一把双刃剑,大量使用开源代码会加速研发的整个过程,但开源软件必然会因其免费就会存在影响业务的风险。开源无过,开源的脆弱性,需要使用开源软件的公司正视相关问题,做好相关的风险防范措施。最终解决办法,是找到开源软件从免费到商业化付费模式演进的道路。
在谈到“开源代码一旦被采用,谁应该最终负责”的问题时,刘松认为“共同体”能更好诠释开源社区的意义和价值。
“开源社区中的成果,是为大家所共有的,它并不只属于任何个人。”刘松说,“可能大家会希望这个答案是项目的 Maintainer,但是我认为这个是不够公平的,项目的 Maintainer 也只是在开源社区里面作为和大家一样的贡献者存在。但是如果有商业公司基于开源项目,为此提供了一个企业版本,或者 Managed Cloud Service,那么我们才可以认为商业实体应该为此负责。”
公开数据显示,2021年GitHub上中国开发者增长了103万,达到755万,成为仅次于美国第二大开发者群体,而Gitee 2021年注册开发者增长超180万,整体超过800万,中国开源开发者数量无论是在国际还是国内都呈现出了加速增长的趋势,成为中国开源产业的基础力量。
由开源中国和PingCAP作为技术支持发布的《2021年影响中国开源未来的十大热点》中提到,随着开源数据库部署首次超过非开源数据库,Confluent、HashCorp、GitLab三家开源软件企业IPO均超过百亿美元,全球开源企业融资进入加速上升通道,未来的开源产业趋势也将呈现新的特点和变化。
海比研究院院长、中国软件行业协会应用软件产品云服务分会秘书长曹开彬表示,未来的开源将呈现三大发展趋势。
首先,对开源生态的治理提出了更高要求。包括对开源生态的供给侧、需求侧,应该遵循什么样的规范,采用什么样的治理模式,需要业界形成更多的共识。其次,开源作为软件研发模式的改变与创新,它是未来的发展趋势,比闭源模式更为先进。虽有各种问题的出现,但开源的大趋势不会因此而改变。此外,我国正在大力发展开源生态,建立自己的开源社区,删库跑路事件会给我们带来更多的警示。
“我国的开源生态要有更多的自主可控,对开源项目要有更多的风险防范措施。” 曹开彬指出,“更进一步,我们建设开源社区、开源生态时,可以采用更全面的治理机制,以实现具有全球竞争力的、更健康的开源生态。”
热门跟贴