# ReactOS

ReactOS est un projet de système d'exploitation libre en développement se voulant compatible avec les programmes et pilotes Microsoft Windows.
Les DLL et les exécutables de Windows peuvent être interchangés.
ReactOS prend en charge certaines applications comme AbiWord, Nero Burning ROM, Unreal Tournament ou Mozilla Firefox. Il existe une version live CD qui permet de le tester sans rien installer sur le disque dur.
ReactOS a été reconnu pour ses informations sur les API Windows non publiées et plus généralement comme un projet open source. L'objectif affiché du projet est de permettre aux utilisateurs d'applications sous Windows de renoncer complètement à l'utilisation de logiciels commerciaux propriétaires sans avoir à basculer vers un autre système d'exploitation, comme Linux. Cependant, le manque de bailleurs de fonds des entreprises et développeurs dédiés a limité ses efforts pour le réaliser.

## Étymologie

Le nom ReactOS a été inventé lors d'une conversation IRC entre plusieurs membres du projet. Alors que le terme « OS » est synonyme de système d'exploitation, le terme « React » (réagir) représente l'insatisfaction envers le groupe Microsoft, leur position monopolistique et leurs réactions à cela.

## Historique

En 1996, un groupe de personnes forme un projet nommé FreeWin95, avec pour but de développer un système d'exploitation qui serait un clone de Windows 95. Le projet stagnait dans ses discussions à propos de la conception du système.
Fin 1997, le projet ne donnait toujours aucun résultat. Les développeurs décidèrent de faire renaître le projet, qui fut renommé ReactOS, et sa cible devint Windows NT. Le projet débute en février 1998, avec le développement du noyau et des pilotes de base.
Le projet avance ensuite significativement : en 2008, la branche 0.3 permettait une compatibilité avec un nombre important d'applications développées pour Microsoft Windows.
En 2011, le projet est accepté au Google Summer of Code de 2011. Cela aura pour effet de stimuler l'avancement du projet.

### Audit interne de 2006

Le 17 janvier 2006, le développeur Hartmut Birr déclara sur la liste de diffusion des développeurs de ReactOS que le système contenait du code d'éléments de Microsoft Windows désassemblés (décompilés). Les sources du système furent bloquées et il fut demandé aux contributeurs de faire une rétro-ingénierie propre. L'accusation suscita une réaction négative de la part de la communauté des logiciels libres. C'est pourquoi de mars 2006 à décembre 2007, un audit interne fut effectué sur le code source pour le nettoyer.
Tous les développeurs durent montrer qu'ils faisaient une rétro-ingénierie légale. Lorsque l'audit fut terminé, les résultats ne furent pas rendus publics : il s'agissait seulement d'un effort interne afin d'assurer un code source propre, et non d'une décision de justice.
Cette affaire conduisit un certain nombre de membres fondateurs à quitter le projet. Aujourd'hui le doute est levé et ReactOS continue son chemin vers la 1.0.

### Participation au Google Summer of Code 2011

Après plusieurs candidatures rejetées, le projet ReactOS a été admis au Google Summer of Code de 2011
Les objectifs fixés par l'équipe de développement étaient :
* Amélioration de la compatibilité matérielle (adaptateurs USB → série, UEFI et l'audio).
* Amélioration de la prise en charge réseau (Internet Protocol Helper API, service SSH, réécriture du pilote TCP/IP).
* Amélioration du mélangeur audio.
* Création d'un wrapper noyau IFS permettant de simplifier l'implémentation du support de nouveaux systèmes de fichier (NTFS, exFAT…).
* Passer l'installation en mode graphique dès le début de l’installation.
* Implémentation d'un pilote pour les polices.
* Implémentation de la console MMC.
* Implémenter un système de permission fondé sur une Access Control Lists en vue de permettre de gérer plusieurs sessions utilisateurs.

### Campagne de collecte de fonds ReactOS 2012

La fondation ReactOS cherche à engager de façon formelle autant de développeurs principaux que possible, afin qu'ils puissent investir tout leur temps sur le projet ReactOS. Pour cela, une collecte de fonds de 30 000 euros a été menée.

### ReactOS Community Edition

Le 2 avril 2014, après avoir entretenu le mystère pendant deux semaines, l'équipe de développement annonce ReactOS Community Edition. Il s'agit d'une volonté de remettre la communauté au centre du développement. Pour cela est lancée une campagne de collecte de fonds Indiegogo. Parmi les récompenses destinées aux donateurs figurait la possibilité de voter pour une application ou un matériel donné dont l'équipe de développement aurait alors comme objectif premier d'assurer le support des plus demandés. Les modifications apportées devaient être visibles dans la version 0.4.

### Le passé

Les développeurs de ReactOS ont notamment travaillé sur la prise en charge de l'USB (la mise en œuvre Cromwell du noyau Linux (portage)), ainsi que l'amélioration de la gestion de DirectX et OpenGL.
Les développeurs ont également travaillé à l'amélioration de l'interface graphique. La prise en charge des plates-formes Java et Microsoft .NET via la plate-forme de développement Mono.
Le projet prévoyait de faire ressembler ReactOS à Windows Server 2003 jusqu'à la fin de 2015.

### L'avenir

En mars 2016, après la publication de la version 0.4.0, le site du projet mentionnait, à titre indicatif, que les ambitions pour la version 0.5.0 pouvaient se résumer aux objectifs suivants : pouvoir accéder en lecture et en écriture aux partitions NTFS ; le support des pilotes WDM ; l'impression ; DirectX Core.

## Philosophie

La foire aux questions du site de ReactOS explique que « ReactOS n'est pas un clone de Windows mais un OS de type Windows NT compatible avec les applications et drivers Microsoft Windows. Les motivations peuvent être les mêmes que celles ayant amené à la création de Linux (OS de type Unix). En clair, Linux est un grand système d'exploitation, mais il n'est pas la solution idéale pour tout le monde. Nous sommes beaucoup à aimer Windows tout en étant frustrés de la politique de Microsoft à certains égards. »
Le site Internet du projet écrit que « la raison d'être de ReactOS est simple : il y a des gens, et c'est encore plus vrai pour des entreprises, qui ne passeront — jamais — à Linux, et ce quel que soit le niveau d'excellence que Linux pourra atteindre. Il y a des personnes qui utilisent encore le Kernel Linux 2.2 et refusent de le mettre à jour. Il y aura toujours des gens pour qui changer d'OS n'est pas une option, et c'est compréhensible. Jusqu'à maintenant, aucun programme libre n'avait d'intérêt pour eux. Évidemment, d'autres applications gratuites permettent de se débarrasser petit à petit de programmes Microsoft comme Office ou Internet Explorer, mais il est autrement difficile de se débarrasser de l'OS lui-même. C'est cette catégorie de gens qui est visée par ReactOS, car avec sa compatibilité et son apparence commune avec Windows, ce projet évite nombre des problèmes que l'on peut rencontrer en passant à Linux (entraîner tout le monde à maîtriser le nouvel OS, des coûts de maintenance qui augmentent, acquérir ou créer de nouveaux programmes, gérer des incompatibilités matérielles, la liste est longue…). »

## Fonctionnalités

Le noyau est maintenant assez stable, de nombreuses API sont prêtes pour un travail de niveau supérieur et une interface basique est disponible. ReactOS propose ReactOS Explorer, un shell basique pour ReactOS, similaire à l'Explorateur Windows. Le système est pour le moment mono-utilisateur mais les développeurs travaillent à le rendre multi-utilisateur.
À sa version 0.2.5, des copies d'écran du navigateur Lynx surfant sur internet ont été dévoilées.
Une version Live CD est disponible en téléchargement pour utiliser ce système sans l'installer. Les développeurs soulignent l'accroissement des téléchargements de ReactOS depuis la version 0.3.12.

### Architectures de processeurs supportés

ReactOS supporte l'architecture x86 et x86_64. Avec la version 0.3.11, le support de l'architecture ARM fut ajouté.

### Stockage

ReactOS gère les disques dur Serial ATA depuis juillet 2009. Le système de fichier utilisé par défaut est FAT 32, cependant depuis la version 0.2.5 les systèmes de fichier Ext2 et Ext3 sont supportés et l'assistant d'installation propose ces options lors du formatage de la partition système. Les travaux pour supporter le format NTFS en lecture/écriture sont en cours et son ajout est dans les prérequis pour passer à la version 0.5. Le support de partitions de plus de 8 Go est disponible depuis la version 0.3.10. La version 0.4.10 va supporter les partitions en BTRFS.
Le support de GRUB et de NTLDR a été ajouté avec la version 0.2.5, et permet à ReactOS de coexister respectivement avec les partitions de Linux et Windows.
Cependant, le chargeur de démarrage de Windows et celui de ReactOS ne sont pas interchangeables.

### Support du réseau

Le support du réseau fut introduit avec la version 0.2.5 de manière partielle. Avec la version 0.3.0 (en août 2006) celui-ci fut complété et la sécurité accrue. Depuis la version 0.3.14, ReactOS prend en charge le Wi-Fi ainsi que le protocole WEP et inclut une nouvelle pile réseau (lwIP), bien qu'aucune GUI ne soit disponible pour le WiFi.

### Support du son

Le son est supporté depuis la version 0.2.5. Cependant, à l'heure actuelle, seulement les anciennes cartes son au standard AC'97 ou antérieur fonctionneront. Les "High-Definition Audio" ne sont pas encore supportées.

### Support de l'USB

Jusqu'au 28 février 2012, le support de l'USB était sommaire : le pilote fourni était un pilote NT4 introduit avec la version 0.3.10 pour permettre l'utilisation de claviers et de souris USB mais qui ne permettait pas à ReactOS de démarrer depuis une clé USB.
Grâce au soutien du projet Haiku, ReactOS dispose désormais d'un pilote qui, bien que toujours incomplet, est capable d'utiliser les périphériques de stockage USB, une fonctionnalité attendue depuis longtemps.

### Compatibilité des applications Windows
#### Applications et fonctionnalités Windows

ReactOS est capable d'exécuter de nombreuses applications Win32, telles que le bloc-notes Notepad (éditeur de texte basique), Regedit (l'éditeur de registre), cmd.exe, et de nombreuses autres applications de bureautique (telles que Microsoft Office et Microsoft WordPad).
Certains outils de Microsoft peuvent être déployés sur ReactOS comme la connexion bureau à distance qui s'installe depuis un CD Windows XP original.
* Le bureau à distance de Windows XP fonctionne sous ReactOS 0.3.14
* ReactOS supporte les thèmes depuis la version 0.3.14

#### Jeux vidéo

La communauté ReactOS essaye régulièrement la compatibilité de certains jeux avec le système d'exploitation au fur et à mesure du développement de ce dernier. Ces essais sont surtout effectués pour juger de la fluidité du jeu compatible plutôt que des possibles bogues étant donné le faible avancement au niveau des pilotes de son et permettant l'accélération matérielle.
ReactOS est compatible avec des jeux tels que Quake et Quake II, Deus Ex, TrackMania Nations Forever, Unreal Tournament ou des jeux plus ambitieux comme Far Cry, Warcraft III, Minecraft ou même les jeux créés avec le moteur Source, il est ainsi possible de jouer à Portal, Half-Life 2, héberger un serveur pour Left 4 Dead 2, etc.
Des jeux sont disponiblement nativement comme un clone du Démineur conçu par Wine ou un clone du Solitaire.

#### Compilation de ReactOS

Depuis la version 0.3.14, ReactOS peut être compilé à l'aide d'outils de développement Microsoft.
Depuis la version 0.4.9, ReactOS peut être compilé sur lui-même.

## Projets liés

ReactOS travaille avec le projet Wine, le projet ReactOS peut donc bénéficier des progrès de Wine dans l'implémentation de l'API Win32. Ces travaux concernent principalement les bibliothèques logicielles, dont la plupart peuvent être échangées entre ReactOS et Wine. Les deux projets travaillent sur la compatibilité croisée, de sorte que le peu de bibliothèques restantes puissent être employées dans ReactOS.
Le système d'exploitation Haiku est un soutien de ReactOS : ils ont soutenu la candidature ReactOS au Google Summer of Code 2011 et fourni au projet leur pilote USB, que les développeurs de ReactOS ont par la suite adapté.

## Historique des versions

* Version qui n'est plus prise en charge
* Version actuelle
* Version future
| Version du système | Type de la version | Date de publication | Information sur la version |
| 0.2.0 | Alpha | 25/01/2004 | Première version avec environnement graphique. |
| 0.2.2 0.2.5 | Alpha | 27/04/2004 02/01/2005 | Correction de bugs uniquement. |
| 0.2.8 | Alpha | 29/10/2005 | Détection de VMWare, réécriture de CSRSS. |
| 0.3.0 | Alpha | 27/08/2006 | Première version qui supporte officiellement Internet. |
| 0.3.1 | Alpha | 10/03/2007 | Ajout du gestionnaire de programmes, début de la réécriture du noyau du système. |
| 0.3.2 | Alpha | néant | Branche réalisée mais jamais sortie. |
| 0.3.3 | Alpha | 12/09/2007 | Améliorations du noyau et de Win32k. |
| 0.3.4 | Alpha | 22/01/2008 | Support d'enregistrement réécrit, Desktop Client retiré, Plug 'N' Play. |
| 0.3.5 | Alpha | 30/06/2008 | Correction de bugs uniquement. |
| 0.3.6 | Alpha | 06/08/2008 | Support RTL. |
| 0.3.7 | Alpha | 04/11/2008 | x86_64 amélioré, MSVC, nouveaux stacks. |
| 0.3.8 | Alpha | 04/02/2009 | Introduction de PSEH et multipartition du support HDD dans le LiveCD. |
| 0.3.9 | Alpha | 26/04/2009 | 24 MB au minimum de mémoire vive, cartographie Hyperspace plus rapide, support son initial. |
| 0.3.10 | Alpha | 05/07/2009 | Support SATA initial, support USB clavier / souris, clone de Paint, Initial MSVC$^,$. |
| 0.3.11 | Alpha | 16/12/2009 | Réécriture du kdcom, polices de caractères pour le chinois et le coréen, compatibilité mise à jour, système de sons amélioré. |
| 0.3.12 | Alpha | 20/10/2010 | Amélioration de la compatibilité matérielle (CPU), gestion des services améliorée, 259 bugs corrigés. L'équipe ReactOS code maintenant le noyau en C et non en assembleur. |
| 0.3.13 | Alpha | 22/03/2011 | Correction de 282 bugs, notamment pour le support des cartes graphiques, l’allocation mémoire et la compatibilité avec Windows. |
| 0.3.14 | Alpha | 07/02/2012 | Amélioration de la compatibilité NT5.1 (notamment les pilotes), support hautement amélioré des réseaux TCP/IP. Support du Wi-Fi (non chiffré et WEP), des thèmes Windows XP. Réécriture de shell 32. ACPI activé par défaut. Correction de 789 bugs. |
| 0.3.15 | Alpha | 30/05/2013 | Support préliminaire des claviers, souris et supports de stockage USB. Support AHCI. Utilisation de CMAKE pour la compilation (au lieu de rbuild jusque-là). |
| 0.3.16 | Alpha | 06/02/2014 | Réécriture du CSRSS et un début de réécriture du shell32. La version 0.3.16 prépare plusieurs fonctionnalités qui seront ajoutées par la suite et qui apporteront des améliorations visible pour l'utilisateur final. Mise à jour du pilote de la carte réseau RTL8139, permettant d'utiliser ReactOS sur les dernières versions de QEMU et cela de manière « clefs en main » pour l'utilisateur. |
| 0.3.17 | Alpha | 05/11/2014 | Dernière version de la série 0.3.x . Prise en charge des applications 16 bits, correction de nombreux bogues et améliorations de la compatibilité avec les logiciels existants. La mise à jour suivante portera le numéro de version 0.4.0. Actuellement, la communauté déclare essayer de faire compatible les applications Windows Server 2003 (Windows XP). |
| 0.4.0 | Alpha | 16/02/2016 | ReactOS Community Edition est annoncé. Mise à jour majeure de l'explorateur de fichiers, amélioration de l'interface graphique. Support USB amélioré, support pour VirtualBox et VirtualPC, ajout du support en lecture/écriture pour ext2, ajout du support en lecture pour NTFS, améliorations pour l'installation réseau et WiFi, améliorations du support audio. |
| 0.4.1 | Alpha | 17/05/2016 | Ajout du support du système de fichiers BTRFS, améliorations des Activation Contexts (SxS), améliorations du Shell, corrections de bugs USB, support des Dossiers Partagés Virtual Machine, correction de bugs. |
| 0.4.2 | Alpha | 16/08/2016 | Amélioration de la prise en charge de BTRFS et Extended file system, ReiserFS et UFS/FFS, introduction de la prise en charge des Framework 2.0 et 4.0 support de la plateforme dot net, corrections de Shell et améliorations. |
| 0.4.3 | Alpha | 16/11/2016 | Amélioration NTVDM |
| 0.4.4 | Alpha | 16/02/2017 | Prise en charge initiale de la pile d'impression, réparations mineures, améliorations habituelles et corrections de bugs |
| 0.4.5 | Alpha | 18/05/2017 | Corrections de bogues et de synchronisations avec des dépendances externes |
| 0.4.6 | Alpha | 01/09/2017 | Corrections de bogues critiques ; ajout d'un moteur de compatibilité (shim) et d'un pilote NFS |
| 0.4.7 | Alpha | 06/12/2017 | Version améliorée du gestionnaire d'applications RAPPS, implémentation de la barre "Quick-Launch" dans l'explorateur ; diverses corrections de bogues dans les pilotes de système de fichiers, améliorations du support RDBSS/RXCE et NFS. Ajout du support permettant que les images ISO de ReactOS flashées directement sur des clés USB puissent être bootées. |
| 0.4.8 | Alpha | 14/04/2018 | Support des applications conçues pour le noyau NT6 ; amélioration de la stabilité du noyau ; amélioration de l'expérience de l'utilisateur. |
| 0.4.9 | Alpha | 23/07/2018 | Capacité à compiler ReactOS depuis ReactOS ; amélioration de la stabilité liée aux entrées/sorties ; intégration native d'un utilitaire Zip, amélioration de l'interface graphique. |
| 0.4.10 | Alpha | 06/11/2018 | Support du boot BTRFS, améliorations de l'autochk, pile USB améliorée... |
| 0.4.11 | Alpha | 04/03/2019 | Travail sur le noyau et sur le système win32, contribuant à améliorer la stabilité globale du système. Pilotes pour la gestion de la batterie avec icône dans la barre des tâches. Le système d'installation USETUP permet désormais la mise à jour du système sans formater le disque. |
| 0.4.12 | Alpha | 23/09/2019 | Stabilité améliorée par un travail sur les pilotes systèmes de fichiers, gestion appropriée de l'alimentation des périphériques et meilleur rendu des polices. |
| 0.4.13 | Alpha | 10/04/2020 | Améliorations de la pile USB, du processus de démarrage du port Xbox, du fichiers Explorer pour le module Shell, ainsi que de nombreuses autres modifications. |
| 0.4.14 | Alpha | 16/12/2021 | Améliorations du shell, portage sur ordinateurs NEC PC-9800, meilleur support du protocole ICMP, mises à jour du noyau, nouvelle interface réseau VirtIO et diverses autres modifications. |
| 0.5.0 | Bêta | ? | ReactOS passera au stade de développement bêta, supportera la lecture et l'écriture NTFS, les pilotes WDM, l'impression et le cœur de DirectX. |
| 1.0.0 | Stable | ? | ? |

## Commandes

La liste de commandes suivante est prise en charge par l’invite de commande ReactOS :
* alias
* assoc
* attrib
* beep
* call
* cd ou chdir
* choice
* cls
* color
* copy
* ctty
* date
* del / delete / erase
* delay
* dir
* echo
* endlocal
* exit
* for
* free
* goto
* help
* history
* if
* label
* memory
* md
* mkdir
* mklink
* more
* move
* path
* pause
* popd
* prompt
* pushd
* rd / rmdir
* rem
* ren
* rename
* replace
* screen
* set
* setlocal
* shift
* start
* time
* timer
* title
* type
* ver
* verify
* vol