This is a good article. Click here for more information.

ReactOS

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

ReactOS
ReactOS logo.svg
ReactOS-0-3-17.png
ReactOS 0.3.17 Desktop
Developer ReactOS Foundation
Written in C, C++[1][2]
Working state Alpha
Source model Open source
Initial release 1998; 26 years ago (1998)
Latest release 0.3.17 / November 5, 2014; 9 years ago (2014-11-05)
Latest preview 0.4 RC / December 12, 2015; 8 years ago (2015-12-12)
Marketing target Personal computing
Update method CD-ROM
Platforms IA-32, x86-64, ARM
Kernel type Hybrid (designed to be compatible with Windows NT and beyond)
Default user interface Graphical (ReactOS Explorer)
License GNU GPL, LGPL and BSD licenses
Official website reactos.org
ReactOS 0.3 running the Firefox web browser
ReactOS 0.31 desktop: left Start Menu and right ReactOS' own File explorer

ReactOS is an open-source operating system for x86/x64 PC intended to be binary-compatible with computer programs and device drivers made for Windows Server 2003.[3]

Development started in 1996, as Windows 95 clone project, which was in 1998 continued as ReactOS with the incremental addition of features of later Windows versions. ReactOS has been noted as a potential open-source drop-in replacement for Windows[4][5][6] and for its information on undocumented Windows APIs.[7] As stated on the official website, "The main goal of the ReactOS project is to provide an operating system which is binary compatible with Windows ... such that people accustomed to the familiar user interface of Windows would find using ReactOS straightforward. The ultimate goal of ReactOS is to allow you to remove Windows and install ReactOS without the end user noticing the change."[8] As of January 2015, ReactOS is considered alpha software, feature-incomplete but with many Windows applications already working (e.g. Adobe Reader 6.0, OpenOffice etc[9]),[10] and therefore recommended by the developers only for evaluation and testing purposes.[11][12]

ReactOS is primarily written in C, with some elements, such as ReactOS File Explorer, written in C++. The project partially implements Windows API functionality and has been ported to the ARM and AMD64 processor architectures.[13] ReactOS, as part of the FOSS ecosystem, re-uses and collaborates with many other FOSS projects,[14][15] most notably the Wine project which develops a Windows compatibility layer for Unix-like operating systems.

History

ReactOS project coordinator Aleksey Bragin (left) showing ReactOS to Viktor Alksnis
The Prime Minister of Russia Dmitry Medvedev (left) being given a demonstration of ReactOS

Early development

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 had not 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.[16] 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.[17] The name ReactOS was coined by Jeff Knox. 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.[5]

Ekush OS fork

In 2004, a copyright / license violation of ReactOS GPL'ed code (and other FOSS code) was found when someone distributed a ReactOS fork under the name Ekush OS.[18][19][20] The webpage went later offline.

Internal audit

A claim was made on January 17, 2006, by now former developer Hartmut Birr on the ReactOS developers mailing list (ros-dev) that ReactOS contained code derived from disassembling Microsoft Windows.[21] The code that Birr disputed involved the function BadStack in syscall.S.[22] as well as other unspecified items.[23] 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.[24]

On January 27, 2006, the developers responsible for maintaining the ReactOS code repository disabled access after a meeting was held to discuss the allegations. 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 now inactive developers from providing contributions[25] and formal high level cooperation between the two projects remains difficult to this date.[26] Contributions from several active ReactOS developers have been accepted post-audit, and low level cooperation for bug fixes still occurs.

In a statement on its website, ReactOS cited differing legal definitions of what constitutes clean-room reverse engineering as a cause for the conflict.[27] Some countries, including the United States, require that a reimplementation based on disassembled code must be written by someone other than the person having disassembled and examined the original code,[28][29] whereas other countries allow both tasks to be performed by the same 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.[26] 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 compliance with the project's own policies.[30] Much of the assembly code that was allegedly copied has also been replaced as a natural progression in ReactOS development, with developers having reimplemented the functionality in C for portability reasons. Also, the 2004 leaked Windows source code[31] was not seen as legal risk for ReactOS, as the trade secret was considered indefensible in court due to broad spread.[32]

Public demonstration

Demonstrations of the operating system have been given, mainly to Russian political figures. Viktor Alksnis met with project coordinator Aleksey Bragin, who gave a presentation and demonstration of the project, showing ReactOS running with Total Commander and Mozilla Firefox in 2007.[33] Dmitry Medvedev was also given a demonstration during a visit as President of Russia to a high school in Verhnerusskoe, Stavropol, attended by one of the development team members in 2011.[34]

On July 31, 2012, Vladimir Putin was also given a demonstration during his visit as President of Russia to Seliger Youth Forum, attended by Marat Karatov, one of the development team members.[35]

Funding campaigns

On May 1, 2012 a 30,000 euro funding campaign was started to finance additional development projects.[36][37] On the end of the year approximately 50% of the funding goal was achieved and it was decided to continue the funding campaign without deadlines.[38] The money went to ReactOS Deutschland e. V.. As the tax law in Germany for this form of a registered voluntary association (Eingetragener Verein) makes it problematic to pay developers directly,[39] indirect possibilities like Stipends were evaluated.

Thorium Core Cloud Desktop project

When ReactOS was awarded as Project of the Month on SourceForge on June 2013, a crowdfunding campaign on Kickstarter was announced in an interview with the project's coordinator, Aleksey Bragin.[40] On December 23, 2013 the announced project was revealed as a Kickstarter campaign with the goal of US$120,000 was started.[41][42] The Thorium Core Cloud Desktop dubbed Cloud computing service would use ReactOS as core and could allow the use of Windows compatible applications from mobile devices (like smartphones, tablets), workstations or any other connected device. On February 21, 2014, fundraising ended short of the target amount, with $48,965 of $120,000 raised, resulting in no transferred money.[43]

ReactOS Community Edition

In April 2014, the ReactOS project announced an Indiegogo campaign to launch ReactOS Community Edition, a version of ReactOS based on the upcoming 0.4 release. The flexible funding campaign had a goal of US$50,000 with additional stretch goals beyond that.[44] Development of ReactOS Community Edition would be community-centric, with ReactOS users voting and funding to decide which software and hardware drivers the project will aim to support.[45][46] On June 1, 2014, the flexible crowdfunding campaign on Indiegogo was finished with raising $25,141 for the development of the community edition,[47][48] and the voting process to support hardware and software was started shortly after.[49]

ReactOS Hackfest 2015

ReactOS printing for the first time

The ReactOS project organized a Hackfest from August 7 to 12, 2015, in the German city of Aachen.[50][51][52]

Release history

Development

ReactOS core development

ReactOS is primarily written in C, with some elements, such as ReactOS Explorer and the sound stack, written in C++. The project compiles using both MinGW and Microsoft Visual Studio, and contributes to the development of the build systems used through the submission of patches to its components.[63]

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.3 (Windows 8.1),[64] 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.[13]

The development progress is influenced by the size of the development team and the level of experience among them. As an estimate of the effort required to implement Windows 7, Microsoft employed 1,000 or so developers, organized into 25 teams, with each team averaging 40 developers.[65] As of September 2, 2011, in the ReactOS entry in Ohloh, the page followed through the "Very large, active development team" link lists 33 developers who have contributed over a 12-month period and a cumulative total of 104 present and former users who have contributed code to the project via Subversion since its inception.[66] 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.[67]

While ReactOS targets currently mainly the x86/AMD64 PC platform,[68] it has been also partially ported to the ARM architectures.[13] Support for the Xbox, a variant IA-32 architecture, was added through the use of an architecture-specific HAL,[67] although this, along with a port to PowerPC, are no longer actively maintained.[11]

Collaboration and reuse

While ReactOS has the aim to built a Windows-compatible kernel as open-source software, much of the surrounding required functionality to create a complete OS is already available in the greater open-source ecosystem. When available and possible, ReactOS therefore builts on and collaborates with already existing open-source projects.[14] Wayaround, projects like Wine,[15] Captive NTFS[69] or Longene re-use the open-source ReactOS code-base as well.[70]

Hardware driver stack

On the hardware driver side, for instance the NTFS-3G project provides a NTFS driver and UniATA provides Serial ATA drivers for ReactOS.[12][71] The project has also experimented with using the FullFAT library in its rewrite of its FAT Installable File System.[72] ReactOS makes use of the USB stack from Haiku both as a reference and as a foundation for its USB support.[73][74] Mesa 3D provides OpenGL rendering.[63][12]

Networking

ReactOS' network stack is built on the TCP portion of OSKit's port of the network stack in FreeBSD, along with an internally developed implementation for packet-oriented protocols like IP.[75] Later, lwIP was integrated into the ReactOS' network stack.[76] Windows network services like LSASS, SAM, NETLOGON, Print spooling are already available as open-source alternative by the Samba/Samba TNG project. A fork of rdesktop is used as an implementation of a client software for Microsoft's proprietary Remote Desktop Protocol.

Wine collaboration

A simplified architecture diagram of ReactOS, with Wine dependencies indicated with the Wine logo. White boxes denote third party binary software. Green boxes are "userland" components, red are kernel components.

The ReactOS and the Wine projects share the goal to run binary Windows software natively and can share therefore many dependencies and development.[15][77] ReactOS uses portions of the Wine project so that it can benefit from Wine's progress in implementing the Win32 API.[77] While Wine's NTDLL, USER32, KERNEL32, GDI32 and ADVAPI32 components cannot be used directly by ReactOS due to architectural differences, code snippets of them and other parts can be shared between both projects. The kernel is developed by ReactOS separately as Wine relies here on existing unixoid kernels.[63][67]

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

Other

The Tango Desktop Project initiative provides open-source design guidelines and ressources (as icons) for applications on desktop environments. FreeType is an open-source software development library, used to render text on to bitmaps and provides support for other font-related operations.[12] The KernelEx project is an Windows-API extension and compatibility layer project, which provides open-source implementations of some Windows-APIs.[79] Other contributing projects are MinGW, SYSLINUX, adns, ICU, GraphApp, Ext2, GNU FreeFont, DejaVu fonts, Liberation fonts.[80][81][82]

Reception

Various people have acknowledged ReactOS and the implications of having a viable open-source drop-in replacement for Windows.[5] A 2004 article and interview of the German weekly magazine Der Spiegel describes ReactOS as directed at Windows users who want to renounce use of proprietary commercial software without having to switch to Linux.[5] DistroWatch, a linux distribution monitoring website, lists also ReactOS and describes it as "a free and open-source operating system based on the best design principles found in the Windows NT architecture.".[83]

In his column for Free Software Magazine, David Sugar noted in 2006 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.[7] PC Magazine columnist John C. Dvorak remarked in 2008 that the Windows NT architecture had remained largely unchanged, making it an ideal candidate for cloning, and believed that ReactOS could be "a bigger threat than Linux to Microsoft's dominance".[6] In response to Dvorak's column, ZDNet technology journalist Dana Blankenhorn noted in 2008 that a lack of corporate sponsors and partners had rendered the project harmless to Microsoft.[84][85] Echoing this, Thom Holwerda of OSNews in 2009 categorized ReactOS under a family of hobby operating systems maintained only by small groups of developers working in their spare time, lacking the financial support of more mainstream operating systems and the legacy of formerly mainstream ones such as RISC OS.[86]

In October 2015, a Network World review of ReactOS v0.3.17 noted impressed "It's just like running Windows 2000" and praised the extension by an application package manager, a feature the original Windows is missing.[87]

Awards

The ReactOS Project won on the annual Seliger Youth Forum "The Best Presentation" award with 100,000 Russian rubles (≈US$2700) in 2011, attended by Alexander Rechitskiy, one of the development team members.[88]

ReactOS was a featured project on SourceForge for the week beginning February 27, 2012, and April 25, 2013[89] along with several others. It was Project of the Month on Sourceforge for June 2013.[90]

In 2015, ReactOS was named by the Russian Ministry of Communications as support-worthy "client operating system / Server Operating System" alternative,[91][92] for its potential in reducing Russia's dependency from proprietary software imports.[4][93]

See also

  • Binary code compatibility
  • FreeDOS, a MS-DOS clone.
  • Wine, compatibility layer which runs Microsoft Windows applications on Unix-like operating systems.
  • Longene, an hybrid operating system kernel intended to be binary-compatible with both the Microsoft Windows and Linux ecosystem.
  • NDISwrapper recreation of Windows NT kernel parts inside the Linux Kernel to allow the use of Windows drivers in Linux.
  • Haiku, an open-source re-creation of BeOS.
  • coLinux, allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine.

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. ReactOS Targets Windows 2003, Vista on OSNews posted by Thom Holwerda (March 2009)
  4. 4.0 4.1 Russland-erklaert-ReactOS-zu-favorisierter-Windows-Alternative on heise online by Louis-F. Stahl (June 23, 2015, in German)
  5. 5.0 5.1 5.2 5.3 Lua error in package.lua at line 80: module 'strict' not found.
  6. 6.0 6.1 Lua error in package.lua at line 80: module 'strict' not found.
  7. 7.0 7.1 Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. 10.0 10.1 Tests_for_0.4.0 on reactos.org (December 2015)
  11. 11.0 11.1 Lua error in package.lua at line 80: module 'strict' not found.
  12. 12.0 12.1 12.2 12.3 Lua error in package.lua at line 80: module 'strict' not found.
  13. 13.0 13.1 13.2 Lua error in package.lua at line 80: module 'strict' not found.
  14. 14.0 14.1 Lua error in package.lua at line 80: module 'strict' not found.
  15. 15.0 15.1 15.2 Lua error in package.lua at line 80: module 'strict' not found.
  16. Interview with Jason Filby from the ReactOS Project on OSNews by Eugenia Loli on October 16, 2001
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Ekush Emulator And its License Pains on OSNews by Eugenia Loli (November 10, 2004)
  19. Ekush OS - stolen source code/copyright violation (archived 2004)
  20. EKUSH The Next Generation Operating System on akshor.com (archived 2004)
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. 26.0 26.1 Lua error in package.lua at line 80: module 'strict' not found.
  27. Reset, Reboot, Restart, legal issues and the long road to 0.3 on reactos.org by Steven Edwards (January 27, 2006)
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Windows Code May Be Stolen on PC World by Joris Evers (February 2004)
  32. Reset, Reboot, Restart, legal issues and the long road to 0.3 "Now as for the issue of leaked source code, I want to try to put all fears to rest. We don't know what the legal ramifications are for someone downloading and having leaked code, as the party that maintains copyright ownership of that code might still try to claim Trade Secrecy on information contained in the sources in a court of law. It is our point of view that the source code leaks of Windows have been spread to a broad enough audience that it would be impossible to claim the product is still under Trade Secrecy." on reactos.org by Steven Edwards (January 27, 2006)
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. A personal appeal from ReactOS Project Coordinator Aleksey Bragin, accessed on April 15, 2013
  38. Spenderliste December 24, 2012, accessed on April 15, 2013 (in German)
  39. Lua error in package.lua at line 80: module 'strict' not found.
  40. Lua error in package.lua at line 80: module 'strict' not found.
  41. ReactOS Wants To Bring Open-Source Windows To The Cloud on Phoronix by Michael Larabel (January 22, 2014)
  42. Lua error in package.lua at line 80: module 'strict' not found.
  43. Lua error in package.lua at line 80: module 'strict' not found.
  44. Lua error in package.lua at line 80: module 'strict' not found.
  45. ReactOS Working On A Community Windows OS on Phoronix by Michael Larabel (April 19, 2014)
  46. Lua error in package.lua at line 80: module 'strict' not found.
  47. Lua error in package.lua at line 80: module 'strict' not found.
  48. reactos-community-edition on Indiegogo (June 1, 2014)
  49. ReactOS: Große Fortschritte und Stipendien für Entwickler beim freien Windows-Nachbau on heise.de by Louis-F. Stahl (02.10.2014, in German)
  50. Russland-erklaert-ReactOS-zu-favorisierter-Windows-Alternative on heise online by Louis-F. Stahl "Einen weiteren Schub in der Entwicklung erhofft sich die ReactOS-Community vom ersten ReactOS Hackfest, das vom 7. bis zum 12. August 2015 in Aachen stattfindet." (June 23, 2015, in German)
  51. Russland macht ReactOS zu bevorzugter Windows-Alternative on Der Standard "Von 7. bis 12. August lädt die Entwicklergemeinde in Deutschland zum ersten ReactOS-Hackfest, das in Aachen über die Bühne gehen wird." (24. June 2015, in German)
  52. ReactOS Hackfest 2015 from reactos.com (accessed 2015)
  53. Lua error in package.lua at line 80: module 'strict' not found.
  54. Lua error in package.lua at line 80: module 'strict' not found.
  55. Lua error in package.lua at line 80: module 'strict' not found.
  56. Lua error in package.lua at line 80: module 'strict' not found.
  57. Lua error in package.lua at line 80: module 'strict' not found.
  58. Lua error in package.lua at line 80: module 'strict' not found.
  59. Lua error in package.lua at line 80: module 'strict' not found.
  60. Lua error in package.lua at line 80: module 'strict' not found.
  61. Lua error in package.lua at line 80: module 'strict' not found.
  62. Lua error in package.lua at line 80: module 'strict' not found.
  63. 63.0 63.1 63.2 Lua error in package.lua at line 80: module 'strict' not found.
  64. Lua error in package.lua at line 80: module 'strict' not found.
  65. Lua error in package.lua at line 80: module 'strict' not found.
  66. Lua error in package.lua at line 80: module 'strict' not found.
  67. 67.0 67.1 67.2 Lua error in package.lua at line 80: module 'strict' not found.
  68. Lua error in package.lua at line 80: module 'strict' not found.
  69. Captive: NTFS Read/Write Filesystem Addon for Linux on OSNews by Eugenia Loli "They are using WINE and ReactOS code to emulate parts of Windows environment needed to make the driver work." (December 4, 2003)
  70. Linux unified kernel 0.2.4.1 "The LUK project does not develop the Windows and the Linux userland libraries. Those libraries are offered by the Wine (or Microsoft Windows/ReactOS) project and the Linux project."
  71. Lua error in package.lua at line 80: module 'strict' not found.
  72. Lua error in package.lua at line 80: module 'strict' not found.
  73. ReactOS gets USB stack with Haiku's help on OSNews by Thom Holwerda
  74. Lua error in package.lua at line 80: module 'strict' not found.
  75. Lua error in package.lua at line 80: module 'strict' not found.
  76. Lua error in package.lua at line 80: module 'strict' not found.
  77. 77.0 77.1 Lua error in package.lua at line 80: module 'strict' not found.
  78. Lua error in package.lua at line 80: module 'strict' not found.
  79. kernelex on sourceforge.net
  80. Lua error in package.lua at line 80: module 'strict' not found.
  81. Lua error in package.lua at line 80: module 'strict' not found.
  82. Lua error in package.lua at line 80: module 'strict' not found.
  83. reactos on distrowatch.com ReactOS is a free and open-source operating system based on the best design principles found in the Windows NT architecture. (accessed January 2016)
  84. Lua error in package.lua at line 80: module 'strict' not found.
  85. Lua error in package.lua at line 80: module 'strict' not found.
  86. Lua error in package.lua at line 80: module 'strict' not found.
  87. Lua error in package.lua at line 80: module 'strict' not found.
  88. Lua error in package.lua at line 80: module 'strict' not found.
  89. Lua error in package.lua at line 80: module 'strict' not found.
  90. Lua error in package.lua at line 80: module 'strict' not found.
  91. Minutes of the expert evaluation of projects on import substitution infrastructure software according to paragraph 4-8 of import substitution plan software, approved by order of the Ministry of Communications of Russia from April 1, 2015 №96 «On approval of import software" Russian Ministry of Communications "Direction "client operating system / Server Operating Systems" 1st place - the project "Corporate platform on the basis of domestic operating systems" [...] 2nd place - the project "Creation of the operating system open source based on ReactOS for PCs, laptops and other mobile devices," "Creating the operating system open source-based server ReactOS" (Fund "Reaktos" MSTU. AN Bauman, LLC "Parallelz Research" and others.)." (June 2, 2015, translated)
  92. ReactOS as a second OS in Russian government's software freedom effort on reactos.org (June 2015)
  93. Russland macht ReactOS zu bevorzugter Windows-Alternative on Der Standard (24. June 2015, in German)

External links

Official webpages
Reviews and interviews
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Detailed review of ReactOS (from 2006)
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.