开源运动,以Linux日益普及为例证,不仅正在进入企业环境,也正在进入您附近的家庭。长期以来,诸如软件开发、计算机辅助设计和制造以及繁重的计算应用程序等高端应用,都已使用Linux和通用PC硬件来实现。
现在,Linux和开源软件正在计算领域的另一端取得进展。TiVo,首个商业化的数字视频录像机(DVR),提供了一个嵌入式设备如何变得足够强大以支持Linux作为操作系统的例子——为系统开发人员提供了极大的杠杆作用。“开源”简史
对许多人来说,开源运动是一个近期的现象,在1990年代后期随着网景浏览器(Netscape Navigator)的创建和Linux操作系统的兴起而进入大众视野。然而,开源运动的真正开端可以追溯到1980年代中期。
当时,计算机行业以及学术界都对Unix操作系统1及其变体着迷。计算机制造商意识到,每个制造商为其硬件提供专有操作系统的时代即将结束;虽然这种策略将客户锁定在特定的制造商,但也限制了获取新客户的能力,并且支持成本很高。
Unix最初是在贝尔实验室开发的,是为了应对1970年代早期大型、复杂、不可移植的操作系统。美国电话电报公司(AT&T)没有看到在许可或支持操作系统方面存在重大机会;相反,它以象征性的许可费和少量单位特许权使用费提供了Unix源代码。许多学术机构纷纷涌现,利用这一机会扩展原始源代码,添加新的和有趣的功能。
其中最著名的成果是Unix的伯克利软件发行版(BSD),它率先推出了诸如分页和“套接字”网络抽象等功能。BSD Unix至今仍然存在,但它的后代更为人所知,其中包括:FreeBSD、NetBSD、OpenBSD和BSDi。这一系列的Unix开发始于1974年2,BSD开发人员创建了现代基于Unix的操作系统中的许多功能。事实上,多年来,BSD版本的Unix在功能、性能和可靠性方面都被认为远优于AT&T Unix(许多人会认为BSD Unix仍然是最好的)。这在很大程度上是BSD开发开放和协作性质的结果,当时Unix在庞大的AT&T大厅内只是一个鲜为人知的副业。
在1980年代中期,每家计算机制造商都为其计算机提供或计划提供基于Unix的操作系统。每家公司都选择了一个特定的Unix版本作为起点,然后添加了各种专有功能。尽管所有这些操作系统都声称是Unix,但在一个版本上编写的软件通常无法移植到其他版本。
与此同时,AT&T公司正在根据美国政府的反垄断诉讼拆分为独立的子公司,剥离了电话运营公司和一个不受监管的子公司。该公司正试图利用其内部开发的大量技术作为杠杆,创造新的收入来源。在AT&T内部,人们越来越意识到,销售和支持Unix可能是一个重要的新收入来源。该公司开始推广其自己的Unix版本作为计算行业的标准,并加强其围绕Unix商标和源代码的知识产权。
AT&T“控制”Unix,然后可能限制开发人员查看或更改软件内容的可能性,是早期开源倡议背后的主要推动力之一。
许多人认为AT&T的这项举措对软件社区来说是坏消息。其中包括麻省理工学院的程序员理查德·斯托曼(Richard Stallman),他在1984年创立了GNU项目(“GNU is Not Unix”),旨在将Unix重写为“自由”软件——即不受任何人控制,任何人都可以随意使用和修改的软件。
这导致了1985年自由软件基金会(FSF)的成立,该基金会是GNU项目的主要资助和倡导组织。自由软件基金会制定了GNU通用公共许可证(GPL),这是当今使用最广泛的开源许可证。
在GNU项目启动的同时,其他努力也开始至少标准化Unix的定义,以增强软件的可移植性。其中一项努力是成立了IEEE 1003标准委员会,该委员会将继续制定被称为可移植操作系统接口(POSIX)的一系列标准。另一个值得注意的努力是X/Open组织的创建,这是一个商业合资企业,致力于应用程序的可移植性、测试和Unix兼容操作系统的品牌推广。
AT&T继续积极推进Unix,于1987年与太阳微系统公司(Sun Microsystems)签署协议,共同开发AT&T的System V Unix版本,这将成为Unix的事实标准。该版本将首先且最好地运行在Sun的Sparc微处理器架构上,这吓坏了计算机行业中所有其他基于Unix的制造商。他们认为自己相对于Sun处于劣势,而Sun通过积极营销联合开发加剧了这种恐惧。
这些制造商,在数字设备公司(DEC)和惠普公司(HP)的领导下,在加利福尼亚州帕洛阿尔托的DEC西部研究实验室安排了一次会议。该实验室位于汉密尔顿大道,因此第一次在那儿开会的公司集团被称为汉密尔顿集团3。为了应对Sun/AT&T联盟,这些制造商中的许多公司聚集在一起创建了开放软件基金会(OSF),其任务是创建与AT&T竞争的“替代”Unix版本。
作为回应,AT&T成立了Unix国际公司,招募了许多计算机供应商来支持System V Unix。Unix战争由此开始。与此同时,GNU项目在幕后默默地工作,开始生产许多有用的工具和实用程序,主要用于学术界和研究领域。
在1990年代初,在Unix战争期间,Unix行业的人们开始意识到,微软开始主导计算机行业的PC领域,并且该公司很可能从那里扩展到行业的其他领域。
这导致了几次臭名昭著的反击努力。其中一个引人注目的失败是“ACE”倡议,旨在对抗微软和英特尔。它推广了开放软件基金会的Unix克隆OSF/1,运行在MIPS微处理器4上。
另一个反击努力是AT&T创建了Unix系统实验室,并获得了Novell的投资,成立了一家独立的Unix技术公司。随着这家合资企业陷入困境,AT&T将其股份出售给了Novell,后者正在寻找一款工业级操作系统来补充用于PC的Novell Netware。
1995年,Novell将Unix品牌授予X/Open,并将软件技术业务出售给了圣克鲁斯运营公司(SCO)。一年后,开放软件基金会和X/Open合并成立了开放组织(The Open Group),该组织继续致力于开发任何人都可以实施的基于Unix系统的开放标准。
与此同时,GNU项目继续扩展其软件基础并提高其产品的质量。在学术界,GNU编译器集合(GCC)被认为是创建跨平台软件的理想选择。在许多方面,该编译器套件开始超越商业产品的质量。
1991年,林纳斯·托瓦兹(Linus Torvalds)开始开发Linux内核。通过选择使用GNU项目软件来构建和扩展这项工作,他创建了一个富有成效的合作,随着时间的推移,这提高了两者的质量。
在整个1990年代中期,Linux的开发持续快速发展,许多程序员为操作系统及其基础设施做出了巨大贡献。1995年,首个商业Linux发行版将Linux内核与GCC工具套件以及全套类Unix工具和实用程序相结合,创建了首个可信的Unix替代品。
在1990年代后期,GNU/Linux作为商业级操作系统环境崭露头角。一些仍然著名的公司进入了GNU/Linux发行版业务:红帽(Red Hat)、VA Linux、Slackware等。不幸的是,GNU通用公共许可证限制了这些公司可用的商业模式。尽管许多公司都成功进行了首次公开募股,但在无法产生自筹资金的现金流后,它们纷纷倒闭。红帽仍然是商业Linux发行的标准制定者,并且似乎正在成功地开展发行和支持开源软件的业务。
Unix的遗产继续引起争议。IBM、惠普、Sun和SGI等公司现在都为其计算机支持Linux发行版,通常与他们自己的专有Unix产品并存。
GNU/Linux越来越多地被用作服务器操作系统,降低了总体成本,同时允许使用通用的基于PC的硬件,而不是更昂贵的专有硬件设计。
许多包含Linux的嵌入式应用程序已经存在或即将上市。TiVo客户端设备(TCD),一种数字录制电视节目的机顶盒,是最早的此类系统之一。索尼和许多其他日本消费电子产品制造商最近宣布了他们对Linux的支持,并承诺使其在消费电子产品应用中无处不在。
然而,Unix的遗产继续引起争议。SCO公司面临其基于原始Unix衍生产品的专有产品销量下降,于3月份起诉IBM,声称IBM通过将源自IBM基于Unix的专有产品AIX的专利技术纳入Linux源代码库而“污染”了Linux源代码库。随着Novell宣布它仍然控制着Unix中包含的大部分知识产权,这场争端进一步升温。除了Greg Lehey在本期Queue杂志中对SCO诉讼的分析之外,前网景公司(Netscape)总裁、现任开源促进会(Open Source Initiative)主席埃里克·雷蒙德(Eric Raymond)也对该诉讼和Unix的总体历史撰写了广泛的评论,驳斥了SCO的说法5。6月份,SCO“终止”了IBM在AIX中使用的Unix软件的许可证,尽管IBM公开声明SCO无权这样做。
无论这场诉讼的结果如何,这似乎都是SCO的后卫战——而且可能是徒劳的。在提起诉讼后的一段时间内,SCO一直在发布其自己的Linux发行版,我们必须假设其中包含其知识产权。由于根据GNU通用公共许可证分发软件要求发布者承认其对发布的源代码不拥有任何权利,或者放弃这些权利,因此SCO似乎已经丧失了其可能提出的任何索赔。至少,看看这场闹剧如何发展会很有趣,尽管它不太可能对Linux在许多领域的持续采用产生重大影响。
最初的TiVo产品,正如我和迈克·拉姆齐(Mike Ramsay)在1997年提出的那样,是用于家庭网络的多媒体服务器,将内容流式传输到整个家庭的瘦客户端。构建这样的产品需要坚实的软件基础。家庭环境可能是可以想象到的最关键任务的应用之一。从消费者的角度来看,该设备必须完美运行,可靠且稳健,并能优雅地处理断电。
那时,我通过多种途径熟悉了Linux。在硅谷图形公司(SGI),我是将Linux移植到基于MIPS R5000的SGI Indy工作站的努力的执行赞助商。我正在使用几个早期的Linux发行版进行个人实验和开发工作。
这些经验使我相信Linux可以很好地作为TiVo的操作系统基础。它基于经过良好测试的API,包括可靠的磁盘管理系统、大量的支持软件和工具以及虚拟内存和分页。它还提供了对软件源代码的访问和控制。凭借我的操作系统开发背景,我确信我们可以处理为实现产品目标所需的任何细微修改或错误修复。我在惠普和SGI公司也有丰富的经验,可以将类Unix操作系统塑造成能够处理实时计算任务。我认为可以对Linux进行类似的增强,以提供支持消费级电视观看所需的实时性能6。
然而,当时,开源软件被视为可疑。人们经常断言,开源软件永远不可能像专有软件那样可靠。根据GPL发布的软件尤其令人反感,因为许多人认为此类软件会污染其接触到的所有东西,并且会不允许专有开发。仔细阅读GPL后,我确信这些担忧是没有根据的,并且Linux可以为我们提供强大的开发优势,同时允许保护我们的知识产权。
在TiVo成立初期,我们意识到,在可预见的未来,支持客户端-服务器多媒体环境的家庭网络带宽将不容易获得。我们决定将我们的设计合并为一个单一产品,即TiVo客户端设备。TCD的形式是一个电视机顶盒,大约相当于录像机的大小。它包含许多现成的电子组件,包括微处理器、内存、调制解调器、MPEG2实时编码器和解码器,以及最重要的,大容量PC OEM磁盘驱动器。利用已获专利和正在申请专利的技术,TCD能够实时编码并将电视节目存储在磁盘驱动器上,同时并行地从磁盘驱动器检索节目并将其作为标准电视信号输出。因此,这款早期的数字视频录像机可以录制一个节目,同时回放另一个先前录制的节目。事实上,正在播放的节目甚至可能是正在录制的节目,只是时间上有所偏移。这提供了一些DVR更广为人知的功能——“暂停”直播电视和跳过电视广告的能力。
为了使TCD可靠且易于使用,我们需要为其提供有关电视节目和时间表的信息,使消费者能够浏览可用的节目并选择要保存以供以后观看的节目。此节目指南数据每天通过电话呼叫从我们的中央服务器自动下载,并提供长达14天的未来节目窗口。
在TCD设计的早期,我们意识到,要实现我们期望的简单性和易用性,需要一套复杂的、相互关联的功能。保持类似电视的观看体验意味着视频播放绝不能停止,并且播放必须始终完美,没有故障或音频/视频同步问题。节目的捕获和存储也必须同样完美,没有丢帧,并且调谐和定时准确。搜索电视节目指南或安排录制不得干扰这些或其他操作,例如每天与TiVo服务器的电话呼叫。这意味着需要使用具有实时和后台处理能力的抢占式多任务操作系统。
我们早期对Linux的关注在应用于TCD时被证明是有先见之明的。这是一个在多任务处理方面发展良好,同时优化硬件资源利用率的操作系统。此外,虚拟内存的可用性使软件的调试和验证变得容易得多,而分页使我们能够在16兆字节的有限内存占用中拥有大量功能。
出于成本原因,我们在第一款TCD中使用了IBM PowerPC 403GCX处理器。这款处理器的外部时钟频率为27兆赫兹(芯片上时钟频率翻倍),按当前标准来看是性能不足的,但按1990年代中期的嵌入式系统标准来看,它已经非常强大了。它提供了一个简单的内存管理单元(MMU),使我们能够运行Linux,并提供了大量的嵌入式系统调试支持。事实证明,这款处理器非常适合我们的需求。
然而,Linux也带来了一些问题。Linux的PowerPC端口是可用的,但它不成熟,并且不支持IBM 400系列微处理器。它还基于Linux内核的“开发”版本(奇数版本2.1),而不是Linux的“稳定”版本。但这已经足够了。经过几个月的努力,我们将Linux移植到了该处理器,并能够在实验室中启动第一个原型TCD。
还有更多的工作要做。我们需要修改内核以允许直接I/O(绕过文件系统缓冲区缓存),以便将音频和视频数据移入和移出用户空间。我们必须更改缓冲区缓存和分页系统,以与这些更改正确地互操作。我们需要添加广泛的内核操作日志记录,以帮助跟踪和消除实时性能和调度问题。这还不包括为增强功能和提高性能而进行的许多细微更改。
幸运的是,我们能够在基于Linux的PC上执行大部分应用程序开发。这是一个巨大的优势,因为完整的Linux开发环境是可用的,并且我们可以快速执行广泛的测试。1999年3月的最后一天,我们向零售商运送了第一批TiVo盒子,这是世界上首款商业化DVR。然后,我们发布了我们的Linux内核源代码以及我们的更改,其中许多更改已被纳入Linux内核的新版本中。
为了提供其所有功能,TiVo盒子需要TiVo服务,该服务运行在大量基于红帽Linux的PC服务器上。从概念上讲,该服务维护着一个庞大的信息数据库,这些信息旨在在TCD联系服务时下载到TCD。
这些信息由许多不同的元素组成
该服务还维护着每个已制造的TCD的记录,以及其相关的安全密钥。这允许该服务验证TCD并确定要提供的服务级别。
每天晚上,都会处理这个庞大的数据库,为全国每个邮政编码或活跃TCD群体的其他子集生成定制的数据包。这最大限度地减少了下载到每个TCD的数据量,这是一个理想的功能,因为通常TiVo支付数据的传输成本。此处理在基于Linux的服务器并行阵列上执行;结果是数以万计的定制数据包。
然后,将这些数据包复制到另一个称为分发服务器的基于Linux的服务器并行阵列上。它们的工作是处理来自TCD的连接(可以通过宽带连接或拨号调制解调器连接),以确定这些TCD是否提供服务,并为该TCD下载所有适当的信息。
在连接时,TCD还可以上传一个文件,其中包含关于观看内容的匿名观看信息,以及何时以及如何使用各种特技播放模式。这些数据被上传到一组运行Linux的回程服务器,在那里采取额外的步骤来保证数据的匿名性。例如,用于存储此数据的文件名是随机选择的,并且文件创建时间被清零。定期地,从随机选择的分发服务器子集中复制日志到一个单独服务器的单个目录中,在那里文件时间再次被清零。然后解析日志并将其聚合到观看信息数据库中7。
TiVo在许多不同的方面使用开源产品和技术,无论是在运营中还是在TiVo DVR本身中。
基于GPL的软件。 Linux操作系统是TiVo客户端设备和TiVo服务的基石。在TiVo服务中,我们使用标准的Linux发行版,通常来自红帽。
客户端软件发行版是TiVo构建的自定义配置。严格控制发行版的大小和内容非常重要,因为它需要适应磁盘空间和内存有限的系统。TiVo还需要确保所有软件都经过验证和确认。因此,我们从“裸”Linux 2.4内核开始,并在用户环境中仅填充操作所需的命令和实用程序。
我们还依赖GNU libc(glibc)和相关库来实现标准C库功能。我们使用自由软件基金会的Bourne Again Shell(bash shell)来执行客户端设备上的许多脚本功能。
公共领域软件。 这是指可用于任何用途且没有任何限制的软件。有许多公共领域软件包可用,其中最著名的是X窗口系统和BSD操作系统。此类软件包可能有一些许可限制;例如,BSD仅要求加利福尼亚大学伯克利分校被确认为软件的版权所有者。在TiVo,我们使用的主要公共领域工具是Tcl脚本语言。TiVo开发了Tcl的专有扩展,用于操作TCD上的数据库和媒体文件系统。
软件开发。 TiVo在基于红帽Linux的PC上执行TiVo服务和TiVo客户端设备的所有开发。使用基于GCC编译器套件和GNU make构建的交叉编译环境,开发人员可以为当前支持的任何微处理器类型(PowerPC、MIPS和x86)和客户端设备(Series 1、Series 2、DirecTV with TiVo等)构建软件。为TCD构建的软件随后可以下载到特定的客户端设备以进行测试。交互式调试通过工作站上的gdb和TCD上的远程gdb调试来支持。通常,TiVo应用程序是用C++编写的。
我们并行构建TiVo应用程序的两个不同版本:调试版本和发布版本。我们尝试使每个版本的源代码差异尽可能小,并依靠宏来打开或关闭嵌入式调试辅助工具。例如,我们在调试期间大量使用断言检查,并在发布版本中编译掉此类断言。由于应用程序的复杂性,我们还嵌入了一个广泛的内联日志记录工具,使开发人员能够执行详细的分析。
红帽Linux也用于构建和发布管理。使用基于Linux的PC阵列,TiVo在一天中随着新更改的进行,持续为每种客户端设备类型执行完整的软件构建。在撰写本文时,有七个不同的版本正在积极开发中,每个版本都为Series 2 TCD和基于Red Hat 7.x的PC构建了单独的调试版本和发布版本。这些版本的源代码树大小从65万行代码到近100万行代码不等,包括GPL和公共领域源代码。这些构建立即提供给开发人员,或在每日自动回归测试后作为常规软件包提供。我们使用GCC工具链作为所有软件的交叉编译环境,并充分利用其许多功能和增强功能。
所有正在积极开发的软件都使用商业Perforce版本和配置管理系统进行维护,这是一款跨平台的专有软件产品。尽管我们在六年前开始开发时使用了基于GPL的并发版本控制系统(CVS),但TiVo环境中源代码控制和配置管理的挑战很快就决定了使用更强大且外部支持的解决方案。实际的源代码树维护在基于红帽Linux的服务器上。
我们使用红帽软件包管理器(RPM)来打包软件构建,以便进行分发、下载和安装。Perl和Python在开发中被用作脚本和宏编程语言。Tcl在某些情况下被使用,Tk窗口包也被用于构建各种开发支持工具。
与大多数软件开发环境一样,许多程序员依赖于基于GPL的emacs文本编辑器,而另一大群人则依赖于“慈善软件”vim文本编辑器。
将开源与专有软件结合使用需要关注软件的组合和维护方式。一般来说,TiVo使用的所有开源软件,公共领域软件除外,都属于GNU公共库许可证。基于GPL的软件在单独的源代码目录中维护,COPYING文件在软件的根目录中突出显示。除了库之外,我们使用的开源软件都是实用程序的形式(例如,bash shell、Linux modutils软件包或syslogd),或者作为软件构建链的一部分(例如GNU make)。随着时间的推移,使用的开源软件代码行数与专有软件的比率有所下降。这是专有软件数量增加以及用更适合我们需求的专有软件替换开源软件的结果。
TiVo仅使用根据GNU Lesser General Public License(LGPL)发布的库。这允许将专有软件与这些库直接链接。例如,我们依赖glibc来实现标准C和C++库例程。
TiVo客户端设备必然是一个封闭系统。作为服务提供商,我们必须防止服务盗窃,因此TiVo非常重视设备的安全性以及抵御黑客攻击的能力。此外,我们以向零售商提供净利润但不对我们产生利润的价格出售TCD。我们的利润来自随着时间的推移为每个设备提供服务,而不是来自前期成本。
因此,重要的是设备不被重新用于其他用途,并且我们的软件不被其他DVR功能实现所取代。因此,硬件驱动程序被保留为专有源代码,并构建为可加载模块。我们对GPL的解释是允许这种使用;我们注意将这些模块与Linux内核源代码分开,以避免任何混淆。事实上,正如非常活跃的TiVo黑客社区所证明的那样,可以获取我们发布的源代码,构建Linux内核,并将其加载到某些版本的TCD上。内核将正常运行,加载专有模块并执行TiVo应用程序,从而保持在GPL精神之内。
这种使用方式有些争议。GPL和自由软件基金会的倡导者对GPL的解释更为严格,不允许使用专有模块。另一方面,林纳斯·托瓦兹(Linus Torvalds)表示,专有可加载模块是可以接受的。无论如何,专有模块的使用极大地促进了Linux和GNU软件的爆炸性增长,并且是Linux在嵌入式系统中使用的关键。如果这种能力不可用,专有操作系统肯定会继续成为大多数商业嵌入式应用程序的规范。
GPL软件应该是“自由的,如言论自由,而不是免费啤酒”(归因于GNU项目和FSF创始人理查德·斯托曼)。当这种言论不是对他人言论的修改时,也应认识到不说话的自由必须作为推论来保留。
根据GPL的条款,如果我们将基于GPL的源代码纳入商业产品,则此类产品的购买者必须有权访问纳入的GPL源代码。
TiVo通过在其网站(http://www.tivo.com/linux)上发布每个版本中使用的GPL和公共领域源代码,以及用于构建这些源代码的工具,来遵守这些条款。其目的是,任何感兴趣的方都能够使用这些源代码重新创建设备中包含的派生二进制版本。这些源代码中不包含任何专有软件。
在开发过程中,TiVo可能会修改这些源代码。这些修改包含在网站上提供的源代码中,同样根据GPL的规定。TiVo有时也会将其一些专有开发成果以GPL或公共领域源代码的形式提供,以造福开发人员社区。例如,TiVo发布了一个软件开发工具包,作为其家庭媒体选项(HMO)的一部分,HMO是TCD的软件应用程序,它支持跨家庭网络从个人计算机播放音乐或数字照片,允许在家中的TCD之间传输节目,并提供从远程Web浏览器安排节目录制的功能。该工具包记录了我们的网络协议,并为服务器应用程序提供了示例代码(请参阅http://www.tivo.com/developer)。
在TiVo,我们认为,将我们对这些源代码的修改和增强普遍提供给公众是我们对开源社区的回馈的一部分,并且是对开源为我们的产品带来的价值的认可。由于我们既不销售也不分发开发和TiVo服务本身中使用的软件,因此我们不发布底层的基于GPL或公共领域的源代码。
由于TiVo客户端设备的封闭性质,TiVo几乎没有必要或愿望去跟上设备中纳入的开源软件的新版本。事实上,一旦某个特定组件经过调试和验证,我们希望避免对该组件进行任何更改,这将需要重新验证其操作。实际上,许多正在使用的源代码都是最初包含在第一个TCD软件版本中的源代码。
这种理念有一些值得注意的例外。首先,Linux内核是一个快速发展的软件项目,性能增强、新功能和错误修复不断添加。大量的硬件驱动程序工作也在进行中,在TiVo,我们希望在适当的时候利用新硬件和更好的性能。这使得我们密切跟踪内核变得有价值。因此,虽然将在软件开发周期的早期选择、测试和冻结特定的内核版本,但来自TiVo的新软件版本通常会包含最新的内核更改。
其次,GCC 工具套件是 TiVo 软件开发环境的关键组成部分。 显然,在 使用 GCC 工具之前,验证和确认其运行非常重要,这是一项艰巨的任务。 这意味着我们仔细选择特定版本的工具套件来使用,并通过构建所有当前版本和正在开发中的版本以及随后对生成的二进制文件进行广泛的测试来验证它。 由于这项测试工作量巨大,我们会在相当长的时间内继续使用相同的工具。 因此,TiVo 自成立以来只迁移过一次新的 GCC 版本。 同样,我们非常依赖 glibc 系列库的运行,并且我们通常会在迁移到新的 GCC 工具的同时迁移到新的库。
自从 Richard Stallman 提出开源概念以来,开源的演变令人瞩目。 今天,许多开源项目被认为是高质量的成果,通常超越商业产品的质量,同时提供更高的性能和更多的功能。 这自然源于源代码的开放性,许多开发人员可以研究代码,查找和修复缺陷,并验证代码在生产使用中的安全性和正确运行。
开源对 TiVo 有益,并且在可预见的未来将继续如此。 仔细管理我们的源代码以遵守 GNU 通用公共许可证的条款,同时保护我们的专有开发成果,为获得这种好处付出的代价很小。
1. Unix 商标已注册并归 The Open Group 所有。
2. “伯克利 Unix 二十年:从 AT&T 拥有到自由再发行”,Kirk McKusick,http://www.oreilly.com/catalog/opensources/book/kirkmck.html。
3. 是的,我参加了第一次会议,代表 SGI。 当汉密尔顿小组前往纽约与 AT&T 会面,听取 AT&T 将如何与计算机行业的其余部分合作时,我也在场。 AT&T 在那次会议上对计算机制造商表现出的傲慢态度,确保了替代努力的产生。
4. 微处理器的“字节序”继续在计算机世界中造成巨大的鸿沟。 MIPS 微处理器架构同时支持小端和大端计算范式。 由于 DEC 和 Compaq 领导了 ACE 倡议,该小组的重点是小端范式。 这导致了反对力量 Apache 集团(想想“bigIndian”)的形成,该集团提倡基于 System V Unix 的大端替代方案。
5. “OSI 关于 SCO-vs.-IBM 投诉的立场文件”,Eric Raymond 和 Rob Landley,https://open-source.org.cn/sco-vs-ibm.html。
6. 我有时被问到为什么我们不使用基于 BSD 的操作系统。 BSD 许可证允许我们保留对源代码的任何修改的专有权。 然而,BSD 更侧重于服务器应用程序,而 Linux 周围的开发社区非常活跃且不断增长。 这意味着我们可以期待对新设备和功能的积极驱动程序支持,以及内核的持续改进。 基于 BSD 的操作系统已经成熟,并且开发周期要慢得多。 使用 Linux 的优势超过了任何专有机会的损失。
7. 关于此过程的完整描述可以在 TiVo 提交给联邦贸易委员会的白皮书中找到,该白皮书描述了 TiVo 的隐私管理流程:http://www.tivo.com/pdfs/ftc_letter.pdf。
JIM BARTON 是 TiVo Inc. 的联合创始人、首席技术官以及研发高级副总裁。 他负责所有产品开发,他的重点领域是 TiVo 服务背后的软件和数字视频流技术。 在共同创立 TiVo 之前,Barton 曾担任 Network Age Software 的总裁兼首席执行官,该公司是他创立的,旨在开发针对托管电子分发服务的软件产品。 他还在 SGI 担任过执行职位,在那里他致力于开发唯一投入运营的大型交互式电视系统。 他曾担任 Interactive Digital Solutions 的首席技术官,该公司是 Silicon Graphics 和 AT&T Network Systems 的合资企业,旨在开发交互式电视系统。 Barton 曾在 Hewlett-Packard 和贝尔实验室担任操作系统和网络技术以及产品开发职位。 他拥有科罗拉多大学博尔德分校的电气工程学士学位和计算机科学硕士学位。
最初发表于 Queue vol. 1, no. 5—
在 数字图书馆 中评论这篇文章
Amanda Casari, Julia Ferraioli, Juniper Lovato - 超越存储库
关于开源的大量现有研究选择研究软件存储库而不是生态系统。 开源存储库通常指的是版本控制系统中记录的工件,偶尔也包括围绕存储库本身的交互。 开源生态系统指的是存储库的集合、社区、它们的交互、激励机制、行为规范和文化。 开源的去中心化性质使得对生态系统进行整体分析成为一项艰巨的任务,社区和身份以有机的和不断发展的方式相交。 尽管存在这些复杂性,但对软件安全和供应链日益严格的审查使得在进行关于开源的研究时,采取基于生态系统的方法至关重要。
Guenever Aldrich, Danny Tsang, Jason McKenney - 为那些还不理解的项目经理提供三部分和谐
本文探讨了系统采购工具箱中的三个工具,这些工具可以协同工作以加快开发和采购速度,同时降低项目风险:OSS、开放标准和敏捷/Scrum 软件开发流程都是 DoD 采购项目管理工具箱的强大补充。
Jessie Frazelle - 开源固件
开源固件可以通过使固件的行为更可见并且不太可能造成危害,从而帮助将计算带到一个更安全的地方。 本文的目标是让读者感到有能力向可以帮助推动这一变革的供应商提出更多要求。
Marshall Kirk McKusick, George V. Neville-Neil - FreeBSD 5.2 中的线程调度
繁忙的系统每秒会做出数千个调度决策,因此做出调度决策的速度对于系统的整体性能至关重要。 本文——摘自即将出版的书籍《FreeBSD 操作系统设计与实现》——以开源 FreeBSD 系统为例,帮助我们理解线程调度。 最初的 FreeBSD 调度器是在 20 世纪 80 年代为大型单处理器系统设计的。 尽管它在今天的环境中仍然运行良好,但新的 ULE 调度器是专门为优化多处理器和多线程环境而设计的。 本文首先研究了最初的 FreeBSD 调度器,然后描述了新的 ULE 调度器。