基于开源软件构建产品的工作流程挑战

描述

在嵌入式 Linux 开发的早期(大约 Y2K),其中很大一部分工作是将开源代码移植到目标硬件平台上运行。除非工程师在 Intel x86 板上运行代码,否则开发板支持包 (BSP) 并交叉编译开源中间件以在硬件上运行并非易事。从那以后的几年里,越来越多的硬件公司发现,提供免费的 Linux BSP 对于确保其硬件在嵌入式应用程序中的广泛采用是必要的。在早期,通过控制台端口到达 Linux shell 提示符可能需要数周或数月的时间,而现在应该只需要几个小时。

由于现在可以在目标硬件上运行各种经过验证的开源软件,平台工程师的典型日常任务转而专注于现有开源软件的配置、定制和集成,而不是设计和开发从零开始的软件。鉴于这种转变,让我们回顾一下在决定是否基于开源软件构建产品时要考虑的以下四个主要产品生命周期工作流程挑战:

为应用程序团队创建定制的软件开发工具包 (SDK);

跟踪开源软件更新;

从源代码重建平台;和

管理与各种许可证相关的开源软件义务。

创建自定义 SDK

随着工程师越来越多地将嵌入式 Linux 视为可以在其公司的许多产品中重复使用的通用软件平台,创建定制的 SDK 变得比创建 BSP 更重要。应用程序开发人员喜欢 Android 和 iOS,因为 Google 和 Apple 在为他们的手机和平板电脑平台构建和维护自定义但功能强大且易于使用的 SDK 方面做得很好。谁在为开发工程师为您的硬件平台构建应用程序奠定基础?如果一家公司拥有一名正式负责为应用程序开发团队创建和维护自定义 SDK 的工程师,则该公司处于领先地位。如果公司有人负责这项正在进行的任务,经理应该能够回答以下问题:

工程师的工作做得如何?

他们花了多少时间做这件事?

他们如何将 SDK 分发给其他团队成员?

如果这个人(或平台团队中的关键人物)离开了公司,是否有人可以介入并有效地接管这个角色?

创建自定义 SDK 基本上归结为选择应用程序开发人员应该使用的一组库和 API,然后确保它们以受版本控制的方式内置到应用程序开发工具链中。如果应用程序将利用动态链接,那么这也意味着确保为开发人员的桌面以及运行时目标映像构建一致的版本。以易于安装的格式提供 SDK 有助于确保所有应用程序开发人员的一致性。

跟踪开源更新

团队中谁负责跟踪对公司产品内运行的开源软件所做的更新?他们如何做到这一点,多久一次?他们在寻找什么样的更新?安全补丁和错误修复是否与新功能发布一样受到关注?他们如何与团队其他成员一致地分享这些更新?

我们与一位客户合作,通过让三名工程师每周一天在午餐时间工作来解决这个特定问题。为了确保他们了解他们在公司产品中使用的开源软件包的所有最新更新,三位工程师将笔记本电脑显示器投影到会议室的屏幕上,并浏览各种网站、变更日志、GIT 树、邮件列表存档和下载站点。虽然这不一定是最有效的方法,但它确实说明了保持最新状态的积极努力 - 并且还说明了这样做所需的工程时间投资。

自动化可以在这方面有所帮助。订阅 Timesys LinuxLink 服务 (linuxlink.timesys.com)、CERT 邮件列表 (forms.us-cert.gov/maillists) 或 Freecode(原freshmeat.org)等网站,(见图 1),可以放置一些结构通过将相关的、经过过滤的开源更新直接流式传输到 Web 浏览器或电子邮件收件箱中,围绕这项工作并节省时间。

图 1:当开源软件包的更新版本可供下载时,LinuxLink 更新引擎会通知平台工程师。

Linux

从源代码重建平台

曾经尝试从 RPM 或 Debian 源代码重建桌面发行版吗?祝你好运。虽然分发人员确实提供了源代码(毕竟它是开源的),但从源代码重建绝对不是他们通常支持的用例。在大多数情况下,从源代码包重建后,生成的系统不会被视为相同的发行版,因此供应商不太可能支持。

虽然这对于企业或桌面 Linux 环境来说可能是可以接受的,但对于嵌入式产品公司来说却是不可接受的。典型的嵌入式产品在该领域使用多年,出货后往往需要维护和更新。保留嵌入式产品的每个交付版本中包含的所有软件的详细清单以及用于构建它的工具和脚本是至关重要的。当今许多现代 Linux 构建引擎都提供了此功能,因此请务必选择一个提供此功能的引擎。

管理开源软件义务

与大多数基于开源平台构建的典型嵌入式产品一样,开发团队可能必须跟踪许多不同的开源许可证所产生的义务,而不仅仅是单个许可证。作为一个例子,我们提供了“小尺寸起点”,它们是预先构建的嵌入式 Linux 映像,通常只有几兆字节大小,可以简化嵌入式 Linux 的快速启动和运行。如图 2 所示,一个占用空间小的起点可能只包括七个开源包,但这七个包实际上属于四个不同的开源许可证。

图 2: Timesys 小尺寸起点图像中的开源软件包和相关许可证

Linux

作为另一个例子,考虑一下索尼提供的相对简单的无线数码相框 ( www.docs.sony.com/release/VGFCP1_qs.pdf )。如图 3 所示,该产品基于 20 个不同的开源软件包 ( www.sony.net/Products/Linux/VAIO/VGF-CP1.html ),同样涵盖各种不同的开源许可证。

图 3:索尼无线数码相框中包含的开源包

Linux

在嵌入式产品设计中使用每种类型的开源许可证对将这种软件整合到他们的产品中的开发团队施加了一组独特的义务。正因为如此,一些公司维护了一个开源许可证列表,供其开发人员使用。其他公司走得更远,明确列出了每个开源软件包的哪个特定版本已被批准可能并入公司的产品中。

确保开发团队了解并遵守与这些开源许可证相关的义务需要时间和精力。在尝试达到激进的产品开发里程碑时,可以帮助识别和跟踪适用的基础许可并实现许可义务的工具可以证明是非常有价值的。

从一开始就考虑工作流程

开源的使用给整个嵌入式产品开发生命周期带来了一系列新的工作流程挑战。通过在新产品开发开始时考虑这些挑战,通过指定适当的工程师来负责各种问题,并通过为工程师配备适当的工具,管理人员可以通过最大限度地减少对进度的意外影响来确保项目更成功。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分