ReactOS
![]() | The topic of this article may not meet Wikipedia's general notability guideline. |
![]() | |
![]() ReactOS 0.3.9's implementation of the Windows Start Menu | |
Developer | ReactOS Foundation |
---|---|
Working state | Alpha |
Source model | Free software |
Initial release | July 20, 1998[1] | (0.0.7)
Latest release | 0.3.10 / July 5, 2009 |
Repository | |
Kernel type | Hybrid kernel |
Default user interface | Graphical User Interface |
License | Various free software licenses |
Official website | www.reactos.org |
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 claimed to be composed entirely of free software, by means of a complete clean room reverse engineering process, with an extensive on-going audit, being undertaken to protect against claims made by those outside the project.[2]
Although the project is in the alpha development stage as of 2009, many Windows programs already work well. While the ReactOS kernel has been written from scratch, the userland is partially 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.
Development
FreeWin95 to ReactOS
Around 1996 a group of free and 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 build. The project members, led by coordinator Jason Filby, got together 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, started by developing the kernel and basic drivers.
Version history
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Alksnis-Bragin.jpg/220px-Alksnis-Bragin.jpg)
ReactOS's many APIs and ABIs are ready for a higher level of development and a basic GUI is available. ReactOS features ReactOS Explorer (ROSExplorer), a basic shell similar to Windows Explorer.
Version 0.2
Alpha version 0.2.0 of ReactOS, released in March 2004, is able to run many Win32 applications, including Notepad (a basic text editor), Regedit (the Registry editor), cmd.exe (the command-line interpreter), and several other applications (such as AbiWord) and some older games (such as Quake and Quake II, and the Wine clone of Minesweeper).
Some games like Unreal Tournament and Deus Ex are confirmed to work, using software rendering. OpenGL runs with some minor problems, using the Nvidia driver or the software implementation Mesa 3D. The first Web server (Tiny Web Server)[3] and VNC client (UltraVNC) are reported to work, and OpenOffice.org version 1.x works partly.
Version 0.2.2, released on April 28, 2004, has basic bugfixes and feature improvements.
Version 0.2.5, released on January 5, 2005, has large improvements in networking and stability.
In version 0.2.8 some elements of TCP/IP networking work, as well as a larger number of applications. Sound and USB support is still being worked on (SB16 works partially, and USB OHCI and UHCI work is still being undertaken). The USB functionality is derived from the Cromwell project.
Plug and play work has also begun, as has the move to support the Windows Driver Model. In addition to the Lynx text-based browser, ReactOS can use DCOM components from Mozilla to browse web pages graphically.
ReactOS 0.2.8 can also detect whether it is running in a VMware environment and can install the SVGA driver from the VMware Tools ISO to provide a better level of GUI performance. CSRSS has also been totally rewritten, and a "written-from-scratch" implementation of Winsock 2 is scheduled to arrive very soon. Also present in the trunk are somewhat-working elements of ddraw, dplay, and dplayx.
Version 0.3
ReactOS 0.3.0 Release Candidate 1 was released on June 15, 2006. It is also an alpha build. Improved network (TCP/IP) and plug and play support are the headline improvements of this version. Version 0.3.0 Release Candidate 2 was released when the audit reached 94%. It was deemed appropriate to release another candidate version at this time because so many bug fixes had been made during the audit.
ReactOS 0.3.1, released on March 11, 2007, was the first release after the start of a massive kernel rewrite, which made many parts more compatible to NT 5.2. This release also features the addition of a Registry library, which greatly improved the Registry support. An easy tool for downloading popular free and Shareware applications also debuted in this release.
Version 0.3.2 had been skipped due to many complex blockers, which could not be fixed in the scheduled time frame.
The release of ReactOS 0.3.3 on September 12, 2007 brought more improvements in the kernel, bringing many areas closer to NT 5.2. It also brought stability increase in many core modules, especially win32k.
ReactOS 0.3.4, released on January 22, 2008, brought a rewrite of registry support, syncing of DLLs with the Wine project, improved plug and play support, improvements to user32, Win32k, many core user mode components, shell32, the Control Panel, and the addition of a remote desktop client.[4]
Version 0.3.5 was released on June 30, 2008, contains fixes for many old bugs, some having been present since 0.3 or even earlier and some being regressions introduced in further releases due to rewrites of certain components.[5]
Version 0.3.6, released on August 6, 2008, also contains bug fixes in the kernel and a RTL heap implementation. Note: Unlike stated in the news entry on the website this release does not contain the initial AMD64 support (currently being developed in a separate branch).[6]
Version 0.3.7 was released on November 4, 2008; it contains improved support for the x64 architecture and the start of a real MSVC compiler support. This version also includes many bug fixes and new stacks (like network).[7]
ReactOS 0.3.8 was released on February 4, 2009; improvements include bug fixes to kernel core services, multipartition HDD support by LiveCD, and introduction of a new Portable Structured Exception Handling mechanism.[8]
ReactOS 0.3.9 was released on April 26, 2009; it reduces the minimum memory requirement to 32Mb, implements a faster Hyperspace Mapping Interface and contains many bugfixes to the kernel mode portion of the GDI resulting in much improved drawing engine across all bit depths[9]
ReactOS 0.3.10 was released on July 5th, 2009; it has initial support for Serial ATA devices (with this, the 8 GB Limit on partitions has been lifted), improved USB Keyboard/Mouse support, a clone of MS Paint has been implemented, initial support for MSVC compilation, better cleanup of system resource usage, and increased support for network cards and improved stability in networks.[10]
Future Versions
Versions below are unreleased. Descriptions may change as information is released.
Version 0.3.11
Version 0.3.11 is expected to be a usability effort: flawless browsing in Firefox 3, no winetest crashes.[11]
Version 0.4
Version 0.4 is expected to have an improved interface and new Explorer.
Version 0.5
Version 0.5 is expected to be marked as beta rather than alpha. Developers say it may be stable enough for everyday use.
Current and future development
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/ReactOS_0.3_-_1.png/220px-ReactOS_0.3_-_1.png)
The ReactOS developers are currently working on support for USB. Development is also taking place to add networking, multimedia, plug-and-play hardware support, and improving the GUI system. Java and support for .NET (through Mono) is now supported, though compatibility through certain applications is not guaranteed.[12][13] 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.[14]
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.[15]
Architecture support
ReactOS developers are currently working on a number of ports of ReactOS:
- x86 (working)
- Xbox (regressed, but will be revived later)
- PowerPC (initial booting)[16]
- ARM (not working, in progress)[17]
- AMD64 (not working, in progress)[18]
As noted, ReactOS can also be run on software which emulates or virtualizes 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[update]. 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.
Internal audit
On January 17, 2006 a (now former) developer named Hartmut Birr claimed on the ReactOS Developers mailing list (ros-dev) that ReactOS contained code derived from disassembling Microsoft Windows.[19] As a result of this, 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 afterward.
Consequently, from March 2006 through December 2007, an internally conducted source code audit was carried out to ensure that only clean room reverse engineering was used.[20] All developers were also made to sign an agreement committing them to use only clean room reverse engineering.[21] In September 2007, with the audit nearing completion, the audit status was removed from the ReactOS homepage. Though the audit was completed, specific details were not made public as it was only an internal effort to ensure legally produced code.[22]
In spite of the internal audit's claims to have found no definitive proof, RosAsm's developer, Betov, claimed that the most suspect files were missing from the list of files selected for the audit.[23] In response to this, the ReactOS developers made a public statement where they "agree that the files, pointed by Betov, in the ReactOS sources [...] belong to Microsoft" but also declare that they "are in the opinion that using these materials is legal, and is not a problem."[24] The license covering the code, available here, is the standard EULA that comes with the Windows NT Device Driver Kit, which allows the user to "modify the sample source code ("Sample Code") to design, develop and test your Software Product, and reproduce and distribute the Sample Code with such modifications in source and object code forms".[25] It is unclear if such an agreement would be applicable to a 'clone'.[citation needed]
Concerns have also been raised about ReactOS more generally, because of differing definitions of 'clean-room' engineering. ReactOS could be potentially threatened by patents owing to the implementation of certain features (like support for the patented long file name kludge).
Despite all the concerns and as yet untested allegations, the source code of ReactOS has since the initial lockout remained available (and thus open for inspection).
Related projects
- ReactOS utilizes portions of the Wine project so that the ReactOS project can benefit from Wine's progress in implementing the Win32 API. Only NTDLL, USER32, KERNEL32, GDI32, and ADVAPI from the Wine project cannot be used by ReactOS because of architectural differences.[26] The other parts of the code can be shared between both projects.
- Other related projects are Samba/Samba TNG, which implement LSASS, SAM, NETLOGON, Print spooling and other Windows network services.
- A more distant project at the architectural level is Linux Unified Kernel which intend to be binary-compatible with application software and device drivers made for Microsoft Windows and Linux. This kernel imports all the key features of the Windows operating system kernel into the Linux kernel to support both Linux and Windows applications and device drivers.
- Ndiswrapper recreated a partial Windows NT kernel inside a Linux Kernel making it possible to execute modern Windows drivers inside the NT kernel box. NDISWrapper consists of a NTOSKRNL API, a basic WDM controller, and a set of Windows call wrappers such as Wireless/NDIS/USB/PnP to Linux APIs. NDISWrapper is not limited to execute only NDIS drivers, other WDM drivers can be used as long as the driver doesn't call a non implemented Windows API.
- Independently of but roughly simultaneously with the NDISwrapper project, Bill Paul of Wind River Systems developed a similar system, known as Project Evil or The NDISulator, for FreeBSD. It has since been ported to NetBSD, but not OpenBSD, due to the latter's anti-binary blob policy. The NDISulator lacks some of the functionality of NDISwrapper, such as USB support.
- NTFS-3G, NTFS driver for Linux, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku, and other operating systems.
Hardware requirements
minimum hardware requirements[27]
- 24MB[28] RAM (72 MB Debug)
- IDE harddisk
- FAT16/FAT32 primary boot partition
- VGA compatible video card (VESA BIOS version v2.0 and higher)
- Standard (PS/2) keyboard
- PS/2 compatible mouse or Microsoft Mouse compatible serial mouse.
See also
References
- ^ Versions - ReactOS
- ^ http://www.reactos.org/wiki/index.php/Audit
- ^ Tiny Web Server
- ^ Bragin, Aleksey (2008-01-22). "ReactOS 0.3.4 Released". ReactOS. Retrieved 2009-01-03.
- ^ Bragin, Aleksey (2008-06-30). "ReactOS 0.3.5 Released". ReactOS. Retrieved 2009-01-03.
- ^ Bragin, Aleksey (2008-08-06). "ReactOS 0.3.6 Released". Reactos. Retrieved 2009-01-03.
- ^ Bragin, Aleksey (2008-11-04). "ReactOS 0.3.7 Released". ReactOS. Retrieved 2009-01-03.
- ^ Bragin, Aleskey (2009-02-04). "ReactOS 0.3.8 Released, FOSDEM 2009". ReactOS. Retrieved 2009-02-06.
- ^ Murphy, Ged (2009-04-26). "ReactOS 0.3.9 Released". ReactOS. Retrieved 2009-04-26.
- ^ Bragin, Aleksey (2009-07-05). "ReactOS 0.3.10 Released". ReactOS. Retrieved 2009-07-06.
- ^ Roadmap - ReactOS
- ^ theuserbl (2009-04-28). "ReactOS 0.3.9 and Java". NA. Retrieved 2009-07-06.
- ^ Z98 (2009-05-16). "Newsletter #58". ReactOS. Retrieved 2009-07-06.
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ Bragin, Aleksey (2007-11-14). "ReactOS Status Update". ReactOS. Retrieved 2009-01-03.
- ^ Z98 (2007-11-19). "OpenGL and ReactX". ReactOS. Retrieved 2009-01-03.
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ "PowerPC". ReactOS Wiki. ReactOS. Retrieved 2009-01-03.
- ^ "ARM Port". ReactOS. Retrieved 2009-01-03.
- ^ "64bit Port". ReactOS. Retrieved 2008-08-06.
- ^ Birr, Hartmut (January 18 2006). "Bye bye". ros-dev (Mailing list). Reactos.org. Retrieved 2009-01-03.
{{cite mailing list}}
: Check date values in:|date=
(help); Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ "Audit". ReactOS Wiki. ReactOS. Retrieved 2009-01-03.
- ^ Edwards, Steven (2006-01-27). "Reset, Reboot, Restart, legal issues and the long road to 0.3". ReactOS. Retrieved 2009-01-03.
- ^ Bragin, Aleksey (September 18, 2007). "Audit". ros-dev (Mailing list). ReactOS. Retrieved 2009-01-03.
{{cite mailing list}}
: Unknown parameter|mailinglist=
ignored (|mailing-list=
suggested) (help) - ^ Betov (February 13, 2004). "Why ReactOS is dead as a target-OS for RosAsm ([[RosAsm]]'s developer point of view)". Retrieved 2009-03-03.
{{cite web}}
: URL–wikilink conflict (help) - ^ "Official Betov Allegations Clarification/Resolution Thread". ReactOS. August 13, 2007. Retrieved 2009-01-12.
{{cite web}}
: Unknown parameter|mailinglist=
ignored (help) - ^ "Window NT Device Driver Kit END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE". Microsoft. August 13, 2007. Retrieved 2009-01-12.
- ^ "Developer FAQ". ReactOS. Retrieved 2009-05-25.
- ^ "Installing ReactOS". ReactOS Wiki. ReactOS. Retrieved 2009-01-03.
- ^ "Newsletter 54". ReactOS. Retrieved 2009-07-08.
External links
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)