目录
开源软件
开源软件是一种基于开放协作和共享的软件开发模式,其利弊对于软件产业和社会发展具有重要意义
优势
免费
谁能拒绝不要钱的东西呢,况且很多免费的开源框架已经足够优秀了
透明
开放的代码使得软件的安全性和稳定性得到提升,因为有全世界的开发者可以共同维护和改进代码
可更改
大部分开源项目都是自由度很高的 MIT 或 BSD 开源版权,可以按需定制开发;
可协作
Github 是最大的开源项目平台,全球的开发者都可以参与迭代开源项目
影响力
优秀的开源项目可以提升作者或贡献者在行业内的知名度和影响力
开放的代码使得软件的安全性和稳定性得到提升,因为有全世界的开发者可以共同维护和改进代码;
开源软件通常具有更高的灵活性和定制性,用户可以根据自身需求对软件进行修改和定制;
开源软件在成本上更为经济高效,可以节约软件购买和维护的费用;
开源软件有助于促进技术交流和共享,加速科技进步和创新
坏处
安全隐患
虽然很多优秀开源项目都由企业或资深专家开发维护,但由于不完全是自己使用,导致贡献者容易对安全性造成疏忽,知名开源项目爆出安全漏洞的例子多不胜数,例如 OpenSSL Heartbleed、Fastjson 远程代码漏洞、Antd 圣诞彩蛋等;
良莠不齐
开源项目开发者、贡献者和维护者可以是任何人,他们各自的经历和专业背景不同,所以必然导致代码或开源项目的质量存在一定的差异;虽然代码规范(Coding Standard)可以规避一些问题,但优秀的项目毕竟是少数,看看托管了几百万项目的 NPM 或 Maven 公共仓库吧;
学习成本
笔者承认有一部分优秀开源框架有很成熟和完善的文档体系,但大部分还是缺乏有效的文档教程支持;即使有了详尽的文档,开发者要阅读学习也会投入很多时间成本;而大部分付费产品则包含专业技术支持,可以有效帮助开发者节省时间;
持续性问题
优秀程序员可以开发非常高质量的开源项目,但由于开源项目本身并不带来现金收益,因此很多作者不愿意长期投入在开源项目上面,导致优秀开源项目得不到持续的维护和迭代。
未知风险
再优秀的框架都会存在风险,由于开源框架初期并没有经历太多的实际业务测试,很多问题无法得到及时修复,因此在使用开源框架的过程中或多或少都会遇到一些出乎意料的问题,解决它们会花大量时间,甚至有些问题还无法解决。
开源软件的质量和支持可能不如商业软件可靠,用户在使用过程中可能遇到问题无法得到及时解决;
开源软件的更新和升级频率较高,用户需要不断跟进并适应新版本;
部分企业可能对开源软件的安全性抱有疑虑,担心信息泄露和安全漏洞;
开源软件的使用和定制需要一定的技术水平,对于普通用户可能存在一定的学习门槛