# ReactOS

ReactOS (ROS, englisch react „reagieren“ und operating system „Betriebssystem“) ist ein freies Betriebssystem, das zu Windows binärkompatibel werden soll. Die Oberfläche ist Windows 2000 nachempfunden. Unterstützt werden einige 32-Bit-Programme, oft in älteren Versionen. Das Projekt befindet sich im Alpha-Stadium.

## Überblick

ReactOS hat das Ziel, zum Kernel von Windows NT kompatibel zu werden, wodurch es möglich werden soll, Programme und Gerätetreiber für Windows NT und dessen Nachfolger wie zum Beispiel XP, Server 2003 und 7 zu verwenden. Dazu wird unter anderem die Programmierschnittstelle Win32 nachgebildet.
Der Stand der Unterstützung ist ungefähr auf dem Stand des Jahres 2003. Ältere Software lässt sich oft nicht installieren; oft sind die Installer in 16 Bit geschrieben, was ReactOS nicht unterstützt. Neuere Programme laufen oft noch nicht, da die Unterstützung neuer Funktionen aus neuen Windows-Versionen oft noch nicht implementiert wurde.
Das Betriebssystem wurde größtenteils unter der GNU GPL lizenziert, einige seiner Bestandteile stehen jedoch unter der LGPL oder unter der BSD-Lizenz.
Ein Problem beim Erreichen der Binärkompatibilität zu Windows ist, dass einige API-Aufrufe, die von vielen Programmen eingesetzt werden, nicht öffentlich dokumentiert sind. Außerdem müssen für ReactOS fast alle Teile neu programmiert werden, da beispielsweise nichts von Linux und nur wenig von BSD übernommen oder anderweitig genutzt werden kann. Eine Ausnahme sind jedoch die von Unix unabhängigen Bibliotheken des Wine-Projektes, sodass diese in ReactOS übernommen werden.

## Geschichte

Das Projekt wurde 1996 als „FreeWin95“ ins Leben gerufen und sollte nur zu Windows-95-Programmen kompatibel sein. Es knüpfte damit an ein vergleichbares Projekt an, das zum Ziel hatte, MS-DOS nachzuprogrammieren und als Open-Source-Projekt mit dem Namen FreeDOS bekannt wurde. Es ist heute ein brauchbarer DOS-Nachbau, aber mit heutiger Windows-Software nicht kompatibel. Nachdem FreeWin95 in einer längeren Spezifizierungsphase hängen geblieben war, belebte 1998 Jason Filby als Projektkoordinator das Projekt neu, das seither als ReactOS bekannt ist. Dabei wurde die Kompatibilität zu Windows NT als neues Projektziel festgelegt.
Lange Zeit war das ReactOS-Team mit der Entwicklung des Kernels beschäftigt, so dass kaum ein Erfolg sichtbar wurde. Mit dem Erscheinen von Version 0.2 bot ReactOS erstmals eine grafische Benutzeroberfläche. Dadurch wurde die Presse verstärkt auf ReactOS aufmerksam. Die Unterstützung von Java-, OS/2- und DOS-Programmen wurde auf die Agenda gesetzt, bisher jedoch nicht weiter verfolgt. Eine Implementierung der Internetprotokollfamilie, basierend auf dem IP-Stack von FreeBSD, war dagegen bereits benutzbar.
Am 8. Januar 2007 wurde die erste 4000-Euro-Spendenkampagne gestartet und am 11. Februar 2007 mit einer Summe von 4450 Euro beendet. Das Geld wird hauptsächlich für die Serverpflege und die Steigerung der Bekanntheit von ReactOS verwendet. So erhoffen sich die Programmierer, durch ein steigendes öffentliches Interesse am Projekt neue Entwickler und Tester anzulocken.
Das Projekt präsentierte sich am 25. Februar 2007 erstmals beim jährlichen Treffen europäischer Entwickler von freier Software in Brüssel (FOSDEM).
Anfang 2009 wurde die bisherige Roadmap durch eine neue Planung bis Version 0.5 ersetzt. Die Entwicklung von freien NTFS-Treibern ist für Version 0.5 angekündigt.
Am 16. Januar 2010 äußerte sich Alexei Bragin, damals Koordinator des Projekts, über konzeptionelle Schwächen des Win32-Subsystems und entwarf ein alternatives 32-Bit-Subsystem, um einem funktionsfähigen System näher zu kommen. Das Win32-Subsystem, dessen Softwaredesign Windows näher ist als dem von Wine, soll temporär durch ein neues Subsystem ergänzt werden, das auf Wine-Quellcode beruht (im Gegensatz zu veralteten Versionen im derzeitigen Win32-Subsystem), anstatt diese neu zu entwickeln. Nicht von der Neuerung betroffen ist der bisherige Grafiktreiber, der im Vergleich zu X Window von Wine mit Systemaufrufen zum Kernelmodus Win32k effizientere Grafikaufrufe ermöglicht.
2014 wurde die neue Desktop-Umgebung ReactOS-Explorer – ein freier Nachbau des Windows-Explorers – freigegeben. Dieser ersetzte den (englisch) als ROS explorer oder auch old explorer bezeichneten Vorgänger, der am ursprünglichen Windows-Explorer und am noch älteren Dateimanager angelehnt war. ReactOS-Aktualisierungen werden jeweils im Abstand von drei Monaten veröffentlicht.

### Google Summer of Code

Seit dem Jahr 2006 nimmt ReactOS am Google Summer of Code (GSoC)-Projekt teil. Beim GSoC 2011 wurden vier ReactOS-Projekte fertiggestellt, darunter ein TCP/IP-Treiber auf Basis von lwIP (lightweight IP), und ein GDI-Schrifttreiber.
Am 1. Mai 2012 wurde eine 30.000-Euro-Spendenkampagne gestartet und Ende des Jahres mit einer Spendensumme von 14.392 Euro abgeschlossen.

### Projekt Thorium Core Cloud Desktop

Im Dezember 2013 wurde ein Thorium Core Cloud Desktop genanntes Cloud-Computing-Projekt auf Basis von ReactOS auf der Crowdfunding-Plattform Kickstarter zur Einwerbung von 120.000 US-Dollar gestartet, das am Ende der zweimonatigen Kampagne mit nur zirka 40 Prozent des geplanten Betrags scheiterte.

### Projekt ReactOS Community Edition

Vom 2. April bis 1. Juni 2014 lief eine zweite Crowdfunding-Kampagne auf Indiegogo zur Finanzierung einer ReactOS Community Edition mit einem angestrebten Spendenziel von 50.000 US-Dollar. Für die jeweils drei am meisten durch die Community gewählten Windows-Anwendungen und Geräte soll mit dem Geld volle Kompatibilität ermöglicht werden. Die Kampagne wurde als Teilerfolg mit einem Betrag von $25.141 abgeschlossen.

### Auszeichnungen und Förderungen

Im Juni 2013 wurde ReactOS als SourceForge-Projekt des Monats ausgezeichnet.

### Lobbyarbeit in Russland

Die russische ReactOS Foundation unternahm von 2007 bis zu ihrer Auflösung 2015 mehrere Versuche, ReactOS als möglichen Ausweg aus der Abhängigkeit Russlands von ausländischen Softwareanbietern zu positionieren. Diese Versuche zeigten jedoch keine Ergebnisse.
Das ausführlichste Treffen fand 2007 mit dem nationalistischen Hardliner Wiktor Alksnis statt, der zu dieser Zeit die Partei Rodina in der föderalen Duma vertrat.
2011 nutzten Vertreter der Stiftung einen Besuch des damaligen Präsidenten Medwedew in einer Schule, um ihn mit dem Projekt bekanntzumachen. 2012 wurde ReactOS beim Seliger-Treffen dem inzwischen wiedergewählten Wladimir Putin vorgeführt.
Am 1. April 2015 nahm Entwickler und Stiftungsvertreter Alexei Bragin an einem Expertentreffen des russischen Telekommunikationsministeriums zum Thema Schutz vor Importsoftware teil. Dort belegte das von Bragin vorgestellte „Projekt zur Entwicklung eines Client-Betriebssystems auf Basis von ReactOS“ im Bereich Client-Betriebssysteme den zweiten von drei Plätzen.

## Versionen

| Version | Veröffentlichung | Anmerkungen |
| Ältere Version; nicht mehr unterstützt: 0.1.0 | 2. Februar 2003 | Erste von CD installierbare Version, ohne Grafische Benutzeroberfläche. Dateioperationen wie Kopieren und Löschen funktionieren noch nicht zuverlässig |
| Ältere Version; nicht mehr unterstützt: 0.2.0 | 25. Januar 2004 | Beginn der an den Windows-Explorer und die Taskleiste angelehnten grafischen Oberfläche; instabil |
| Ältere Version; nicht mehr unterstützt: 0.2.2 | 28. April 2004 | Verbesserungen an der grafischen Oberfläche und deren Stabilität |
| Ältere Version; nicht mehr unterstützt: 0.2.5 | 5. Januar 2005 | Stabilerer Kernel und viele kleine Verbesserungen |
| Ältere Version; nicht mehr unterstützt: 0.2.6 | 10. April 2005 | Neben OpenOffice.org 1.x erstmals namhafte Spiele (Deus Ex, Unreal Tournament) per Software Rendering startbar |
| Ältere Version; nicht mehr unterstützt: 0.2.7 | 21. August 2005 | Abgleich der Header-Datei-Struktur mit Windows, Lokalisierung; meldet sich zwecks Kompatibilität als Windows 2000 SP4 statt als NT 4.0 |
| Ältere Version; nicht mehr unterstützt: 0.2.8 | 30. Oktober 2005 | Vorbereitende Schritte zu USB, der Installation von Programmen, Behebung von Darstellungsfehlern der Oberfläche |
| Ältere Version; nicht mehr unterstützt: 0.2.9 | 22. Dezember 2005 | Verbesserte Hardwareerkennung und ACPI, verbesserte API-Unterstützung |
| Ältere Version; nicht mehr unterstützt: 0.3.0 | 28. August 2006 | Verbesserte Unterstützung des Netzwerk-(Internetprotokolls) und Plug and Play (PnP) u. v. m. |
| Ältere Version; nicht mehr unterstützt: 0.3.1 | 10. März 2007 | Viele Fehlerbehebungen, Winlogon-Implementierung, besserer Bootmanager |
| Ältere Version; nicht mehr unterstützt: 0.3.3 | 12. September 2007 | Fehlerbehebungen, Win32-Kernelmodule zum Teil neu geschrieben, Änderungen am DirectX-System; Version 0.3.2 wurde übersprungen. |
| Ältere Version; nicht mehr unterstützt: 0.3.4 | 22. Januar 2008 | Kompatibilität mit NT 5.2 (Windows 2003) verbessert, Usermode-DLLs vom Wine-Projekt synchronisiert, neuer Remote-Desktop-Client, OpenOffice.org läuft besser, Regionalisierung, PnP-Treiber für Maus und Tastatur, Übersetzungen |
| Ältere Version; nicht mehr unterstützt: 0.3.5 | 30. Juni 2008 | Bessere Integration der Usermode-DLLs und des Win32-Subsystems, Unicode-Portierung vom ICU-Projekt, Verbesserungen an Sicherheit, Stabilität und Kompatibilität (u. a. von Visual Studio-Kompilierungen) sowie Ergänzungen in der Regionalisierung und in den Übersetzungen |
| Ältere Version; nicht mehr unterstützt: 0.3.6 | 6. August 2008 | Unterstützung der ARM-Architektur, Beginn der x64-Unterstützung, APC, Timer, Memory-Manager, Verbesserungen am Win32-Subsystem, Synchronisierung der Usermode-DLLs mit Wine, verbesserte Speicherverwaltung, Netzwerk |
| Ältere Version; nicht mehr unterstützt: 0.3.7 | 4. November 2008 | Kernelverbesserungen, Stack, Win32-Subsystem und x64-Prozessorarchitektur |
| Ältere Version; nicht mehr unterstützt: 0.3.8 | 4. Februar 2009 | Korrekturen der Kernel-Dienste, im Win32-Subsystem, in Gerätetreibern, Synchronisation mit Wine, RTL-Verbesserungen, Erweiterungen in Systemanwendungen und im Buildsystem |
| Ältere Version; nicht mehr unterstützt: 0.3.9 | 26. April 2009 | Geringerer Speicherbedarf (32 MB), verbesserter Netzwerkstack, Sicherheitsprüfung im Objektmanager, Treiberkompatibilität erhöht, Audiounterstützung durch Kernel-Streaming, Erweiterung des Befehlszeileninterpreters, GDI und Zeichenverarbeitung korrigiert |
| Ältere Version; nicht mehr unterstützt: 0.3.10 | 5. Juli 2009 | Bessere Audiounterstützung, SATA-Festplattenunterstützung, erweiterte USB-Unterstützung für Maus und Tastatur, Unterstützung weiterer Netzwerkkarten und ein Zeichenprogramm |
| Ältere Version; nicht mehr unterstützt: 0.3.11 | 16. Dezember 2009 | Neue Speicherverwaltung, bessere Windows-Kompatibilität, vor allem mit Firefox 3 und OpenOffice.org |
| Ältere Version; nicht mehr unterstützt: 0.3.12 | 20. Oktober 2010 | Korrekturen an Speicherverwaltung, Hardwarezugriff und Kernel Mode, Verbesserungen für Gerätetreiber, d. h. an den Standardtreibern, die zum Zweck der Abwärtskompatibilität nur die wichtigsten Funktionen an essentieller Hardware unterstützen. |
| Ältere Version; nicht mehr unterstützt: 0.3.13 | 22. März 2011 | Verbesserte Speicher- und Audiomixer-Verwaltung sowie Grafikunterstützung, bessere Unterstützung von SATA-Geräten |
| Ältere Version; nicht mehr unterstützt: 0.3.14 | 7. Februar 2012 | WLAN-Unterstützung (bis zu WEP), Steigerung von Netzwerkdurchsatz und -stabilität mit neuem TCP/IP-Treiber LwIP, Unterstützung von Desktopmotiven; ReactOS ist nun mit MSVC erstellbar |
| Ältere Version; nicht mehr unterstützt: 0.3.15 | 30. Mai 2013 | USB-2.0-Unterstützung (u. a. mit EHCI) für Eingabegeräte und Massenspeicher; verbesserte SATA-Unterstützung |
| Ältere Version; nicht mehr unterstützt: 0.3.16 | 6. Februar 2014 | CSRSS aktualisiert, Netzwerkkartentreiber (RTL8139 Chips), integriertes Theme, Wine-Bibliothek Version 1.7.1 |
| Ältere Version; nicht mehr unterstützt: 0.3.17 | 6. November 2014 | frühe Version von NTVDM, bessere Hardwareunterstützung |
| Ältere Version; nicht mehr unterstützt: 0.4.0 | 16. Februar 2016 | Verbesserungen im Bereich Audio, SATA und WLAN. Implementierung des freien ext2-Treibers ext2fsd |
| Ältere Version; nicht mehr unterstützt: 0.4.1 | 17. Mai 2016 | U. a. bessere Unterstützung des Dateisystems Btrfs, Ordnerfreigaben in virtuellen Maschinen (wie VirtualBox und VMware) |
| Ältere Version; nicht mehr unterstützt: 0.4.2 | 16. August 2016 | U. a. GUI-Optimierung, Unterstützung für mehrere Unix-Dateisysteme |
| Ältere Version; nicht mehr unterstützt: 0.4.3 | 16. November 2016 | U. a. neue Winsock-Bibliothek, bessere Anwendungskompatibilität |
| Ältere Version; nicht mehr unterstützt: 0.4.4 | 16. Februar 2017 | U. a. bessere Druckerunterstützung |
| Ältere Version; nicht mehr unterstützt: 0.4.5 | 18. Mai 2017 | U. a. Office-2010-Unterstützung, Verbesserung der Shell32 und des Explorers |
| Ältere Version; nicht mehr unterstützt: 0.4.6 | 1. September 2017 | U. a. Erweiterung des Explorers um Kompatibilitätseinstellungen in Anwendungsverknüpfungen und viele Fehlerbehebungen |
| Ältere Version; nicht mehr unterstützt: 0.4.7 | 6. Dezember 2017 | U. a. Treiber für Ext2, Ext3, Ext4, Btrfs, ReiserFS, FFS und NFS; Mit dem CDFS-/ISO-9660-Treiber sind nun ISO-Abbilder auch ohne CD-Laufwerk einzuhängen (mounten). |
| Ältere Version; nicht mehr unterstützt: 0.4.8 | 16. April 2018 | Unterstützung auch für Programme, die für Windows Vista, Windows 7, Windows 8 und Windows 10 entstanden. |
| Ältere Version; nicht mehr unterstützt: 0.4.9 | 23. Juli 2018 | Zip-Format-Unterstützung, Wine-Aktualisierung: Version 3.3, Fehlerbehebung beim Kopieren großer Dateien. |
| Ältere Version; nicht mehr unterstützt: 0.4.10 | 6. November 2018 | Betriebssystemstart von Btrfs-Partitionen, Wine-Aktualisierung: Version 3.9 |
| Ältere Version; nicht mehr unterstützt: 0.4.11 | 4. März 2019 | Update-Fähigkeit, Zweirichtungs-Texteingabe (Arabisch, Hebräisch), Manifest-/ DLL-Prüfungen für mehr Anwendungen, Wine 3.17 |
| Ältere Version; nicht mehr unterstützt: 0.4.12 | 23. September 2019 | Treiber für Dateisystem, CD- und Netzwerkkarten, PXE-Start, Emulation mit Wine 4 |
| Ältere Version; nicht mehr unterstützt: 0.4.13 | 9. April 2020 | Neuer USB-Stack, Accessibility-Menü, verbesserte XBOX-Kompatibilität, Datei-Explorer: Suchfunktion, schnellerer Boot bei FAT-Dateisystem |
| Aktuelle Version: 0.4.14 | 16. Dezember 2021 | Netzwerktreiber für VMs, Unterstützung für NEC-PC-9800-Computer, Wine-Aktualisierung auf Version 4.18 |
| Legende:Alte VersionÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version |||
Allgemeine Fehlerbereinigungen, Synchronisierung der DLL-Bibliotheken des Wine-Projektes und Treiberaktualisierungen werden mit jeder freigegebenen Version durchgeführt.

## Entwicklung

Der Quelltext von ReactOS ist hauptsächlich in C geschrieben. Der (ReactOS-)Explorer und das Sound-System sind in C++ implementiert. Das Projekt nutzt MinGW zur Übersetzung (oder Kompilierung) und arbeitet mit dessen Entwicklern zusammen.

### Abhängigkeiten

ReactOS nutzt, wo es sinnvoll ist, Quelltexte anderer Open-Source-Projekte wie Haiku, WINE und FreeBSD, um ein stabileres System zur Verfügung zu stellen.

#### Wine

In ReactOS werden Teile des Wine-Projekts genutzt, die die Win32-API implementieren. Da Wine auf Linux ausgerichtet ist, werden für ReactOS die Windows-Komponenten NTDLL, USER32, KERNEL32, GDI32 und ADVAPI neu geschrieben.

#### Netzwerktreiber

Im Rahmen des Google Summer of Codes 2011 entwickelte ein Student einen neuen Netzwerk-Stack auf Basis von lwIP.

#### USB

Teile des USB-Treibers wurden von Haiku übernommen.

#### Dateisystem

2014 wurde ext2-Unterstützung implementiert, was das System von den FAT32-Limitierungen weitestgehend befreit. 2016 wurde ext3/4, UFS und das ReiserFS implementiert. Seit 2018 unterstützt ReactOS das Linux-Dateisystem Btrfs. Für die Unterstützung des Dateisystems wurde der freie Dateisystemtreiber WinBtrfs genutzt.

#### Virtuelle Maschinen und Treiber

Um ReactOS zu installieren, wird ein ISO-Abbild der ReactOS-Boot-CD benötigt. ReactOS sollte grundsätzlich in einer virtuellen Maschine – wie z. B.Oracles VirtualBox, VMWares Workstation oder QEMU – sowie auch nativ auf x86-Rechnern ausgeführt werden können. Um ReactOS zu unterstützen wurde die Entwicklung des sogenannten UniATA-Treibers begonnen, mit dessen Hilfe die Serial-ATA-Schnittstelle betriebssystemübergreifend angesprochen werden kann. Die ROS-, Haiku und Mesa-3D-Entwickler arbeiten 2011 in einem Google Summer of Code-Projekt zusammen, um ebenso den USB-Treiber betriebssystemübergreifend nutzen zu können.

### Online-Community

Es existieren IRC-Chats und Diskussionsforen zum Austausch zwischen Nutzern und Entwicklern in Englisch als auch auf Deutsch. In Deutschland wird diese Online-Community unter anderem durch den ReactOS Deutschland e. V. repräsentiert. Die im ReactOS-Wiki aufgeführte im russischen Saransk registrierte ReactOS Foundation wurde 2015 aufgelöst. Einige der Entwickler sind regelmäßig auf den Chemnitzer Linux-Tagen oder LinuxTagen in Berlin vertreten. Die Entwickler kommen einmal im Monat zu einer Besprechung im Chat zusammen, eine Zusammenfassung des Protokolls wird der offiziellen Website veröffentlicht. Über die Jira-Weboberfläche kann jedermann Fehlerberichte oder Vorschläge (englisch bug reports oder feature requests) einreichen.

### Status

Das Projekt befindet sich in der Alpha-Phase. Es ist noch nicht für den Alltagsgebrauch vorgesehen. Die Entwickler empfehlen die Installation in einer virtuellen Maschine. Offiziell unterstützt werden QEMU, VirtualBox und VMware.
Die Hardwareunterstützung ist bisher eingeschränkt. Abseits von Treibern für den Betrieb in einer virtuellen Maschine gelten nur einige Treiber von Geräteherstellern als stabil. Auch Eigenentwicklungen von einigen Software-Subsystemen von Microsoft wie die Speech-API sind noch nicht verfügbar. Andere, wie z. B. Sound-System, sind bislang nur teilweise implementiert (z. B. kein MIDI). Stabil arbeitende Standardanwendungen sind unter anderem VLC media player, Softmaker Office 2006 und Firefox sowie grundlegende Dienstprogramme (z. B. 7-Zip) und Spiele wie Paintball 2, Quake III Arena, Globulation 2 oder Civilization II.
ReactOS bietet derzeit nur sehr eingeschränkte Unterstützung von Mehrkernprozessoren (SMP), nahezu alle Berechnungen werden nur auf einem Kern durchgeführt.

## Hardwareanforderungen

ReactOS begnügt sich bereits mit älterer Hardware. Mit neuerer Hardware ist es oft nicht kompatibel. Unterstützt werden x86-Prozessoren der Pentium-Generation oder neuer. ReactOS benötigt 96 MB Arbeitsspeicher, die Entwickler empfehlen jedoch 256 MB. Zur Installation werden 650 MB Speicherplatz benötigt. Für Tests werden 5 GB oder mehr empfohlen. Die Grafikkarte muss VGA-kompatibel sein und die VESA BIOS Extension 2.0 implementieren.

## Rechtliche Fragen

Um eine Urheberrechtsverletzung und juristische Konflikte zu vermeiden, darf ReactOS kein abgeleitetes Werk vom Vorbild Windows sein. Deshalb wurde die Weiterentwicklung am 26. Januar 2006 kurzzeitig gestoppt. Damit die angewandten Verfahren zur Re-Implementierung undokumentierter Windows-Funktionen durch Reverse Engineering das US-amerikanische Urheberrecht nicht verletzen, wurde der Quelltext bis zum Dezember 2007 durch ein Audit überprüft. Es wurden Regeln aufgestellt, nachdem ausschließlich Reinraum-Implementierungen, wie in den Vereinigten Staaten zulässig, erlaubt seien. Nicht den Anforderungen entsprechender Quelltext muss reimplementiert werden. Es wurden Statuten zum Umgang mit geistigem Eigentum aufgestellt. Entwickler, die teilweise Einsicht in den Windows-Quelltext hatten, durften fortan nicht mehr zu den betroffenen Stellen im Quelltext beitragen.
Mitarbeiter von Microsoft äußerten Zweifel, dass es sich tatsächlich um eine freie und unabhängige Reimplementierung des NT-Kernels handelt, da sie markante Teile des Quelltextes wiedererkannten. Sie vermuten, dass Teile aus dem Windows Research Kernel übernommen wurden, der an Universitäten lizenziert wurde und von dem zahlreiche Leaks im Netz kursieren.