Jump to content

ReactOS

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by LoneRifle (talk | contribs) at 15:06, 20 January 2010 (→‎Impact: edit for language). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

ReactOS
ReactOS 0.3.10's implementation of the Windows Start Menu
DeveloperReactOS Foundation
OS familyMicrosoft Windows-like
Working stateAlpha
Source modelFree and open source software
Initial release0.0.7 / July 20, 1998 (1998-07-20)
Latest release0.3.11 / December 16, 2009; 14 years ago (2009-12-16)
Latest preview(daily)
Repository
Update methodRe-Installation
Platformsx86
Kernel typeHybrid kernel
Default
user interface
Graphical User Interface
LicenseGNU GPL, LGPL and BSD licenses[1]
Official websitewww.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++. Efforts are underway to port it to the ARM and AMD64 processor architectures, and fully implement Windows API functionality. The latter is partially assisted by including parts from the Wine compatibility layer for Unix-like operating systems, but a lot of other functionality is implemented by the developers themselves. Currently, progress has been hampered by a lack of developers with the relevant skill-sets.

An extensive on-going audit is undertaken 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 in light of claims made 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 been found to have 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.

Etymology

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 Microsoft, their monopolistic position, and their reaction to it.[2]

Development

Early 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.

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, which the project holds to this day. The ReactOS project began development in February 1998 by creating the basis for a new NT kernel and basic drivers.[3]

Version history

ReactOS running AbiWord and ReactOS Explorer

ReactOS' 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.

Colour Meaning Colour Meaning
Red Old release; not supported Yellow Old release; still supported
Green Current release Blue Future release
Versions of ReactOS
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 Rewrite for Kernel
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 Intro to PSEH and Multipartition HDD Support in LiveCD
0.3.9 2009-04-26 32MB 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.[4][5]
0.3.11 2009-12-16 Rewrite of kdcom; Chinese/Korean fonts; Compatibility Updates; Sound system improvements
0.4.0 2010 UI effort: New explorer, second stage UI improvements, overall look and feel improvements


Current and future development

A simplified architecture diagram of ReactOS, with Wine dependencies indicated with the Wine logo.

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.[6]

ReactOS utilizes portions of the Wine project so that the ReactOS project can benefit from Wine's progress in implementing the Win32 API.[7] Certain components such as Wine's NTDLL, USER32, KERNEL32 and GDI32 cannot be used by ReactOS because of architectural differences.[6][8] 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.[8]

More recently, the experimental Arwinss branch has been created as an alternative to the existing Win32 API. Whereas ReactOS's old Win32 was closely modeled after that of Windows, Arwinss is a hybrid of the old Win32 architecture with that of 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. Overall, Arwinss aims to improve USER32 and GDI32 support.[9]

Development is taking place to complete networking, multimedia, plug-and-play hardware support, and to improve the GUI system. 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)[10], and to 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.

Work is 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. While 2D hardware-accelerated rendering is already supported in ReactX, other drawing functionality is currently being redirected to OpenGL as a stopgap solution. Efforts are also underway to facilitate the installation and running of Microsoft's DirectX runtime on ReactOS.[11]

Development is currently limited by a lack of people with relevant experience. While the ReactOS entry in Ohloh records 99 contributors both past and present[12], this pales in comparison to the 1000 or so developers who worked on Windows 7, organized into 25 teams, with each team averaging 40 developers.[13] 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.[8]

Architecture support

There are several ports of ReactOS:

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 through the use of an architecture-specific HAL[8], and efforts toward a ReactOS port on the PowerPC were also made in 2005.

Internal audit

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.[14] Contributors to its development were not affected by this action, and all access to the software development tools was restored shortly afterward. When approached by NewsForge, Microsoft declined to comment about the incident.[14]

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. 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.[14] 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.[15]

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.[16]. The code that Birr disputed involved the function BadStack in syscall.S[17] as well as other unspecified items.[18] 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.[19] Parallels can be drawn between this and the lawsuit brought up by Sony Computer Entertainment against Connectix over reverse engineering done in the course of developing Virtual Game Station, where Connectix successfully appealed the initial judgment, saying that direct disassembly and observation of proprietary code was necessary because there was no other way to determine its behavior, and thus counted as fair use.[20]

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.[21] In the meantime, since the initial lockout, the source code of ReactOS has remained available and open for inspection.

Impact

ReactOS project coordinator Aleksey Bragin (left) shows ReactOS functionality to Viktor Alksnis.

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.[22] 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.[23]

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".[24] 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.[25][26] 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 and the legacy of formerly mainstream ones such as RISC OS.[27]

  • As noted earlier, ReactOS shares some dependencies with Wine.
  • A more distant project at the architectural level is the Linux Unified Kernel which intends 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 kernel into the Linux equivalent 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 does not 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.

System requirements

  • x86-compatible processor, Pentium or later
  • 24 MB RAM[28]
  • IDE hard drive of at least 150 MB
  • FAT16/FAT32 Boot partition
  • 2 MB VGA graphics adapter
  • CD-ROM drive
  • Standard keyboard
  • PS/2 Compatible mouse or Microsoft Mouse-compatible serial mouse[29]

See also

References

  1. ^ "General Presentation". OS Revolution. Retrieved 2009-11-30.
  2. ^ a b Sixtus, Von Mario (2004-02-20). "ReactOS: Das Nicht-Windows [[:Template:De icon]]". Spiegel Online. Retrieved 2009-12-11. {{cite web}}: URL–wikilink conflict (help)
  3. ^ Loschwitz, Martin (March 2004), "Projects on the Move" (PDF), Linux Magazine, p. 87, retrieved 2009-11-18{{citation}}: CS1 maint: date and year (link)
  4. ^ "ReactOS 0.3.10". OS Revolution. Retrieved 2009-12-09.
  5. ^ Holwerda, Thom (2009-07-06). "ReactOS 0.3.10 Released". OSNews. Retrieved 2009-12-09.
  6. ^ a b Ionescu, Alex (2006-02-26). The ReactOS Project – An Open Source OS Platform for Learning (PDF) (Speech). University of Waterloo, Canada. Retrieved 2009-12-10. {{cite speech}}: External link in |author= and |location= (help)CS1 maint: location (link)
  7. ^ "Acknowledgements". Wine. Retrieved 2009-11-15.
  8. ^ a b c d C., Michele (19–21 June 2009). ReactOS is (not) Windows (PDF). Hackmeeting 2009. Milan. Retrieved 2009-12-09. {{cite conference}}: External link in |conferenceurl= (help); Unknown parameter |conferenceurl= ignored (|conference-url= suggested) (help)CS1 maint: date format (link)
  9. ^ Holwerda, Thom (2010-01-18). "ReactOS Proposes Radical New Win32 Subsystem". OSNews. Retrieved 2010-01-18.
  10. ^ "ReactOS Targets Windows 2003, Vista". OSNews. 2009-03-05.
  11. ^ a b c Holwerda, Thom (2009-01-17). "ReactOS: Looking Back Upon 2008". OS News. Retrieved 2009-12-10.
  12. ^ "ReactOS Contributors". Ohloh. Retrieved 2009-12-16.
  13. ^ Sinovsky, Steven (2008-08-18). "The Windows 7 Team". Engineering Windows 7, MSDN. Retrieved 2009-12-09.
  14. ^ a b c Feller, Stephen (2006-02-01). "ReactOS suspends development for source code review". Linux.com. Retrieved 2009-12-10.
  15. ^ Bragin, Aleksey (September 18, 2007). "Audit". ros-dev (Mailing list). Retrieved 2009-01-03. {{cite mailing list}}: Unknown parameter |mailinglist= ignored (|mailing-list= suggested) (help)
  16. ^ Birr, Hartmut (January 18, 2006). "Bye bye". ros-dev (Mailing list). Retrieved 2009-01-03. {{cite mailing list}}: Unknown parameter |mailinglist= ignored (|mailing-list= suggested) (help)
  17. ^ "BadStack in syscall.S". ReactOS. January 17, 2006. Retrieved 2009-11-16.
  18. ^ Birr, Hartmut (January 18, 2006). "Bye bye". ros-dev (Mailing list). Retrieved 2009-11-16. {{cite mailing list}}: Unknown parameter |mailinglist= ignored (|mailing-list= suggested) (help)
  19. ^ Ionescu, Alex (January 18, 2006). "Bye bye". ros-dev (Mailing list). Retrieved 2009-11-16. {{cite mailing list}}: Unknown parameter |mailinglist= ignored (|mailing-list= suggested) (help)
  20. ^ Sony Computer Entertainment, Inc. v. Connectix Corp., 203 F.3d 596 (9th Cir. 2000).
  21. ^ Betov (February 13, 2004). "Why ReactOS is dead as a target-OS for RosAsm". Retrieved 2009-03-03.
  22. ^ Sugar, David (2006-01-31). "A reaction to ReactOS". Free Software Magazine. Retrieved 2009-12-11. {{cite web}}: |author= has generic name (help); External link in |author= (help)CS1 maint: numeric names: authors list (link)
  23. ^ Alksnis, Viktor (2007-06-06). "Виктор Имантович Алкснис – Знакомство с проектом ReactOS [[:Template:Ru icon]]". Retrieved 2009-12-11. {{cite web}}: URL–wikilink conflict (help)
  24. ^ Dvorak, John C. (2008-04-04). "What A New OS Needs". PC Magazine. Retrieved 2009-12-11.
  25. ^ Blankenhorn, Dana (2008-05-13). "ReactOS no threat to Windows". ZDNet. Retrieved 2009-12-22. {{cite web}}: External link in |author= (help)
  26. ^ Blankenhorn, Dana (2008-05-13). "ReactOS needs a channel". ZDNet. Retrieved 2009-12-22. {{cite web}}: External link in |author= (help)
  27. ^ Holwerda, Thom (2009-12-20). "My OS Is Less Hobby Than Yours". OSNews. Retrieved 2009-12-22.
  28. ^ Kerner, Sean Michael (2009-04-27). "ReactOS 0.3.9 improves open source Windows clone". InternetNews. Retrieved 2009-12-09.
  29. ^ Mountjoy, Barbara (2008-04-17). "ReactOS: Bringing Power to the People". Firefox News. Retrieved 2009-12-09.