![]() |
|
---|---|
![]() ReactOS 0.3.10's implementation of the Windows Start Menu |
|
Company / developer | ReactOS Foundation |
Programmed in | C, C++ |
OS family | Microsoft Windows-like |
Working state | Alpha |
Source model | Free and open source software |
Initial release | 0.0.7 / July 20, 1998 |
Latest stable release | 0.3.11 / December 16, 2009 |
Latest unstable release | (daily) |
Marketing target | Personal computing |
Available language(s) | Multi-lingual |
Update method | Re-Installation |
Supported platforms | IA-32, x86-64 |
Kernel type | Hybrid |
Default user interface | Graphical (Windows Explorer) |
License | GNU GPL, LGPL and BSD licenses[1] |
Official website | www.reactos.org |
ReactOS (React Operating System) is an open source 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). A spin-off of a previous attempt to clone Windows 95, development started in early 1998, and has continued with the incremental addition of features already found in Windows.
ReactOS is primarily written in C, with some elements, such as ReactOS Explorer, written in C++. The project is ported to the ARM and AMD64 processor architectures, and partially implements Windows API functionality. The latter is assisted by including parts from the Wine compatibility layer for Unix-like operating systems, but other functionality is implemented by the developers themselves. However, progress has been hampered by a lack of developers with the relevant skill-sets.
An extensive code audit is in place to protect against legal problems, such that implementation of the Windows API is only done by means of a complete clean room reverse engineering process. This has been in place following claims made in 2006 by a former developer and a third party in separate incidents that the project has either contained disassembled assembly code from Windows, or files directly originating from Microsoft. Both allegations have had no adverse legal consequences to the project, and development continues to this day.
ReactOS has been noted for its information on undocumented Windows APIs and more generally as an open-source drop-in replacement for Windows. The project aim, as cited from itself, is to allow users of Windows to completely renounce use of proprietary commercial software without having to switch to a different operating system, such as Linux. However, a lack of corporate backers and dedicated developers have limited its efforts to realize this.
Contents |
The name ReactOS was coined by project founder Jason Filby, an Oracle developer from Durban, South Africa. While the term "OS" stood for operating system, the term "react" referred to the group's dissatisfaction with and reaction to Microsoft's monopolistic position.[2]
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.
While FreeWin95 had started out with high expectations, there still hadn't been any builds released to the public by the end of 1997. As a result, the project members, led by coordinator Jason Filby, joined together to revive the project. The revived project sought to duplicate the functionality of Windows NT. In creating the new project, a new name, ReactOS, was chosen. The project began development in February 1998 by creating the basis for a new NT kernel and basic drivers.[3]
One of the main writers of the NT kernel was David Welch, then from St Edmund Hall at the University of Oxford. David aimed at gaining independence from Microsoft tools by working in the field of Installable File System tools, Linux (especially on VFAT and NTFS drivers) and L4 Fiasco. He gradually became less active in the project starting from 2004.
The claim was made on January 17, 2006 by now former developer Hartmut Birr on the ReactOS Developers mailing list (ros-dev), stating that ReactOS contained code derived from disassembling Microsoft Windows.[4]. The code that Birr disputed involved the function BadStack in syscall.S[5] as well as other unspecified items.[6] Comparing this function to disassembled binaries from Windows XP, Birr argued that the BadStack function was simply copy-pasted from Windows XP, given that they were identical. Alex Ionescu, the author of the code, asserted that while the Windows XP binary in question was indeed disassembled and studied, the code was not merely copy-pasted, but reimplemented; the reason why the functions were identical, Ionescu claimed, was because there was only one possible way to implement the function.[7]
In a separate incident, RosAsm developer Betov claimed that the most suspect files were missing from the list of files selected for the audit. However, ReactOS asserts that the disputed files were sourced from Sanos.[8] In the meantime, since the initial lockout, the source code of ReactOS has remained available and open for inspection.
On January 27, 2006, ReactOS decided to temporarily suspend access to files of the operating system for non-developers, after a meeting to verify a claim that ReactOS had been tainted with copyrighted code from Microsoft. However, when approached by NewsForge, Microsoft declined to comment about the incident. Since ReactOS is a free and open source software development project, the claim triggered a negative reaction by the free software community; in particular, Wine barred several ReactOS developers from contributing to the Wine codebase, citing concerns over the origin of their contributions.[9]
In a statement on its website, ReactOS cited differing legal definitions of what constitutes clean-room reverse engineering as a cause for the conflict, as some countries, including the United States, require that reimplementation of disassembled code is written by someone other than the person having disassembled and examined the original code, whereas other countries allow both tasks to be performed by one individual. Consequently, ReactOS clarified that its Intellectual Property Policy Statement requirements on clean room reverse engineering conform to US law. An internal source code audit was conducted to ensure that only clean room reverse engineering was used, and all developers were made to sign an agreement committing them to comply with the project's policies on reverse engineering.[9] Contributors to its development were not affected by these events, and all access to the software development tools was restored shortly afterward. 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.[10]
Color | Meaning |
---|---|
Red | Release no longer supported |
Green | Current release |
Blue | Future release |
System Version | Release Date | Release Information |
---|---|---|
0.2.0 | 2004-01-25 | first release with working GUI |
0.2.2 0.2.5 |
2004-04-27 2005-01-02 |
bug fixes only |
0.2.8 | 2005-10-29 | VMWare detection, CSRSS rewrite |
0.3.0 | 2006-08-27 | first version to officially support networking |
0.3.1 | 2007-03-10 | program manager included, start of kernel rewrite |
0.3.2 | skipped | branch created but never released |
0.3.3 | 2007-09-12 | kernel and win32k improvements |
0.3.4 | 2008-01-22 | registry support rewrite, remote desktop client and Plug 'N' Play |
0.3.5 | 2008-06-30 | bug fixes only |
0.3.6 | 2008-08-06 | RTL support |
0.3.7 | 2008-11-04 | improved x86-64; MSVC, new stacks |
0.3.8 | 2009-02-04 | introduced PSEH and multipartition HDD support in LiveCD |
0.3.9 | 2009-04-26 | 24MB minimum RAM, faster hyperspace mapping, initial sound support |
0.3.10 | 2009-07-05 | initial SATA support, USB keyboard/mouse support, Paint clone, initial MSVC.[11][12] |
0.3.11 | 2009-12-16 | kdcom rewrite; Chinese/Korean fonts; compatibility updates; sound system improvements |
0.3.12 | TBA | [13] |
0.4.0 | TBA | [14] |
0.5.0 | TBA | [15] |
1.0.0 | TBA | [16] |
ReactOS is primarily written in C, with some elements, such as ReactOS Explorer, written in C++. The project relies on MinGW for compilation, and contributes to its development through the submission of patches to its components.[17]
The developers aim to make the kernel more compatible with Windows NT version 5.2 (Windows Server 2003), the usermode APIs with Windows NT 6 (Windows Vista)[18], and to add support for more applications and hardware. DirectX support is undertaken through ReactX, an in-house implementation. 2D hardware-accelerated rendering is done natively, while other drawing functionality is redirected to OpenGL as a stopgap solution.[19]
Development is limited by a lack of people with relevant experience. As of 24 March 2010[update], in the ReactOS entry in Ohloh, the page followed through the "Very large, active development team" link lists 37 developers who have contributed over a 12-month period and a cumulative total of 97 present and former users who have contributed code to the project via Subversion since its inception.[20] By contrast, there are 1000 or so developers who worked on Windows 7 alone, organized into 25 teams, with each team averaging 40 developers.[21] In addition, in his presentation at Hackmeeting 2009 in Milan, ReactOS developer Michele C. noted that most of the developers learn about Windows architecture while working on ReactOS and have no prior knowledge.[22]
ReactOS makes use of code from other projects where possible, so that developers can avoid duplicating readily available functionality and focus on binary compatibility with Windows.
ReactOS uses portions of the Wine project so that it can benefit from Wine's progress in implementing the Win32 API.[23] Wine's NTDLL, USER32, KERNEL32, GDI32 and ADVAPI components cannot be used by ReactOS due to architectural differences, but the other parts of the code can be shared between both projects. Components that are not available from Wine, such as the kernel, are developed separately.[17][22]
Separately, the experimental Arwinss branch was created as an alternative means to improve USER32 and GDI32 support through an alternative implementation of the Win32 API. Whereas ReactOS's original Win32 subsystem was closely modeled after its equivalent in Windows, Arwinss combines the architecture of that subsystem with the corresponding implementation in Wine. To this end, Arwinss uses Wine's GDI32 and USER32 libraries with few changes to take fuller advantage of Wine's existing software compatibility. Arwinss also allows the user to optionally use a remote X server instead of a local display.[24]
In a brief interview with Network Performance Daily, Art Yerkes, then a developer working for Secret Level, mentioned that he imported the TCP portion of OSKit's port of the network stack in FreeBSD as part of an effort by him to clean up and improve networking functionality. Other parts of the ReactOS network stack, such as implementations for packet-oriented protocols like IP, remain internally developed.[25]
FreeType is used for the rendering of fonts in the GUI, while Mesa 3D provides OpenGL rendering.[17] Serial ATA drivers are provided by UniATA. Since the last update to the UniATA driver was on 10 September 2008[26], UniATA is currently maintained by the ReactOS developers themselves. The project has also experimented with using the FullFAT library in its rewrite of its FAT Installable File System.[27]
There are several ports of ReactOS:
Windows NT 4.0 was ported to architectures other than IA-32 such as MIPS, Alpha AXP, and PowerPC, and NT derivatives have been treated similarly, with Windows XP ported to AMD64, and Windows Server 2003 to AMD64 and Itanium. In view of this, ReactOS developers have partially ported ReactOS to the AMD64 and ARM architectures.[19] Support for the Xbox, a variant IA-32 architecture, was added through the use of an architecture-specific HAL[22], although this, along with a port to PowerPC, are no longer actively maintained.[28]
As of 15 March 2010[update], the ReactOS development team considers the operating system as alpha-quality software, and not suitable for daily use. The kernel is incomplete, and only a few Windows applications can be used without problems. However, the operating system is considered quite stable, and has a very short installation and boot time.[28]
Various people have acknowledged ReactOS and the implications of having a viable open-source drop-in replacement for Windows.
In his column for Free Software Magazine, David Sugar noted that ReactOS would allow the use of applications depending on older versions of Windows whose APIs have been deprecated. He also recognized its potential to expand the total deployed base of free software, and as a resource for developers wanting to know undocumented Windows APIs in the course of writing portable applications.[29] Viktor Alksnis has also met with current project coordinator Aleksey Bragin, who gave a presentation and demonstration of the project, showing ReactOS running with Total Commander and Mozilla Firefox.[30]
PC Magazine columnist John C. Dvorak remarked that the Windows NT architecture has remained largely the same to this day, making it an ideal candidate for cloning, and believes that ReactOS could be "a bigger threat than Linux to Microsoft's dominance".[31] Indeed, Aleksey Bragin has mentioned in a comment to German weekly magazine Der Spiegel that ReactOS is directed at Windows users who want to renounce use of proprietary commercial software without having to switch to Linux.[2]
However, ReactOS is seen to have challenges. In response to Dvorak's column, ZDNet technology journalist Dana Blankenhorn has noted that a lack of corporate sponsors and partners has currently rendered the project harmless to Microsoft.[32][33] Echoing this, Thom Holwerda of OSNews categorized ReactOS under a family of hobby operating systems that are maintained only by small groups of developers working in their spare time, and lack the financial support of more mainstream operating systems as well as the legacy of formerly mainstream ones such as RISC OS.[34]
|
|