ReactOS 是一个开发与 Windows NT 和 Windows 2000 应用程序、硬件驱动程序兼容的开源操作系统项目。本项目目前虽然只是处于内部测试(alpha)开发状态,但到2005年1月其中一些子项目已经完成了目标。
ReactOS主要是由C语言编写。部分元件则由C++编写,例如ReactOS文件浏览器。
ReactOS的各部份在GNU通用公共许可证、GNU宽通用公共许可证、及/或BSD License下发布。
为确保操作系统没有任何一部份是看过泄漏出来的微软 Windows 源码的人所写,或者逆向工程的过程达不到 Clean room design 标准,一个全盘的源码审查由 ReactOS 主要开发者下令展开。此审查现正与 ReactOS 的开发同步进行中。
历史
大约在 1996年时,一群开源软件开发者启动了一个名为 FreeWin95 的项目,旨在实现一个 Windows 95 的克隆 (信息学)操作系统。这个项目当时只停留在关于系统实现的讨论上。
到了 1997年末,项目依旧没有进展。开发成员呼吁重新开始这个项目,而实现的目标也改为 Windows NT 系统,同时项目名称命名为 ReactOS(react 反抗)。1998年二月 ReactOS 项目正式启动,开始开发系统内核和基本的驱动程序。
ReactOS 源码的争议
2006年1月17日,Hartmut Birr 在 ReactOS 开发者邮件论坛 ros-dev 指出 ReactOS 包含由反编译 Windows 的源码[1]。因此开发者暂时禁止非开发者进入系统。鉴于 ReactOS 是开放源码软件,此举引起开放源码社群的不满。ReactOS 的贡献者没受当时的举动影响。
不久后所有软件开发工程都能自由进入了。由于 Birr 的指摘未能证实,开发者决定审查源码。
可能“受污染”的源码会被封锁,直到那些源码经审查后确定无问题[2]。现时大部分的源码已解封,维护和开发都可继续进行,而审查亦同时进行。
功能概述
到了 2005年,ReactOS 内核已经十分稳定,大多数给上层程序开发使用的API均制作完成,并且拥有了一个基本的GUI窗口界面。ReactOS 已经具有一个与 Windows 浏览器类似的 ReactOS Explorer 作为系统操作界面。
ReactOS 0.2 版可以运行相当多数的 Win32 应用程序,并拥有自己的 Notepad(记事本,基本的文本编辑器)、Regedit(系统注册表编辑器),Cmd(命令行提示符)和几个其他的大型应用(比如 AbiWord 文字编辑器)以及一些游戏(Quake 和 Quake II,Wine 的扫雷克隆)。
0.2.5 版主要工作在于声卡、网卡的驱动支持。Lynx文本网页浏览器抓取网页的屏幕图展示了,不过这个功能尚待进一步改进。这个版本更加入了Ext2文件系统和 GRUB boot loader 的支援,让 ReactOS 与 Linux分区 共存。
自0.2.6版起,Dillo、mIRC 和网页浏览器Mozilla Firefox的DCOM组件 可于ReactOS内运行。部份游戏如 Unreal Tournament 和 Deus Ex 则已知能以软件渲染的方式运作。使用 nVidia-Driver 或者 Mesa 3D 的软模式,OpenGL 的运行只剩下一些小问题。第一个网络服务器Tiny Web Server和 The UltraVNC Client宣布运行成功。从右图可见,OpenOffice(1.x版)也有部份可以执行了。
及至版本0.2.8,TCP/IP的部份元素开始运作,还有更多的应用程序例如 Notepad、AbiWord、OpenOffice、Deus Ex 和 Unreal Tournament。声音及USB支持尚在制作中(SB16半工作、USB OHCI 和 UHCI 则仍须劳力) USB功能“借”自 Cromwell。Plug and Play的开发工作、与及WDM的支持亦已展开。除了字符网页浏览器Lynx,ReactOS 更可以以 Mozilla 的 DCOM组件以图像方式浏览网页。
ReactOS 0.2.8 能侦测自己是否在 VMWare 中运行,继而到 VMWare Tools ISO 安装SVGA驱动以提供更佳的GUI表现。CSRSS 经已完全重写,一个“重头写起”的 Ws2_32 也预计即将完工。在Trunk里面有些运作上还可以的ddraw,dplay和dplayx元素。
及至2006年3月8日,ReactOS 的开发者开始了对所有使之与 Microsoft Windows 兼容的代码的自我审查。此过程是为了响应程序员对逆向工程的指责,验证确保 ReactOS 源代码没有违反美国版权法。
2006年6月15日,ReactOS 0.3.0发表了Candidate 1。网络功能(TCP/IP)和即插即用支持的改善为这个版本的重点。审查到达94%之时,Candidate 2发表,将审查期间发现的众多bug修正。
2006年8月28日,ReactOS 0.3.0脱离Release Candidate阶段,正式发表予公众。
直至2006年9月20日,审查过程已完成95.7%。而至2006年12月12日,审查过程已完成96.4%。
相关项目
ReactOS一直与WINE紧密合作,让ReactOS随着WINE在Win32 API项目的发展而发展。Wine的DLL因其大多可以在ReactOS和Wine之间共同使用而被受关注。为此双方致力于兼容问题,务求令余下的少量 DLL 也能为 ReactOS 所用。
另一个相关项目是 Samba TNG。它实现了一系列的服务,例如LSASS、SAM、NETlogoN和SPOOLSS,这些是ReactOS项目通向成功与通用性(functionally correct interoperability)的关键。虽然 Samba TNG的多层结构和单元式法令它很易将不同服务移植到ReactOS ,但 Samba 的文档设计与战略目标,使得是否向ReactOS中集成该项功能的决定成为一个难题。
未来目标
ReactOS 的路线图显示 发布0.3.0 将会包含全面的TCP/IP网络支援。开发者正在进行对USB的支援,并为此把Linux的Cromwell版做法转了过来。另一个工作中顶目是 www.reactos.org 主页。
ReactOS的开发者(指:程式设计师)正在强化GUI图像化操作接口系统,并加增networking网络功能、multimedia多媒体功能和plug-and-play随插即用的硬件性支援。Java及.NET的执行支援(借由Mono专案技术)也有所顾及。此外ReactOS也有预留对DOS、OS/2及POSIX等子系统的支援,使ReactOS能尽可能相似、逼近Windows NT子系统。
到了2004年10月,目标在1.0版上实现Windows NT 4.0工作站版的子集,此称为“ReactOS Workstation”,其中包括TCP/IP网络、客户端与伺服端的CIFS、 OpenGL、DirectX等的Windows装置驱动程式支援。
现有分支
现时ReactOS的开发者的工作项目有:
这些改变都不包括在主要的ReactOS Trunk内。
批评
一些关于ReactOS项目的批评提出几条为什么他们不相信ReactOS会成为一个有价值的项目的原因。其中,有人指出把与Windows NT 4.0兼容作为ReactOS release目标是一个局限,因为NT 4.0评价不佳而且它已经过时了(第一版发布于1996年)
作为回复,有人提出虽然目前是把与Windows NT 4.0兼容作为目标,但是,Windows后来基于NT构架的系统都与NT 4.0在系统层次上高度相似(例如:Windows 2000,Windows XP,Windows Server 2003)。因此,想要与后续的Windows版本兼容,只要NT4.0的目标完成,剩下都简单了。
以此为由,该批评的回复者说把NT4.0的兼容作为里程碑并不是一个局限,而是未来开发的基础。
其它人则批评认为我们已经有好几个基于Unix(Linux及不同版本的BSD)的操作系统,与其再创建一个新的,不如集中精力改善旧的,努力做好WINE,让现有的 WINDOWS 应用程序在其上运行得更好。但是,ReactOS开发者及其他拥护者辩解说,UNIX类操作系统不一定是唯一的最好的操作系统类型。NT 的设计含有很多概念是 Unix 工作方式的改进,而且一个在更低层次更似 Windows 的操作系统(即是设计成与 Windows 相似,而非执行某某应用程式,尝试把另一个操作系统变成 Windows)将更有机会成功达到更广阔地兼容现有的 Windows 应用程式和(特别是)硬件驱动程式。
另外,ReactOS现时推出的版本仍有很多问题。它们的安装光碟不论在真实的机器上或Virtual PC上的虚拟机器都有问题,而不能使安装完成。安装程序在安装在一个全新的硬盘上时,亦会出现错误。
硬件需求
值得留意的是,ReactOS 亦可在能模拟上述硬件的软件内运作,比如 Virtual PC、VMware、Bochs 或 QEMU。
眼见 Windows NT 4.0 可在 i386 以外的 @L_502_130@、Alpha AXP 和 PowerPC 架构运行,而NT衍生的操作系统如Windows XP 和 Windows Server 2003 又已被ported到不同的硬件架构上(例如x86-64、IA-32及IA-64),ReactOS开发者亦开始注意可移植性。譬如对IA-32架构变种Xbox平台的支援,已加入0.2.5发布版,而直到2006年上半年,PowerPC port 和 Xen port 的工程仍在努力。