软件开发者都喜欢开源软件。这有什么理由不喜欢呢?!它易于下载、内容丰富、充满创意,最重要的是——免费。成千上万的程序员拥有使用开源库的经验,因此你可以利用他人提供的免费(或低成本)帮助。开源代码库可以让你快速起步,迅速完成80%的工作。对于初创公司或身处新兴、充满不确定性市场的公司而言,这种免费的启动资金可能是其生存的唯一途径。
几乎所有公司都会在内部项目、企业 IT 需求以及一些基于 PC 的开发项目中使用开源产品和库。如果要开发的软件运行在 Windows、Linux、Android 或 iOS 等开放应用平台上,那么可以适当考虑使用开源软件。在这些情况下使用开源软件是可以接受的,因为像 PC、平板电脑和手机这样的多应用软件平台经常重启、升级、修复 bug 和进行更新,而且更新频率很高。开源软件常见的臃肿问题在 PC 或手机上并不会造成困扰,因为内存和处理器性能都很充足——完全没有问题。
通常…
对于单一用途的嵌入式系统(例如烤箱、安全系统或跑步机),开源是 平时 禁忌。如果这些是关键任务或生命关键(例如在汽车或医疗设备中),则开源是 无疑 禁忌。嵌入式系统必须立即启动、完美运行、能够在恶劣的条件下生存并且对资源非常吝啬。重新启动或软件更新不是一个选项。这些特性消除了开源软件的使用。它的臃肿和缺乏对编写代码的程序员的可追溯性对于嵌入式系统来说是难以承受的。
但即使在非嵌入式世界中, 心血漏洞 臭名昭著地强调了开源的另一个弱点。如果涉及大规模数据、安全或敏感信息, 有风险开源软件始终容易受到攻击——无论是故意的、恶意的还是意外的。务必谨慎使用,否则日后可能会给你带来麻烦。
最后,当你使用开源软件并且出现严重问题时,除了犯错的“免费”贡献者之外,所有人都会成为替罪羊。你的公司CEO、软件总监和程序员都会受到牵连——而原作者却隐身于网络空间的某个角落,继续从事下一个爱好或临时工作。