ReactOS facts for kids
ReactOS 0.4.14 desktop
|
|
Company / developer | Community contributors The ReactOS developers |
---|---|
Programmed in | C, C++ |
OS family | Windows NT-like |
Working state | Alpha |
Source model | Open-source |
Initial release | (partial) 1998 |
Latest unstable release | 0.4.14 / 16 December 2021 |
Marketing target | Personal computing |
Update method | CD-ROM ISO image, QEMU image, VirtualBox image, VMware image, or source code |
Supported platforms | IA-32, x86-64 |
Kernel type | Hybrid (designed to be compatible with Windows NT family) |
Influenced by | Microsoft Windows |
Default user interface | Graphical (ReactOS Explorer) |
License | GPL-2.0-or-later |
ReactOS is a free and open-source operating system for i586/amd64 personal computers intended to be binary-compatible with computer programs and device drivers developed for Windows Server 2003 and later versions of Microsoft Windows. ReactOS has been noted as a potential open-source drop-in replacement for Windows and for its information on undocumented Windows APIs.
ReactOS has been in development since 1996. As of April 2024[update], it is still considered feature-incomplete alpha software, and is therefore recommended by the developers only for evaluation and testing purposes. However, many Windows applications are working, such as Adobe Reader 9.3, GIMP 2.6, and LibreOffice 5.4.
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 AMD64 processor architecture. ReactOS, as part of the FOSS ecosystem, re-uses and collaborates with many other FOSS projects, most notably the Wine project, which presents a Windows compatibility layer for Unix-like operating systems.
Contents
History
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 on 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 then 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. The name ReactOS was coined during an IRC chat. 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.
In 2002, the ReactOS Foundation was established in Moscow with Maxim Osowski and Aleksey Bragin as executive officers and Vladimir Bragin, Saveliy Tretiakov and Alexey Ivanov on the board of directors. In 2015, the foundation was liquidated.
Internal audit
In order to avoid copyright prosecution, ReactOS had to be expressly completely distinct and non-derivative from Windows, a goal that needed very careful work. A claim was made on 17 January 2006 by developer Hartmut Birr on the ReactOS developers mailing list (ros-dev) that ReactOS contained code derived from disassembling Microsoft Windows. The code that Birr disputed involved the function BadStack in syscall.S, as well as other unspecified items. 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.
On 27 January 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 on the incident. Since ReactOS is a free and open-source software development project, the claim triggered a negative reaction from the free software community; in particular, Wine barred several inactive developers from providing contributions and formal high level cooperation between the two projects remained difficult as of 2006[update].
In a statement on its website, ReactOS cited differing legal definitions of what constitutes clean-room reverse engineering as a cause for the conflict. To avoid potential litigation, companies sometimes enact a policy where reimplementation based on disassembled code must be written by someone other than the person having disassembled and examined the original code. ReactOS clarified its Intellectual Property Policy Statement requirements on clean room reverse engineering to avoid potential infringement of United States 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. 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.
Also, the 2004 leaked Windows source code was not seen as legal risk for ReactOS, as the trade secret was considered indefensible in court due to broad spread.
Axel Rietschin, who is a kernel engineer at Microsoft, claimed that he recognized some specific bits in the ReactOS kernel that are unlikely to result from a clean room reimplementation. He suggests that the project took source code from the Windows Research Kernel, which was licensed to universities and has been leaked multiple times. Internal data structures and variable names have the exact same name in both ReactOS and the research kernel.
Google Summer of Code participation
Starting in 2006, the ReactOS project participated in several Google Summers of Code. For example, in the GSoC 2011, ReactOS mentored a student project which integrated lwIP into the network stack.
Lobbying for support in Russia
Between 2007 and 2015, Russian ReactOS contributors representing the ReactOS Foundation made efforts at lobbying the Russian federal government. As of April 2019[update], these efforts have not yielded government support for ReactOS, and the Russia-based ReactOS Foundation has been dissolved since November 2015.
- In 2007, then State Duma member and chairman of Russian Center of Free Technologies, 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 2011, a demonstration was given to then president Dmitry Medvedev during a visit to a high school in Verhnerusskoe, Stavropol, attended by one of the development team members.
- On 31 July 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.
- On 1 April 2015, Bragin attended an expert meeting of the Russian Ministry of Communications on reducing Russia's dependency from proprietary software imports. Its minutes name the "creation of an open source operating system based on ReactOS for PCs, laptops and other mobile devices", as well as the "creation of an open source operating system for servers based on ReactOS", placing it second among three named proposals.
Funding campaigns
On 1 May 2012, a €30,000 funding campaign was started to finance additional development projects. At the end of the year, approximately 50% of the funding goal was achieved and it was decided to continue the funding campaign without deadlines. 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; 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. On 23 December 2013 the announced project was revealed as a Kickstarter campaign with the goal of US$120,000 was started. 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 21 February 2014, fundraising ended short of the target amount, with $48,965 of $120,000 raised, resulting in no transferred money.
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 0.4 release. The flexible funding campaign had a goal of $50,000 with additional stretch goals beyond that. 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. On 1 June 2014, the flexible crowdfunding campaign on Indiegogo ended, raising $25,141 for the development of the community edition, and the voting process to support hardware and software was started shortly thereafter.
ReactOS Hackfest
The ReactOS project organized a hackfest from 7 to 12 August 2015, in the German city of Aachen. The Hackfest resulted in many features being added to ReactOS.
The second hackfest was organized by the ReactOS project from 14 to 18 August 2017, in the German city of Cologne.
The third and fourth hackfests were organized by the ReactOS project from 16 to 21 August 2018 and from 15 to 20 August 2019 in Berlin respectively.
Release history
System version | Release date | Release information | ||
---|---|---|---|---|
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 and 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 multi-partition HDD support in live CD | ||
0.3.9 | 2009-04-26 | 24 MB 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. | ||
0.3.11 | 2009-12-16 | Kdcom rewrite; Chinese/Korean fonts; compatibility updates; sound system improvements | ||
0.3.12 | 2010-10-20 | Trap handler rewrite; timer and message handling rewrite; NMI support; SxS support; partial EMS support | ||
0.3.13 | 2011-03-22 | Heap manager rewrite, improved SATA support, fixed graphics issues | ||
0.3.14 | 2012-02-07 | ACPI enabled by default, WiFi support (unencrypted and WEP), theme support, new TCP/IP driver (LwIP), MSVC compatibility, Scatter/Gather DMA operations supported, shell32 rewrite | ||
0.3.15 | 2013-05-30 | USB support for mice, keyboard, and storage devices; rewritten session management; AHCI support with updated UniATA driver; alternate ReactOS Memory Management Module has taken over all memory management responsibilities except for sections; preliminary support for debugging ReactOS components using WinDbg; improvements based on results from the AutoHotkey application functionality test suite; Bugfixes based on running Driver Verifier on several bundled drivers | ||
0.3.16 | 2014-02-06 | CSRSS rewrite; theme support improved; network card driver for the RTL8139, allowing ReactOS to support newer versions of QEMU out of the box | ||
0.3.17 | 2014-11-05 | Inclusion of an NTVDM; font improvements; bug fixes | ||
0.4.0 | 2016-02-16 | Improved USB support, new file explorer shell and theming, improved VirtualBox and Virtual PC support, ext2 read/write support, NTFS read support and improved networking support | ||
0.4.1 | 2016-05-17 | Improved Activation Context, Btrfs support, improved Shell, USB bug fixes, support for Virtual Machine Shared Folders | ||
0.4.2 | 2016-08-16 | Improved Btrfs and extended file system support, ReiserFS and UFS/FFS, introduced .NET Framework 2.0 and 4.0 support, Shell fixes and improvements | ||
0.4.3 | 2016-11-16 | New Winsock library, initial sections support, usual bug fixes | ||
0.4.4 | 2017-02-16 | Initial print stack support, minor font fixes, usual improvements and bug fixes | ||
0.4.5 | 2017-05-18 | Improved rendering of fonts and font metrics, major fixes in kernel and drivers, Microsoft Office 2010 tested as functioning | ||
0.4.6 | 2017-09-01 | Several fixes for dual-boot issues, improved theming support, NFS driver added, several kernel and filesystem fixes | ||
0.4.7 | 2017-12-06 | Improved version of the applications manager RAPPS, implementation of the "Quick-Launch" toolbar in the explorer; various bug fixes in the filesystem drivers, improvements in the RDBSS/RXCE and NFS support. | ||
0.4.8 | 2018-04-14 | Balloon notifications, notification tray, shell autocompletion, a new NTFS driver, crash dump reporting and experimental support for NT6+ software. | ||
0.4.9 | 2018-07-23 | ReactOS is (again) self-hosting. | ||
0.4.10 | 2018-11-06 | Supports BTRFS booting. | ||
0.4.11 | 2019-03-04 | Drivers for battery management (its icon is located in the taskbar, in the bottom right of the screen, next to the clock). Support for updating an existing ReactOS installation. Improved SATA support. | ||
0.4.12 | 2019-09-23 | Kernel improvements, window-snapping feature, font improvements, Intel e1000 NIC driver, user-mode DLLs, new themes. | ||
0.4.13 | 2020-04-09 | New USB stack, FAT driver from FreeLoader optimized, new software introduced: Accessibility Utility Manager. | ||
0.4.14 | 2021-12-16 | "Send To" feature and Shell improvements, NEC PC-9800 boot support, ICMP improvements, Kernel improvements, NetKVM VirtIO bringup, miscellaneous changes & improvements | ||
0.4.15 | N/A | Support for x64 and UEFI, combines live CD and boot CD into a single GUI setup | ||
0.5.0 | N/A | Support for reading and writing the NTFS filesystem, support for the Windows Driver Model (including video card support), improvements to the printing subsystem and the DirectX Core. | ||
Legend:
Old version
Latest version
Latest preview version
Future release
|
Features
Programs
- ReactOS Explorer (File Explorer)
- ReactOS Applications Manager
- Accessories
- Calculator
- Command Prompt
- Notepad
- Paint
- WordPad
- Magnifier
- On-Screen Keyboard
- Remote Desktop Connection
- Multimedia Player (Media Player)
- Sound Recorder
- Volume Control
- Character Map
- Clipboard Viewer
- FontSub
- Keyboard Layout Switcher
- ReactX Diagnostic (DxDiag)
- Registry Editor
- SnapShot
- Task Manager
- Administrative Tools
- Device Manager
- Event Viewer
- Service Manager (Windows service)
- System Configuration (MSConfig)
- Games
- Solitaire (Microsoft Solitaire)
- Spider Solitaire (Microsoft Spider Solitaire)
- WineMine (Microsoft Minesweeper)
Commands
The following is a non-exhaustive list of commands that are supported by the ReactOS Command Prompt.
- ?
- alias
- assoc
- at
- attrib
- beep
- cacls
- call
- cat
- cd
- chdir
- chcp
- choice
- clip
- cls
- color
- comp
- copy
- ctty
- date
- dbgprint
- del
- delete
- delay
- dir
- dirs
- doskey
- echo
- echos
- echoerr
- echoserr
- endlocal
- eventcreate
- erase
- exit
- find
- for
- free
- fsutil
- goto
- help
- history
- hostname
- if
- label
- memory
- md
- mkdir
- mklink
- mode
- more
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rmdir
- reg
- rem
- ren
- rename
- replace
- sc
- schtasks
- screen
- set
- setlocal
- shift
- shutdown
- sort
- start
- taskkill
- tee
- time
- timeout
- timer
- title
- touch
- tree
- type
- uptime
- ver
- verify
- vol
- whoami
- xcopy
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.
The developers aim to make the kernel and usermode application programming interface (API) more compatible with Windows NT version 5.2 (Windows Server 2003) and to add support for more applications and hardware, with plans to target newer versions of Windows as development matures. DirectX support is undertaken through ReactX, an in-house implementation. 2D and OpenGL 3D hardware-accelerated rendering is done natively, while other drawing functionality such as Direct3D is redirected to OpenGL as a stopgap solution, mostly using Wine's code such as WineD3D.
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. As of 2 September 2011[update], 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 Apache Subversion since its inception. 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.
While ReactOS targets mainly the x86/AMD64 PC platform, an effort to port to the ARM architecture was at one point "under way", while it did not produce much functionality and was abandoned along with a port to PowerPC, that is no longer actively maintained. Support for the Xbox and the NEC PC-9800, a variant IA-32 architecture, was added through the use of an architecture-specific HAL. Improved 64-bit support for ReactOS is "being worked on", however, development seems to be going slowly.
Collaboration and reuse
While ReactOS has the aim to build 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 builds on and collaborates with already existing open-source projects. Conversely, projects like Wine, and formerly Captive NTFS and Longene re-use the open-source ReactOS code-base as well.
Hardware driver stack
On the hardware driver side, for instance the UniATA project provides Serial ATA drivers for ReactOS. The project has also experimented with using the FullFAT library in its rewrite of its FAT Installable File System. ReactOS makes use of the USB stack from Haiku both as a reference and as a foundation for its USB support. Mesa 3D provides OpenGL rendering.
Networking
ReactOS's 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. Later, lwIP was integrated into the ReactOS network stack.
Wine cooperation
The ReactOS and the Wine projects share the goal to run binary Windows software natively and can therefore share many dependencies and development. ReactOS uses portions of the Wine project so that it can benefit from Wine's progress in implementing the Win32 API. 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 Unix-like kernels.
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.
Other
The Tango Desktop Project initiative provides open-source design guidelines and resources (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. The KernelEx project is a Windows-API extension and compatibility layer project, which provides open-source implementations of some Windows-APIs. Other contributing projects are MinGW, SYSLINUX, adns, ICU, GraphApp, Ext2, GNU FreeFont, DejaVu fonts, and Liberation fonts.
Forks
Forks based on ReactOS exist:
- Ekush OS (2004)
See also
In Spanish: ReactOS para niños
- Binary-code compatibility
- coLinux, a project allowing Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine
- FreeDOS, a clone of MS-DOS
- eComStation and ArcaOS, two independent proprietary continuations of OS/2 (source code licensed from IBM), which IBM co-created with Microsoft and shares some design elements with MS-DOS and Windows
- Haiku, a clone of BeOS
- Longene, a hybrid operating system kernel intended to be binary-compatible with both the Microsoft Windows and Linux ecosystems
- NDISwrapper, a re-creation of Windows NT kernel parts inside the Linux Kernel to allow the use of Windows drivers in Linux
- Wine, a compatibility layer that runs Microsoft Windows applications on Unix-like operating systems
- List of alternative shells for Windows
- Timelines of: Intel / Microsoft / Microsoft Windows / other operating systems (List)
- Comparison of operating systems