ReactOS is a computer operating system intended to be binary-compatible with application software and device drivers made for Microsoft Windows NT versions 5.x and up (Windows 2000 and its successors). It is composed entirely of free software, by means of a complete clean room reverse engineering process.
Although the project is in the alpha development stage as of 2008, many Windows programs already work well. While the ReactOS kernel has been written from scratch, the userland is mostly based on the Wine compatibility layer for Unix-like operating systems.
ReactOS is primarily written in the C programming language, with some elements, such as ReactOS Explorer, written in C++. Various components of ReactOS are licensed under the GNU General Public License, the GNU Lesser General Public License, and the BSD License.
Around 1996, a group of free/open source software developers started a project called FreeWin95, to implement a clone of Windows 95. The project stalled in discussions of the design of the system.
At the end of 1997, the project had yet to release any software. The project members, led by coordinator Jason Filby, called to revive the project. The project’s target was changed to Windows NT and the project’s name was changed to ReactOS. The ReactOS project began in February 1998, with developing the kernel and basic drivers.
Current and future development
The ReactOS developers are currently working on support for USB. For this, the Cromwell version of the Linux implementation is being ported. Development is also taking place to add networking, multimedia, plug-and-play hardware support, and improving the GUI system. Java and .NET support (through Mono) has also been stubbed. After a multi-user environment is developed, Terminal Service and Remote desktop will be developed; for this XRDP, Virtual Network Computing (VNC), and rdesktop will be used. Provisions for DOS, OS/2, and POSIX subsystems have also been made, similarly to the Windows NT subsystems.
The developers aim to make the kernel more compatible with Windows NT versions 5 and 6, and add support for more applications. Improved USB, networking, and other hardware support may also be available, while support for file sharing services with SMB and NTFS file system support may be added. Most of these changes are already underway, while more advanced features will take longer to develop.
Work is also being done to improve 3D gaming support and complete OpenGL support, and progress is being made in developing ReactX, the project’s open-source equivalent of DirectX.
On 17 January 2006, Hartmut Birr alleged on the ReactOS Developers mailing list (ros-dev) that ReactOS contained code derived from disassembling Microsoft Windows. As a result of the allegations, the project’s developers decided to temporarily suspend access to files of the operating system for non-developers while the contributors were contacted to ensure clean reverse engineering. Since ReactOS is a free/open-source software development project, this action caused a negative reaction by the free software community. Contributors to its development were not affected by this action, and all access to the software development tools was restored shortly afterwards. Though the accusation was unproven, it resulted in controversy and mistrust. Consequently, from March 2006 through December 2007, an internally conducted source code audit was conducted to ensure that only clean room reverse engineering was used.All developers were also made to sign an agreement ensuring only clean room reverse engineering was used. In September 2007, with the audit nearing completion, the audit status was removed from the ReactOS homepage. Though the audit has completed, specific details were not made public as it was only an internal effort to ensure legally produced code.
ReactOS works with the Wine project so that the ReactOS project can benefit from Wine’s progress in implementing the Win32 API. These efforts mainly concern Wine’s DLLs, most of which can be shared between ReactOS and Wine. Both projects work on cross-compatibility issues, so that the remaining few DLLs can be used in ReactOS.
Another related project is Samba TNG, which implements dozens of services, such as LSASS, SAM, NETLOGON, and SPOOLSS, that are key to the success and functionally correct interoperability of the ReactOS project. Samba‘s architectural design and strategic goals make it a difficult prospect to consider integrating into ReactOS, whereas Samba TNG’s multi-layered and modular approach make it far easier to consider porting each service to ReactOS.
The minimum hardware requirements for ReactOS to run are:
- x86-compatible processor (Pentium or later)
- 32 MB RAM
- IDE hard disk of at least 150 MB
- FAT16/FAT32 boot partition
- 2 MB VGA graphics adapter (4 MB recommended)
- CD-ROM drive
- Standard keyboard
- PS/2 compatible mouse or Microsoft Mouse-compatible serial mouse
ReactOS developers are currently working on a number of ports of ReactOS:
- x86 (working)
- Xbox (regressed, but will be revived later)
- PowerPC (initial booting)
- ARM (not working, in progress)
As noted, ReactOS can also be run on software which emulates the above hardware, such as VMware, VirtualBox and QEMU (support for Microsoft Virtual PC is currently unavailable, but may be revived in the future).
As Windows NT 4.0 ran on MIPS, Alpha AXP, and PowerPC architectures in addition to the i386 architecture, and NT-derived operating systems such as Windows XP and Windows Server 2003 have been ported to several architectures (i.e. AMD64, IA-32, and IA-64), ReactOS developers have also taken initial steps in view of portability. For example, support for a variant IA-32 architecture, the Xbox platform, was added to the 0.2.5 release, and efforts toward a ReactOS port on the PowerPC and the Xen architecture are also underway as of 2005. Also currently they are working on porting ReactOS for ARM platform with the hope for a pocketPC-type ReactOS which at this point can fit better than a full featured operating system.