7 Reasons 开源的 软件 can be Evil

在我的整个旅行中,我遇到了很多开发团队,他们似乎信奉“最好的软件是自由软件”的格言。当他们听到“开源”一词打开天堂时,合唱团开始唱歌,关于开源代码进行尽职调查的所有想法都消失了。就是这样的方向,无论集成成本如何,无论缺少多严重的支持,仅此而已!戴上百叶窗,向后踢,取下安全带,享受旅途的乐趣。开源软件可以提供尽可能多的潜力,嵌入式软件开发人员应该像瘟疫一样避免使用它,原因有很多。 (或者至少要非常小心使用它!)

原因1 –缺乏可追溯的软件开发生命周期

开源软件通常始于一个聪明的开发人员,他们需要在车库或地下室工作。它们创建了非常有用和有用的东西。其他开发人员对此表示感谢,并且对该软件的支持开始增长。最终,多个拥有空闲时间的开发人员参与其中。该软件不断发展,但实际上并没有遵循可追溯的设计周期,甚至没有遵循最佳实践。这些不同的开发人员实现了他们想要的东西,或者向满足他们需求的方向推送了代码。结果是该软件可以在有限的情况下使用,并且用户需要双手合十并祈祷他们的需求和条件与他们相匹配。发展没有’它实际上遵循任何可追溯的软件开发生命周期,而只是一个杂乱无章的事,通常由项目负责人负责。

原因2 –设计用于功能而非健壮性

开源软件通常是按功能编写的。访问并写入SD卡。通过USB进行通信。这里的问题是,尽管软件可以运行,但是代码通常并不健壮。在受控条件下(例如在工作台上),它可以很好地工作,但用扳手扳动它,软件通常会失败。我认为,在许多开源框架中很少发现鲁棒性。尽管该软件是免费的,但开发人员很快就会发现他们的开源软件只是功能正常,无法承受现实世界的压力和状况。开发人员会发现自己不得不挖掘未知领域,试图找出最佳方法来改进或处理原始开发人员所未预期的错误。

原因#3 –意外暴露机密知识产权

开发人员经常认为所有开源软件都是免费的,并且没有附带任何挂钩。问题是事实并非如此。开源软件开发人员使用几种不同的许可方案。有些确实确实放弃了农场。但是,也有一些许可证需要进行任何修改,甚至需要将相关软件作为开源发布。如果没有引起足够的关注,那么开发人员可能会发现自己不得不向世界发布机密代码和算法。免费软件只是使公司付出了泄露自己秘密秘密的代价!如果一个团队想要在仍保护其IP的同时使用开放源代码,那么他们现在需要花钱支付律师费,以确保他们不会通过使用“免费”软件来全力以赴。

确保如果您要使用开源软件, 您计算律师费用以确认您的律师资格。

原因4 –缺乏自动或手动测试

是的,因为可能有很多 我知道工程师和客户不使用自动化测试。正式化 测试过程,尤其是自动化测试对于确保 代码库很健壮,并且质量足以满足其需求。我见过 包含自动化测试的开源Python项目令人鼓舞 但是对于低级固件和嵌入式系统,我们似乎仍然落后于 其他软件行业。没有自动化测试,我们将无从得知 如果集成该开源组件破坏了我们不会 注意,直到我们开始生产为止。

原因#5 –文档不足或完全缺乏

开源文档已经越来越完善 已经存在很长时间或具有强大商业价值的项目 后盾。尽管由个人驱动的较小项目往往具有 几乎没有文档。如果开源代码没有文档, 将其投入实践或调试将是一场噩梦,甚至更多 比获得商业或工业级软件昂贵。

原因6 –缺乏客户支持

没有什么比做任何事情都能使工作或调试更令人沮丧的了,而您只是碰壁。发生这种情况时,解决问题的最佳方法是获得支持。开源的问题在于,不能保证您会及时获得所需的支持以解决任何问题。当然,有一些论坛和社交媒体可以请求帮助,但是这些论坛都是由人们放弃空闲时间来帮助解决问题的人员组成的。如果他们没有时间去研究问题,或者问题没意思或太复杂,那么开发人员就自己决定。

原因7 –集成从未像看起来那样容易

找到该网站,演示视频很棒。 这是要使用的组件。看看这有多容易!源代码已下载 集成开始。几个月后,集成仍在进行。什么 看起来很容易迅速变得复杂,因为相同的平台或工具链 没有被使用。必须进行“较小”修改。兔子洞刚好 不断深入,但经过这么长时间, 整合,这不可能是徒劳的。

结论

我决不反对开源软件。在某些情况下,它是非常有用和有益的。尽管不仅仅使用软件是很重要的,因为它是免费和开源的。开发人员需要认识到他们对产品的要求,需求和健壮性水平,并适当开发或采购满足这些需求的软件,而不是盲目选择软件,因为它是“免费的”。

5 thoughts 上 “7 Reasons 开源的 软件 can be Evil”

  1. 特别是在许多地方,#3都是真正的杀手。甚至有术语“contamination”在开放源代码和商业软件的上下文中使用:必须避免用开放源代码污染生产性软件,以避免不得不向竞争对手公开商业机密。违反该规则可能很容易导致公司破产。

  2. 在同时分享此信息和您的帖子时,您是否看到任何讽刺意味“使用Micro Python嵌入式软件的5个优势” with “优势3 –开源免费”?本文的点击减少标题可能是“认真考虑开源软件的14个理由”,并包含有关开源的7件事。那将是更有用的文章,并且在同时提倡Micro-Python方面不是两面的。谢谢,格伦
    //en.wikipedia.org/wiki/MicroPython 麻省理工学院执照

    1. 感谢您的评论格伦。我故意将这两个都贴在一起’保持平衡很重要。如果开发人员不这样做,开源可能是邪恶的(注意这不是IS)’请仔细审核他们正在使用的开放源代码。 MicroPython是一个非常成功的开源项目的一个很好的例子,这就是为什么我将其与本文配对。作为独立顾问,它’对我来说审查问题的两面至关重要。

      感谢您对即将发表的文章的建议,这些建议实际上已经在我的清单上。

  3. 一些评论:

    #1

    如今,大多数现代开放源代码软件都使用git,mercury或subversion等版本控制系统。这极大地缓解了可追溯性问题,但对“build-and-pray”问题。另一方面,您也可以修改源以适合您的特定组织。如果该软件在战略上足够重要,那么您甚至可以聘请地下室青少年,并将代码和专业知识带入公司,就像Transmeta对Linux所做的那样。

    同样,FLOSS可能会开始解决公司的特定需求,而公司一开始确实拥有所有这些资源。如今很少见到一些少年地下室像霉菌一样成长着Linux风格的项目… 🙂

    #2

    这与质量检查和测试有关–如果您的产品依赖于外部来源,则需要内部产品质量检查,但对于所有第三方技术都是如此。同样,由于它是开源的,因此您可以做一些事情,无论是记录晦涩的错误,还是请专业人士为您修复它。

    #3

    Right 上 the money there, 开源的 does require you keep an iron grip 上 licenses.

    #4

    形式化测试对产品非常有用,但这完全取决于软件的使用。通常,开放源代码不是为产品而设计的,而是作为快速发展的软件项目而设计的。随着软件的成熟,最终将编写自动化测试。另外,请记住,当今大多数FLOS是由从事此工作的专业程序员编写的。

    #5,#6和#7是FLOSS运动确实遭受的严重问题,但对于FLOSS项目而言并不是唯一的(任何小演员也遭受相同的问题)。

    总的来说,这是一本好书,我大部分都同意,但想提出一些小的保留意见。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.