新闻动态
从原型到布署后——Linux开发决策关键点纵览



Brandy Goolsby

质量和速度,这两个要素贯穿软件开发团队走过的Linux之旅,直至获得最终解决方案以及之后的布署和维护工作。在当今激烈竞争的市场环境中,要取得成功就必须专注于你自己最擅长的那部分工作,而把不能带来差异化优势的操作系统设计、开发与维护工作交给嵌入式Linux 服务提供商。

在此过程中,决策的起点在于原型,接着是定义和开发,然后才是生产、布署、维护,最终做好产品生命周期善后。在嵌入式行业,产品生命周期可以长达5年、10年、15年甚至更长。

如果您的项目能够通过原型阶段并获得资金,您的Linux解决方案也将会经过许多决策关键点。这些决策将会影响到速度、质量以及资源。这些因素很可能直接影响到未来的可扩展性、获利能力乃至项目的全面成功。有些决策将会带来您在后续进程中不得不偿还的“负债”——我在这里特别强调的是“技术负债”。

我们首先遇到的决策关键点是什么呢?通常,因为我们希望推出的是一款创新产品或某种创新服务。显然,我们不会说:“我要开发一款基于Linux的产品。”相反,Linux和开源代码只不过是我们为了达成目标所用软件平台中的某些部件而已。我们肯定要从某个地方获取Linux源代码,而这正是你在项目中要做出的第一个重要决策。风河公司最近做了一个简短的问卷调查,来了解大家都是怎样获得Linux源代码的。而我们的调查结果有些令人惊讶。在问卷中给出了四个选项:

  1. 基于Yocto Project Linux、Debian或类似来源自行编写: 27 %
  2. 采用半导体或电路板提供商提供的Linux: 17 %
  3. 采用开源提供商的商业版Linux: 10 %
  4. 继续评估是否想要采用Linux: 45 %

有趣的是,选择“采用商业级OS提供商的Linux”的人不到10%。此外,考虑到最近嵌入式开发正在转向Linux的整体趋势,仍然有45%的人还在评估是否全面采用Linux。许多在开源社区已有较长经历的人或许会觉得这个数字应该很低。然而,可能因为受访者大多来自嵌入式软件开发者,而非企业或网络应用开发者。嵌入式世界对于Linux的热衷程度还没有企业和互联网开发者那么高,因为许多嵌入式应用场景要求具备安全关键性认证,而这对Linux来说并不容易。

在决策过程中,假设你已经通过上述四种选择中的某一种方式获得了Linux源码,然后开始规划开发工作的各个阶段。很快你就会遇到另一个决策关键点:你要直接采用刚刚获得的Linux发布版本,还是对它进行一些修改?或多或少,你的这个决策都将给你带来一些“技术负债”。

首先,让我们了解一下“技术负债”的定义。Linux基金会所给出的定义是:“技术负债是指维护源代码的成本,其产生原因是社区开发所造成的歧路偏差。”基本上,这个概念的意思是,如果你此时直接采用原有的Linux发行版本,那么你最终还是会需要打一些补丁或做一些修改,这就是产生了“歧路偏差”。那么,很可能你就需要承担维护这些歧路偏差的各个版本,在整个产品生命周期内都将背负这项工作。你或许要有足够的理由承担这些,包括风险和工作量负担。下面列出了承担这些技术负债的常见理由:

  • 发布时间:你必须按照固定的时间表来进行发布,而且很难能与确定的Linux版本保持同步。自己单独行动虽然可以走得更快,但你很可能需要走回头路才能与开源社区保持一致。
  • 创新:你的开发团队相信他们拥有比开源社区更好的方法来实现特定的功能。你也不想花时间去向开源社区上传这些功能代码。
  • 竞争性特色:你希望给自己的产品增加独一无二的功能以便获得差异性优势,同时你也不得不给开源代码打一些补丁来支持这些功能。你不想把这些补丁上传给开源社区,原因既可能是开源社区不接受这些修改,也可能是你希望把这些功能独家保留给自己的产品。
  • 政策:有些组织机构规定了严格的官方政策来约束向开源社区贡献代码,因此你会受到内部制约不能上传代码并于社区保持一致。
  • 技能/知识:您的企业机构或许尚未具备相应的技能或知识进行上传,或者与开源社区尚未达成必要的关系来管理这些代码。

以上每个因素都必须在设计阶段做出考量。实际上,在如此复杂且竞争性的嵌入式设备行业,这些因素必然会导致某种程度的技术负债。最终,你的决策还是会回归到能否采用“足够好”的Linux平台,让它具备齐全的功能以及你希望的上市时间,而不是一个绝对理想的版本。

真正让你感到痛苦的是——当你开始开发产品的下一个版本时。你希望采用“最新、最好”的Linux版本,但是你却在自己的历史版本中积攒了这么多补丁、这么多技术负债。此时,你的工程师只好忙于修改和测试以前的补丁,而不是全力投入技术创新。随着产品版本的更新,你的这些痛点日积月累。我曾经工作过的一个项目中积累了超过3000个技术负债补丁,历经了这个产品的三个版本。我们安排30位工程师花费了一年的时间才消除或替换掉了这些技术负债,才实现了与开源社区主流版本的同步。

进程的延宕和攀升的费用,这只是技术负债导致成本上升的一部分。可测量性降低是一方面,更重要的是您的企业在开源社区如何立足!开源社区非常厌恶歧路偏差,而您的企业在工程师群体众多形象也要顾及,不要迫使大家花费很多时间去弥补你所造成的技术负债。最终,你可能很难找到足够素质的工程师让他们去查找哪些代码曾经被修改过。

企业应该选择“足够好”的开源解决方案。如果你却是需要让自己的Linux具备差异化优势,或者采取一些不同的方法来支持某些功能,请跟开源社区保持密切配合,做出一切努力让自己的补丁进入主流版本。

即便你倾尽全力与主流版本保持一致,仍然会在缩短上市时间方面发现自己的技术负债。你需要与产品中的其他成本一样来处理这些代码。你要确保长期支持,接受CVE漏洞审计,把补丁纳入您的IP合规性文档。所有这些都会带来成本,与产品的每一个版本如影随形。

当你发现自己陷入困境,请记着风河可以提供帮助。风河提供了一整套的支持与集成服务,支持企业以Linux解决方案来提高速度与质量,而且不论你选择以怎样的方式获得源代码。不管你是从Yocto Project、电路板厂商还是其他商业提供商取得Linux代码,风河都能够以精深的专业知识帮助你推出商业级的Linux产品。