引言:根据Synopsys发布《2023年开源安全和风险分析报告 》中指出,在Black Duck审计服务团队今年分析的1,703个代码库中,有96%包含开源代码。开源软件风险和供应链安全密不可分,正确认识开源软件才能识别其风险,并对其进行规范化管理。
RedHat官方给出这样的解释如下,
开源软件是通过特定类型的许可证发布的软件,这种许可证能让最终用户合法地使用其源代码。此类许可证有许多种,但通常开源软件必须符合以下条件:
类别 | License名称 | 关键点 | 使用建议 | |
---|---|---|---|---|
BSD类 | Apache-2.0 | Tomcat | 允许链接,无开源义务,允许修改,但需要软件所有人授予专利许可 | 属于商业友好型许可证,推荐使用 |
BSD | FreeBSD | 允许链接,无开源义务,允许修改,无专利规定 | ||
MIT | lombok | 允许链接,无开源义务,允许修改,无专利规定 | ||
MPL类 | CPL-1.0 | JUnit | 允许链接,无开源义务,允许修改,片断引用、与私有代码混用会被视为对源软件的修改从而导致私有代码开源,软件所有人授予专利许可 | 可以使用,但关注修改后对应的开源义务 |
EPL-1.0 、EPL-2.0 | Eclipse | |||
MPL-1.0、MPL-2.0 | certifi | |||
GPL类 | LGPL-2.0 | xz-compat-libs | 动态链接无开源义务,静态链接需要开放与之链接私有软件的.o文件和makefile | 慎重使用,允许动态链接方式使用 |
GPL-2.0、GPL-3.0 | ltrace | 允许链接,但链接的整个产品需要开源;允许修改,但修改部分及整个产品需开源 | 慎重使用,可能导致产品整体开源 | |
AGPL | Berkeley DB | 在GPL的基础上加了一条限制,即不对外分发,只要在网络服务器上使用AGPL提供服务就要履行其开源义务,典型的如 | 慎重使用 |
以上10种License覆盖了90%以上的场景。GPL V2对于开发者的义务要求最多,使用时应慎重!
公司控制型:属于伪社区,如Android;
公司主导型:公司控制力较强,无明确的升级机制,如Mysql;
基金会主导型:有明确的组织和升级机制,管理也比较透明。如Linux、OpenStack。
联系:
区别:
总结:OSI、FSF 和 SPDX 三个组织在开源和自由软件领域有不同的关注点和任务,但都为软件产业的发展和创新做出了贡献。
模式 | 说明 | 举例 |
---|---|---|
企业版 | 开源版本免费,企业版本获得License和服务费用,通过开源向企业版本引流 | 如OpenSCA、CodeQL、Docker |
高级功能收费 | 可靠性、安全性、定制功能及技术服务等收费 | 如JumperServer |
订阅服务 | 开源声明免除了开源社区对软件质量和缺陷修复的责任,由OSS厂商提供软件订阅服务 | RedHat |
云服务 | 通过公有云提供基于开源软件的云服务,通过开源向云服务引流 | ELK |
应用和流量变现 | 通过开源促成应用,形成行业事实或标准,并与应用生态形成绑定,进而变现(广告、应用市场等方式) | Android |
特点 | 风险 |
---|---|
代码公开 | 同一软件可能来自多个渠道,如不细心区分,可能会被植入恶意代码。 |
漏洞公开 | 开源软件漏洞一经公开,传播极快,影响较大 |
社区喜新厌旧 | 老版本基本无人维护,漏洞无人修复,容易被利用 |
License约束 | 除了一般声明义务,部分不有强制开源义务,若未履行可能引发维权诉讼 |
引用灵活 | 支持片断引用、组件级引用、软件包引入会导致同步社区升级困难,加大了维护成本 |
避免这些误区,正确认识开源软件,可以让我们更好地利用这些优秀的资源,提高工作效率和产品质量。
开源软件(Open-source software)是指允许用户查看、修改和重新分发源代码的软件。它强调的是代码的开放性和透明度,让用户有机会了解软件的内部工作原理,并对其进行改进。
FOSS(Free and Open-source Software)指的是自由和开源软件,它包括两部分:自由软件和开源软件。自由软件强调的是用户的自由权利,包括使用、修改和分发软件的自由。而开源软件则关注的是源代码的开放性。
总的来说,开源软件和FOSS的区别在于侧重点不同。开源软件主要关注源代码的开放,而FOSS则更强调用户的自由权利。实际上,开源软件是FOSS的一部分,因为它们都涉及到源代码的开放和透明。