ReactOS

ReactOS (in precedenza conosciuto col nome FreeWin95) è un sistema operativo libero open-source che si pone l'obiettivo di essere totalmente compatibile con il codice oggetto delle applicazioni e dei driver realizzati per Microsoft Windows NT 5 e versioni successive (Windows 2000, XP, 2003, Vista, 7, 8, 10 e 11).

Il termine è stato coniato dal fondatore del progetto Jason Filby, uno sviluppatore di Oracle Database di Durban, in Sudafrica. "OS" sta per "sistema operativo" mentre "React" sta alla disapprovazione di massa verso Microsoft e la sua posizione monopolistica e quindi alla necessità di una "Reazione". Attualmente il progetto si trova nello stadio di sviluppo alpha e gli stessi sviluppatori ne sconsigliano l'impiego per le attività di tutti i giorni a causa della sua instabilità, anche se l'85% degli obiettivi è stato raggiunto nel novembre del 2005.

Storia

L'ideazione e le prime versioni 
Intorno al 1996 un gruppo di sviluppatori open source avviò un progetto chiamato FreeWin95, con l'intento di implementare un sistema operativo compatibile con Windows 95. Il progetto si arrestò alle discussioni riguardanti la progettazione del sistema, perché Windows 95 appariva carente in molte delle caratteristiche richieste.

Pertanto alla fine del 1997 i membri del progetto cambiarono il "sistema obiettivo" in Windows NT e il nome stesso del progetto fu modificato in ReactOS; il progetto nacque ufficialmente nel febbraio 1998 con lo sviluppo del kernel e dei driver di base.

Il ramo 0.3 e il supporto USB 
A partire dal ramo di sviluppo della versione 0.3 è stato introdotto il supporto per i temi e per l'USB, che nella versione 0.3.14 consentiva solo il funzionamento di tastiere e mouse, ancorché sotto forma di patch, mentre nella versione 0.3.15 supportava anche i dischi dotati di tale bus. 

La versione 0.3.16 è stata precocemente distribuita, con lo scopo di implementare le ultime modifiche in concomitanza del progetto Thorium, un tentativo di guadagnare visibilità tramite una campagna di raccolta fondi sulla piattaforma Kickstarter. Nella versione 0.3.17 è stato incluso NTVDM, ancora in fase di progettazione, che fornisce il supporto a una vasta gamma di applicazioni a 16 bit. Lo sviluppo preliminare alla release 0.3.17 ha inoltre registrato un notevole impegno da parte della comunità nelle prove su hardware; diversi rollback e bugs scoperti nelle release candidate vennero prontamente risolti e inseriti nella versione finale. La ReactOS Foundation però ha voluto saltare appositamente il ramo di sviluppo 0.3.18 per passare direttamente a quello 0.4, in modo da sottolineare la crescita avuta dal codice in tutti questi anni di miglioramenti.

La revisione per presenza di codice non libero 
Il 17 gennaio 2006 Harmut Birr contattò gli sviluppatori di ReactOS presenti nella mailing list ufficiale (ros-dev) affermando che in ReactOS risultava esserci qualche riga di codice identica a quelle di Windows NT, invalidando la sua licenza libera. Il risultato di queste affermazioni ha fatto chiudere per un periodo di tempo il server SVN dedicato al progetto e gli sviluppatori si sono preoccupati di contattare coloro che contribuivano a migliorare il software a utilizzare solo ed esclusivamente del codice ottenuto tramite il metodo Clean Room Reverse Engineering. Dato che ReactOS è distribuito come software open source questa azione ha causato una reazione negativa da parte della comunità del software libero. Non ci sono comunque state conseguenze a danno degli sviluppatori e l'accesso al programma di sviluppo è stato ripristinato quasi immediatamente.

Il codice che Birr ha contestato coinvolgeva la funzione BadStack presente in syscall.S, e altre voci non specificate. Confrontando questa funzione con il codice binario ottenuto dal reverse di Windows XP, Birr ha sostenuto che la funzione BadStack era semplicemente un mero copia-incolla, dato che erano identici. Alex Ionescu, l'autore del codice, ha affermato che mentre il binario di Windows XP è stato effettivamente studiato, il codice non era copiato, ma reimplementato; il motivo per cui le funzioni sono identiche, ha sostenuto Ionescu, è stato perché c'era solo un modo per implementare la funzione. Il fatto è analogo alla causa intentata da Sony Computer Entertainment contro Connectix relativa al reverse engineering fatto nel corso dello sviluppo di Virtual Game Station: Connectix ebbe successo nel ricorso contro la sentenza iniziale, sostenendo che il reverse e l'osservazione diretta del codice proprietario era resa necessaria perché non c'era altro modo per determinare il suo comportamento e quindi le fu riconosciuto l'"uso legittimo".

Come conseguenza dall'8 marzo 2006 fino a dicembre 2007 gli sviluppatori di ReactOS hanno iniziato un'analisi auto-imposta di tutto il codice che riguarda la compatibilità con Microsoft Windows. A settembre del 2007, quando il controllo del codice era quasi ultimato, lo stato dell'analisi venne rimosso dalla homepage di ReactOS. Quando l'analisi venne definitivamente completata, i dettagli nello specifico non furono resi pubblici e rimasero solo come dati interni per essere sicuri della completa legalità del prodotto.

L'implementazione di nuove funzionalità e gli hackfest 
A partire dal 2008 il lavoro di sviluppo è stato rivolto, tra gli altri obiettivi, a implementare nel sistema un migliore supporto di rete, un supporto per la multimedialità e un completo supporto hardware di tipo plug-and-play oltre al miglioramento della GUI. Java e il supporto per applicazioni .NET (e Mono) vennero rese funzionanti, anche se la compatibilità con alcune applicazioni non è garantita. Tuttavia il sistema è ancora carente di molte API fondamentali, prova ne è il frequente crash di applicazioni e l'impossibilità di installarne molte di più. Solo un piccolo gruppo di programmi, indicati come golden app, possono essere installate e funzionare su ReactOS. Gli sviluppatori si sono inoltre concentrati per rendere il kernel del sistema operativo ancora più compatibile con quello di Windows NT 5.x e 6 e per rendere funzionanti ancora più applicazioni, prevedendo di implementare il supporto in lettura e scrittura del filesystem NTFS., ext2 e seguenti.

Intanto nei primi mesi del 2015 gli sviluppatori hanno lavorato molto per migliorare il supporto delle Dynamic-link library circa l'introduzione delle funzionalità di stampa e il 23 luglio 2015 si è riuscito a stampare il primo documento. Nel mentre gli sviluppatori di ReactOS hanno organizzato un hackfest dal 7 al 12 agosto 2015, nella città di Aachen in Germania, l'iniziativa si rivelò un successo e ha permesso l'aggiunta di moltissime funzioni al sistema operativo.

Il ramo 0.4 e il nuovo sito web 
Con la versione 0.4.0 nel 2016 venne aggiunto il supporto ai dispositivi audio, e con la versione 0.4.4 pubblicata nel febbraio 2017 sono iniziati i primi lavori volti alla creazione di un pieno supporto di stampa. 

Diversi sviluppatori del team di ReactOS durante l'Hackfest 2018 si sono resi conto della cattiva progettazione del sito del loro progetto, il quale ormai risultava superato concettualmente rispetto alle nuove esigenze richieste. Per questo motivo il 21 marzo 2020 ne è stato pubblicato uno completamente nuovo, più ordinato e, soprattutto, orientato al rispetto della privacy nei confronti dell'utenza. Per giunta il suo codice è stato reso open-source e liberamente consultabile sulla piattaforma Github, su cui è stato spostato, dopo diverse richieste, anche il codice del sistema operativo ReactOS, attirando così più sviluppatori volontari, come dimostrato dai dati analizzati dal team. Il 10 aprile è stata pubblicata la versione 0.4.13 che oltre a migliorare ulteriormente il supporto per l'USB ha aggiunto nuove funzionalità al file manager Explorer, un miglioramento al porting per Xbox, miglioramenti al bootloader e nuove applicazioni per l'accessibilità.

Caratteristiche 
È composto interamente da software libero ed è stato scritto completamente da zero, con una tecnica di reverse engineering detta clean room design, perciò non è assolutamente da ritenersi un sistema operativo basato sul kernel Linux e non condivide nulla con l'architettura Unix. È scritto principalmente in C, con alcuni elementi, come ReactOS Explorer, scritti in C++. Il software viene distribuito sotto licenza GNU General Public License anche se alcune componenti sono sotto altre licenze, come la GNU Lesser General Public License e le Licenze BSD.

Come bootloader utilizza Freeloader, mentre il kernel di ReactOS ricalca quello con architettura Windows NT e risulta essere abbastanza stabile, con molte API e ABI pronte per lo sviluppo ad alto livello; è disponibile anche una interfaccia utente di base. ReactOS utilizza ReactOS Explorer, una snella shell grafica simile a Windows Explorer. Nel 2014 l'esplora risorse è stato totalmente riscritto, correggendo diversi bug che lo affliggevano e implementando nuove caratteristiche che rendono l'esplora risorse molto simile a quello di Windows 2003.

Molte applicazioni per Windows risultano funzionare correttamente grazie anche alle librerie del progetto Wine, con cui collabora lo stesso staff di ReactOS. Per consentire di provarlo senza disporre di un computer apposito, oltre alla versione installabile e al Live CD, si possono scaricare dal sito le immagini in formato .ISO per vari software di virtualizzazione.

Oltre al ReactOS Explorer è stato implementato anche una sorta di "gestore applicazioni" da cui è possibile scaricare alcuni software che funzionano senza problemi. ReactOS utilizza parti del progetto GNU. Utilizza inoltre NTFS-3G, un driver NTFS per Linux, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku e altri sistemi operativi.

Architetture supportate 
Le architetture ufficialmente supportate sono x86, amd64, i686 e ARM: su tali piattaforme può essere eseguito con software di virtualizzazione come VMware, VirtualBox e QEMU. Il supporto per Microsoft VirtualPC non è attualmente disponibile, ma verrà ripreso in futuro.

Dato che Windows NT 4.0 funzionava su architetture MIPS, Alpha AXP, e PowerPC oltre che sull'architettura i386, e che i sistemi operativi di derivazione NT come Windows XP e Windows Server 2003 sono stati portati su diverse architetture (AMD64, IA-32, e IA-64), gli sviluppatori di ReactOS hanno lavorato per implementare supporto anche su altre piattaforme: ad esempio il supporto per una variante dell'architettura IA-32 e uno per la piattaforma Xbox sono stati aggiunti nella release 0.2.5 e nel 2005 ci sono già stati tentativi per portare ReactOS su architetture PowerPC e Xen, e il supporto per l'ARM è in lavorazione.

Requisiti minimi di sistema 
I requisiti minimi per avviare ReactOS, nel caso lo si voglia testare su hardware reale, sono:

 64 MB di RAM (consigliati 256 MB)
 hard-disk IDE o SATA, quest'ultimo parzialmente supportato e in via di sviluppo, con minimo 450 MB di spazio con partizione primaria in FAT16/FAT32
 CPU x86 Intel Pentium o superiore
 scheda video VGA (VESA BIOS v2.0 o superiore)
 tastiera e mouse con connettore PS/2 o USB

Le funzionalità di rete attualmente supportate di default è coi seguenti tipi di schede:

 cloni NE2000 (come Realtek 8029)
 AMD PCnet32 LANCE

Accoglienza e critica 
Diverse persone hanno riconosciuto in ReactOS la possibilità di essere una vera alternativa open-source a Microsoft Windows; nella sua rubrica di Free Software Magazine, David Sugar ha notato che ReactOS potrebbe consentire l'uso di applicazioni di versioni vecchie di Windows, le cui API sono state eliminate, come pure la sua capacità di ampliare la base totale installata di software libero nelle case. Ha anche osservato come ReactOS costituisca una risorsa per gli sviluppatori che desiderano conoscere le API di Windows che vengono documentate nel corso della scrittura di applicazioni portatili. Viktor Alksnis ha anche incontrato l'attuale coordinatore del progetto Aleksey Bragin, che ha mostrato una presentazione e dimostrazione del progetto, mostrando ReactOS in esecuzione con Total Commander e Mozilla Firefox.

John C. Dvorak di PC Magazine Columnist ha osservato come l'architettura di Windows NT sia rimasta sostanzialmente la stessa che abbiamo oggi, il che rende il kernel un candidato ideale per la clonazione, e ritiene che ReactOS potrebbe essere "una minaccia più grande di Linux al dominio di Microsoft". Infatti Aleksey Bragin ha dichiarato, in un commento al settimanale tedesco Der Spiegel, che ReactOS è rivolto agli utenti Windows che vogliono rinunciare all'uso di software proprietario commerciale senza dover passare a Linux.

Premi e riconoscimenti 
 Il team di ReactOS ha vinto al Seliger Youth Forum del 2011 il premio come migliore presentazione, aggiudicandosi una somma di 100 000 rubli russi (≈ 2 700 US$) ritirati da Alexander Rechitskiy, uno dei principali sviluppatori del progetto.
 È stato progetto del mese di SourceForge di giugno 2013.
 Nel 2015, ReactOS è stato definito dal Ministro Russo delle Comunicazioni una degna alternativa lato client e server ai più conosciuti sistemi operativi, per merito del suo potenziale nel rendere la Russia meno dipendente dal software proprietario straniero.

Rapporti con altri progetti

Wine 

ReactOS utilizza porzioni di codice del progetto Wine e i suoi sviluppatori lavorano a stretto contatto in modo da poter beneficiare dei progressi nell'implementazione delle API Win32. Solo NTDLL, USER32, KERNEL32, GDI32, e ADVAPI del progetto Wine non sono usati da ReactOS, per via delle differenze di architettura. La restante parte delle DLL di Wine vengono condivise dai due progetti. Entrambi si incentrano su problemi di compatibilità, in modo che anche le poche DLL restanti possano essere usate da ReactOS.

Samba TNG 
Un altro progetto collegato è Samba TNG che implementa dozzine di servizi, quali LSASS, SAM, NETLOGON, SPOOLSS, chiave del successo e della interoperabilità del progetto ReactOS. Il disegno architetturale di Samba e i relativi obiettivi rendono difficile considerarne una integrazione in ReactOS, dato che l'approccio stratificato e modulare di Samba TNG lo rendono appetibile per considerare il porting di ogni servizio in ReactOS.

NDISwrapper 

Ndiswrapper è un altro progetto correlato che mira a ricreare parzialmente il kernel di Windows NT dentro il kernel Linux in modo da avviare i driver creati per Windows in un Linux Box. NDISWrapper include le Api NTOSKRNL oltre a un semplice controller Windows Driver Model.

Longene 
Un progetto correlato, ma che risulta distante dagli obiettivi di ReactOS, è Longene (Linux Unified Kernel), che intende divenire compatibile con i driver e le applicazioni realizzati sia per Microsoft Windows sia per Linux. Si tratta di una versione modificata del kernel Linux che cerca di includere le funzioni chiave dei sistemi operativi Windows e per questo utilizza codice proveniente sia da ReactOS sia da Wine e NDISWrapper.

Versioni derivate 
Sono state create occasionalmente alcuni derivati di ReactOS:

 Ekush OS (2004)
 ReactOS Server
 OpenROS (2013)
 FusionOS (2013)
 ReactOS NG (2015) – con l'obiettivo di essere compatibile con Windows 8
 Greentea OS (2016) – con l'obiettivo di velocizzare e semplificare lo sviluppo del sistema operativo.

Cronologia delle versioni 
Per ottenere maggiori informazioni riguardo alle versioni di ReactOS e alle novità introdotte in esse, è possibile consultare il sito del progetto.

 Legenda

Note

Voci correlate 
 E/OS
 Codice oggetto
 Cooperative Linux
 Linux
 Software libero
 Open source
 Sistema operativo
 TinyKRNL
 Wine
 Windows 95
 Windows NT

Altri progetti

Collegamenti esterni 
 
 
 
  (obsoleto)

Sistemi operativi liberi
Sistemi operativi utilizzanti GNU