ReactOS

ReactOS是一个开发与Windows NT和Windows 2000应用程序和硬件驱动程序兼容的开源操作系统的项目。

ReactOS 主要是由C語言編寫。部分元件則由C++編寫，例如ReactOS 文件瀏覽器。

ReactOS 的许可协议主要为GNU通用公共许可证，也有少量代码以GNU寬通用公共許可証、BSD许可证之类的开源许可证发行。

為確保操作系统沒有任何一部份是看過泄漏出來的微軟 Windows 源碼的人所寫，或者逆向工程的過程達不到净室设计標準，一個全盤的源碼審查由 ReactOS 主要開發者下令展開。此審查目前已經結束。

该项目从发起至今已有 27 年，但由于种种原因，目前仍然处于 alpha 状态。

 发展历程 
 启动開發 
大约在1996年時，一群开源软件开发者启动了一个名为FreeWin95的项目，旨在实现一个Windows 95的克隆操作系统。这个项目当时只停留在关于系统实现的讨论上。

虽然对于 FreeWin95 项目期待很高，但直到 1997 年末，项目还没有公开发布任何版本，于是项目协调员Jason Filby 联合大家重振该项目并起了一个新名称 “ReactOS”（另有说法认为FreeWin95中的“Windows95”已经过时，所以起了一个新的名称），并计划重新实现 Windows NT。1998 年 2 月 ReactOS 项目正式启动，开始开发系统内核和基本的驱动程序。

 代码审查 
为了避免版权起诉，ReactOS 必须明确地完全区分并且不衍生于 Windows，这是一个需要非常谨慎工作的目标。2006年1月17日，Hartmut Birr 在 ReactOS 开发者邮件列表中指出 ReactOS 包含有反编译的 Windows 源码。因此开发者暂时禁止非开发者进入系统。鉴于 ReactOS 是开放源码软件，此举引起开放源码社群的不满。ReactOS 的贡献者没受当时的举动影响。
不久后所有软件开发工程都能自由进入了。由于 Birr 的指摘未能证实，开发者决定审查源码。
可能“受污染”的源码会被封锁，直到那些源码经审查后确定无问题。

大部分的源码已解封，维护和开发都可继续进行，而审查亦同时进行。

2008年，源码已经全部解封。审查也已经全部结束。维护和开发得以正常继续。

 参与 Google Summer of Code 
从 2006 年开始，ReactOS 项目参与了几次 Google Summer of Code。例如，在GSoC 2011 中， ReactOS 指导了一个将 lwIP 集成到网络堆栈中的学生项目。迄今为止，ReactOS曾在 GSoC 参与过五次：2006年，2011年，2016 年，2017年 和 2018 年。2019 年也将参与。

 公开演示 
俄罗斯的政治人物 Viktor Alksnis 会见了项目协调员 Aleksey Bragin，Aleksey Bragin介绍了该项目并演示了该项目，演示中显示 ReactOS 在 2007 年已经可以运行当时的 Total Commander 和 Mozilla Firefox。
它还吸引了时任俄罗斯总统梅德韦杰夫（Dmitry Medvedev）的关注。 梅德韦杰夫访问了斯塔夫罗波尔地区的一所高中，巧合的是 ReactOS 开发者 Marat Karatov 正是该学校的高中生，他借此机会向总统介绍了开源 Windows 系统，并请求总统资助 100 万欧元。梅德韦杰夫称对 ReactOS 很感兴趣，表示会考虑资助事宜。

 ReactOS 社区版 
2014年4月，ReactOS 项目宣布推出 iegogo活动，推出基于 0.4版本的 ReactOS Community Edition。筹资活动的目标是50,000美元，除此之外还有额外的伸展目标。ReactOS Community Edition 的开发将以社区为中心，ReactOS用户投票和资金决定项目旨在支持哪些软件和硬件驱动程序。2014年 6 月 1 日，关于Indiegogo的灵活众筹活动结束时筹集了25,141美元用于社区版的开发，并且不久后启动了支持硬件和软件的投票过程。 

 ReactOS Hackfest 2015 
ReactOS 项目于2015年8月7日至12日在德国亚琛市举办了一场Hackfest。Hackfest 圆满结束，因为它为 ReactOS 增加了许多功能。

 系统开发 
 核心开发 
ReactOS 主要用 C语言 进行编写，另外包含一些用 C++ 编写的元素，如 ReactOS Explorer 和声音栈。该项目使用 MinGW 和 Visual Studio 进行编译。开发人员的目标是使内核和用户模式 API 与 Windows NT 5.2（Windows Server 2003）兼容，并增加对更多应用程序和硬件的支持，并计划在开发日趋成熟时针对更新版本的 Windows。DirectX 支持是通过内部实施 ReactX 进行的。2D 硬件加速渲染是本机完成的，而其他绘图功能则重定向到 OpenGL 作为权宜之计解决方案。 

开发进度受开发团队规模及其经验水平的影响，以 Windows 7 開發所需工作量的估计，微软雇佣了大约 1,000 名开发人员，组成了 25 个团队，每个团队平均有 40 名开发人员。但截至 2011 年 9 月 2 日，在 Ohloh 的 ReactOS 網頁上列出「非常大且活躍的開發者團隊」包含在 12 個月內貢獻程式碼的 33 位開發者、及從 ReactOS 項目開始後於 Apache Subversion 上貢獻的 104 位用戶。ReactOS 开发人员 Michele C. 在米兰举办的 Hackmeeting 2009 上的演讲中指出，大多数开发人员在使用 ReactOS 时都了解 Windows 体系结构，并且没有任何先驗知識。 

ReactOS 目前主要针对 x86 / AMD64 架構平台，移植到 ARM 架構的努力則「正在進行中」，雖然他因沒什麼有效產出而被放棄維護了。對 Xbox（x86 體系的變體架構）則經由使用特定架構的 HAL 導入；雖然如此 PowerPC 架構的支線則不再積極维護。 

 硬件驱动程序堆栈 
在硬件驱动程序方面，例如UniATA项目为ReactOS 提供串行ATA驱动程序。该项目还尝试使用FullFAT库重写其FAT可 安装文件系统。ReactOS利用 Haiku 的 USB 堆栈作为参考，并作为其 USB 支持的基础。

 网络 
ReactOS的网络堆栈构建在 FreeBSD 中 OSKit 网络堆栈端口的TCP部分，以及内部开发的面向数据包协议（如IP）的实现。后来，lwIP被集成到ReactOS的网络堆栈中。Samba / Samba TNG 项目已经提供了LSASS，SAM，NETLOGON 和打印假脱机等 Windows 网络服务作为开源替代方案。

 与 Wine 项目合作 
ReactOS 和 Wine 项目共享本机运行二进制 Windows 软件的目标，因此可以共享许多依赖项和开发。 ReactOS 使用 Wine 项目的一部分，以便它可以从 Wine 在实现 Win32 API方面的进展中受益。虽然由于体系结构的不同，Wine 的 NTDLL，USER32，KERNEL32，GDI32和 ADVAPI32 组件不能由 ReactOS 直接使用，但代码片段和其他部分可以在两个项目之间共享。不过内核由 ReactOS 单独开发，因为 Wine 依赖于现有的类 Unix 内核。。

此外，ReactOS另外有一支實驗性的Arwinss團隊，透過另一種方式去構建Win32 API，使USER32及GDI32的支援可以做得更好。ReactOS原來的Win32子系統完全以Windows的等同為藍本，但Arwinss則透過合併原來ReactOS的Win32子系統及Wine的Win32子系統的架構，以好好利用Wine的系統兼容性。這樣，Arwinss就可以讓用戶透過一個遙距的X server作顯示，而無需硬性規定必須要用硬件上的顯示屏。

 版本紀錄 
 系统版本  发布日期  发布信息 0.2.0 2004-01-25  第一个运行GUI的发布版本 0.2.1 2004-03-03  漏洞修复 0.2.2 2004-04-27 0.2.3 2004-06-26 0.2.4 2004-09-13 0.2.5 2005-01-02 0.2.6 2005-04-09   0.2.7 2005-08-21 0.2.8 2005-10-29  检测VMWare，重写CSRSS 0.2.9 2005-12-22  漏洞修复 0.3.0 2006-08-27  第一个支持网络的官方版本 0.3.1 2007-03-10  包含了程序管理器，开始重写内核 0.3.2 跳过  建立了这个分支但从没有发布 0.3.3 2007-09-12  内核和win32k改进 0.3.4 2008-01-22  重写支持了注册表、远程桌面以及即插即用 0.3.5 2008-06-30  漏洞修复 0.3.6 2008-08-06  支持RTL 0.3.7 2008-11-04  改善x86-64; MSVC, 新栈 0.3.8 2009-02-04  在LiveCD中引入了PSEH和多分区HDD模式支持 0.3.9 2009-04-26  24MB的最小RAM，加快了hyperspace(超级空间)映射，开始支持音效 0.3.10 2009-07-05  开始支持SATA，USB键盘/鼠标支持，画图的复制，开始支持MSVC. 0.3.11 2009-12-16  重写kdcom；中文/韩文字体; 兼容性更新；声音系统改良 0.3.12 2010-10-20  重写自陷处理程序；重写定时器和消息处理，支持NMI；支持SxS；部分支持EMS 0.3.13 2011-03-22  重写堆管理器；改善了对SATA的支持，修复了图形界面的问题 0.3.14 2012-02-07  預設啟用ACPI，WiFi支援（包含未加密的與WEP），主題支援，新的TCP/IP驅動程式，MSVC相容性改進，支援Scatter/GatherDMA操作，shell32重寫 0.3.15 2013-05-30 对于鼠标，键盘和存储设备的USB支持、工作階段管理重寫、跟隨著較新UniATA驅動程式的AHCI支援、ReactOS記憶體管理模組已經取代了幾乎所有其他的記憶體管理功能、使用WinDbg對ReactOS組件進行除錯的初步支援、基於從AutoHotkey應用程式測試套件處所得的結果進行了改進、對數個附帶的驅動程式以驅動程式驗證器執行後的結果進行了錯誤修復 0.3.16 2014-02-06 重写CSRSS，主题支持改善，RTL8139的网卡驱动程序, 让ReactOS的支持较新版本的QEMU的开箱即用 0.3.17 2014-11-05 引入了 NTVDM，改善字体，漏洞修复 0.4.0 2016-02-16  对USB更好的支持，完全实现了新的资源管理器，改善了网络以及用户友好的wifi设置，更好的音效支持 0.4.8 2018-04-17  新增特性：气球通知，通知托盘，命令自动补全，新的NTFS驱动程序，故障转储报告以及对NT6+软件的实验性支持 0.4.9 2018-07-23  再次实现自我托管功能。 0.4.10 2018-11-06  支持从 Btrfs 启动。 0.4.11 2019-03-04  電源管理的驅動程式。支援對已安裝的 ReactOS 的更新。改善 SATA 支援。 0.4.12 2019-09-23 核心的改進、window-snapping feature、字型改進、Intel e1000 網路驅動程式、使用者模式 DLL、新主題。 0.4.13 2020-04-09 新的 USB 堆疊，優化 FreeLoader 中 FAT 驅動程式，新軟件：Accessibility Utility Manager。

含义：
 颜色 含义 红 停止支持的版本 绿 当前版本 蓝 未来版本 灰 跳过的版本

 影响与评价 
下面一些关于 ReactOS 项目的批评提出几条为什么他们不相信 ReactOS 会成为一个有价值的项目的原因。其中，有人指出把与 Windows NT 4.0 兼容作为 ReactOS 的发布目标是一个局限，因为 NT 4.0 评价不佳而且它已经过时了。

作为回复，有人提出虽然目前是把与 Windows NT 4.0 兼容作为目标，但是，Windows 后来基于 NT 架构的系统都与 NT 4.0 在系统层次上高度相似（例如：Windows 2000, Windows XP, Windows Server 2003）。因此，想要与后续的 Windows 版本兼容，只要 NT 4.0 的目标完成，剩下都简单了。
以此为由，该批评的回复者说把 NT 4.0 的兼容作为里程碑并不是一个局限，而是未来开发的基础。

其它人则批评认为我们已经有好几个基于 Unix（Linux 及不同版本的 BSD）的操作系统, 与其再创建一个新的, 不如集中精力改善旧的，努力做好 Wine(“Wine Is Not an Emulator”)，让现有的 WINDOWS 应用程序在其上运行得更好。但是，ReactOS 开发者及其他拥护者辩解说，UNIX 类操作系统不一定是唯一的最好的操作系统类型。NT 的设计含有很多概念是 Unix 工作方式的改进，而且一个在更低层次更似 Windows 的操作系统（即是设计成与 Windows 相似，而非执行某某应用程序，尝试把另一个操作系统变成 Windows）将更有机会成功达到更广阔地兼容现有的 Windows 应用程序和（特别是）硬件驱动程序。

 未来目标 
 对NTFS文件系统的原生支持，尤其是在安装和启动ReactOS的时候
 对使用FAT32文件系统格式化大于32 GiB的分区的原生支持
 对使用NTFS文件系统格式化分区的原生支持
 对使用exFAT文件系统格式化分区的原生支持
 对分区映射方案GUID磁碟分割表的原生支持，尤其是当使用UEFI固件在PC上安装和启动ReactOS时
 对固态硬盘的原生支持
 基于先进格式化对硬盘的原生支持，尤其是4Kn

 对触屏的原生支持
 对USB 3.0的原生支持
 对Thunderbolt的原生支持

 硬件需求 
x86或x86-64的兼容处理器， 奔腾或更高版本
64 MB RAM（推荐256 MB）
IDE / SATA硬盘驱动器，主分区至少为350 MB
FAT16 / FAT32主引导分区
2 MB VGA图形适配器（VESA BIOS版本2.0或更高版本）
CD - ROM 光驱
标准键盘
USB鼠标，PS / 2兼容鼠标或Microsoft鼠标兼容型串行鼠标

值得留意的是，ReactOS亦可在能模擬上述硬件的軟件內運作，比如Virtual PC、VMware、Bochs或QEMU。

眼見Windows NT 4.0可在i386以外的MIPS、Alpha AXP和PowerPC架構運行，而NT衍生的作業系統如Windows XP和Windows Server 2003又已被移植到不同的硬體架構上（例如x86-64、IA-32及IA-64），ReactOS開發者亦開始注意可移植性。譬如對IA-32架構變種Xbox平台的支援，已加入0.2.5發佈版，而直到2006年上半年，PowerPC port和Xen port的工程仍在努力。

 参见 
 Windows NT
 Wine
 模拟器

 參考資料 

 外部链接 
 ReactOS主页
 ReactOS Wiki
 Interview with Steven Edwards of ReactOS and WINE (WineHQ)
 Wine Development HQ

Category:自由作業系統
Category:用C編程的自由軟體
Category:用C++編程的自由軟體
Category:LiveCD
Category:未來軟體
Category:視窗系統