ReactOS

Da Wikipedia, l'enciclopedia libera.
ReactOS
Logo
ReactOS-0-3-17.png
Il desktop di ReactOS v0.3.17
Sviluppatore ReactOS Foundation
Famiglia SO Windows NT
Release iniziale 0.0.7 (20 luglio 1998; 18 anni fa)
Release corrente 0.4.3 (16 novembre 2016)
Tipo di kernel Kernel Ibrido
Piattaforme supportate IA-32
Metodo di aggiornamento CD-ROM
Interfacce grafiche ReactOS Explorer
Lingue disponibili Oltre 50 (compreso l'italiano)
Tipologia licenza Software libero
Licenza GNU GPL, LGPL, BSD
Stadio di sviluppo Alpha
Sito web reactos.org

ReactOS (in precedenza FreeWin95) è un sistema operativo libero che si pone l'obiettivo di diventare 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 e 10).

Il termine ReactOS è stato coniato dal fondatore del progetto Jason Filby, uno sviluppatore di Oracle di Durban, Sud Africa. Mentre "OS" sta per "sistema operativo", "React" sta alla disapprovazione di massa verso Microsoft e la sua posizione monopolistica e alla necessità di una "Reazione".

Storia[modifica | modifica wikitesto]

Intorno al 1996, un gruppo di sviluppatori open source avviò un progetto chiamato FreeWin95, con l'intento di implementare un sistema operativo che fosse compatibile con Windows 95. Il progetto si arrestò alle discussioni riguardanti la progettazione del sistema, perché il sistema di 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 ed il nome stesso del progetto fu modificato in ReactOS. ReactOS nacque nel febbraio 1998, con lo sviluppo del kernel e dei driver di base.[1]

ReactOS 0.3.10 in italiano con Mozilla Firefox in esecuzione

Attualmente il progetto si trova nello stato di sviluppo alpha (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.

Gli sviluppatori del progetto hanno lavorato molto per il supporto USB[2], che nella versione 0.3.14 consente solo il funzionamento di tastiere e mouse, ancorché sotto forma di patch, mentre nella versione 0.3.15 supporta anche i dischi USB. Solo dopo nella 0.4.0 è stato aggiunto il supporto ai dispositivi audio. Il lavoro attuale è anche rivolto ad inserire nel sistema un migliorato supporto di rete, un supporto per la multimedialità e un completo supporto hardware plug-and-play oltre, ovviamente, a migliorare la GUI di default. Java e il supporto per applicazioni. NET (e Mono) sono ora 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 apps - possono essere installate[3] e funzionare su ReactOS. Questa carenza strutturale è il peggior difetto del sistema ed è proprio dove gli sviluppatori stanno concentrando la maggior parte degli sforzi. In altre parole, gli sviluppatori stanno lavorando soprattutto per rendere il kernel di ReactOS ancora più compatibile con quello di Windows NT 5.x e 6 e per rendere funzionanti ancora più applicazioni. In futuro si cercherà di implementare il supporto in lettura e scrittura del filesystem NTFS[4], ext2 e seguenti[5].

Il lavoro procede anche nell'implementare il supporto ai videogiochi 3D insieme ad un completo supporto OpenGL; in futuro le applicazioni multimediali e di intrattenimento potranno contare sulle librerie ReactX, frutto di un progetto open source equivalente alle DirectX di Microsoft.

Lo sviluppo procede in maniera limitata per via della mancanza di sviluppatori. Anche se sono 34 quelli indicati come attivi, questo numero impallidisce in confronto al team di circa 1000 sviluppatori che hanno lavorato su Windows 7, organizzati in 25 team differenti, e ogni team con a disposizione una media di 40 sviluppatori.

Dopo una discussione interna, il team di ReactOS ha dato il via a inizio 2012 ad una campagna di raccolta fondi che ha avuto lo scopo di raccogliere 30 mila euro per stipendiare - si legge sul sito - il maggior numero possibile di sviluppatori. Questa cifra può sembrare modesta, ma vanno tenuti in considerazione due fatti:

  • molti programmatori lavorano in nazioni che hanno stipendi bassi se paragonati ad un Paese della Comunità Europea.
  • molti realizzatori volontari di software si accontentano di una somma simbolica a compenso delle proprie attività.

Si prevede che la campagna raccolta fondi si ripeterà anche negli anni a venire, in modo da dare un minimo di supporto economico al progetto che fino ad ora è stato portato avanti durante il tempo libero dei pochi sviluppatori che lo seguono, tutto su base totalmente volontaria. Lo scopo finale è allargare la base di utenza per avere maggiore attenzione mediatica e segnalazioni di bug: a tale scopo il sito del progetto ha subìto una ristrutturazione per presentarsi in modo più accattivante agli utenti estemporanei. Il passaggio a jira (jira.reactos.org) quale sistema di tracciamento bug, ha semplificato di molto la gestione degli stessi, facilitando le cose ai collaboratori che si occupano di trovare e riportare i bachi.

La pianificazione a medio/lungo termine prevede che le versioni del ramo 0.4 saranno le ultime contrassegnate come Alpha, mentre quelle del ramo 0.5 saranno etichettate come beta.

Dal ramo 0.3 al ramo 0.4[modifica | modifica wikitesto]

La versione 0.3.16 è stata precocemente distribuita, con lo scopo di implementare le ultime modifiche in concomitanza del progetto Thorium, un tentativo del progetto di "crescere" in 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 per una vasta gamma di applicazioni a 16 bit. Inoltre, il leadup alla release 0.3.17 ha visto un impressionante giro di test da parte della comunità. Diversi regressioni e bug scoperti nelle candidate release sono stati 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.

Stampa[modifica | modifica wikitesto]

Nell'aprile 2015 da una discussione in ros-dev (il canale irc degli sviluppatori di ReactOS) è partito il lavoro di implementare la stampa correttamente su ROS. Per i primi due mesi si è lavorato molto sulle DLL e il 23 luglio 2015 si è riuscito a stampare il primo documento.

Caratteristiche[modifica | modifica wikitesto]

È composto interamente da software libero ed è stato scritto completamente da zero, con una tecnica detta Clean Room Reverse Engineering. Perciò non è assolutamente 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.[6]

ReactOS 0.3.0 con AbiWord e ReactOS Explorer (versione precedente al 2014) in esecuzione

Il kernel di ReactOS 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.
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.[7][8][9]

La presenza di codice non libero[modifica | modifica wikitesto]

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 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 ad 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. Un fatto analogo può essere ricondotto alla causa intentata da Sony Computer Entertainment contro Connectix nel reverse engineering fatto nel corso dello sviluppo di Virtual Game Station, dove Connectix ebbe successo nel ricorso contro la sentenza iniziale, dicendo 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 considerato come "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.

A dispetto del controllo che dimostrava che tutto il codice fosse stato ripulito delle piccole tracce di codice non libero e che non c'era nessuna prova che il resto del codice fosse illegale, il promotore del RosAsm, Betov, ha sostenuto che la maggior parte dei file sospetti era stata volutamente tralasciata dalla lista dei file selezionati per il controllo. In risposta a ciò, gli sviluppatori di ReactOS hanno rilasciato una dichiarazione pubblica in cui "sono d'accordo che i file, sottolineati da Betov, nel codice di ReactOS [...] appartengono a Microsoft ma dichiarano anche che "sono del parere che l'uso di questi materiali è legale, e non è un problema." La licenza per il codice, disponibile qui: [1], è l'EULA standard che viene fornita con il Windows NT Device Driver Kit, che permette all'utente di" modificare il codice sorgente del campione ("Codice Campione") per progettare, sviluppare e testare Software di prodotto, e di riprodurre e distribuire il codice di esempio con le modifiche in oggetto, il codice sorgente e le forme". Non è comunque chiaro se un tale accordo sarebbe applicabile ad un sistema operativo "clone".

Preoccupazioni sono state sollevate anche su ReactOS, più in generale, a causa delle diverse definizioni di Clean Room Reverse Engineering. ReactOS potrebbe essere infatti potenzialmente minacciato dai brevetti, come ad esempio il supporto per il lungo file name kludge che risulta essere brevettato.

Nonostante tutte le preoccupazioni e le accuse non confermate mosse verso il progetto, il codice sorgente di ReactOS è il primo posto in cui guardare (e quindi aperto per un'eventuale ispezione).

Accoglienza e critica[modifica | modifica wikitesto]

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, le quali 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.

Rapporti con altri progetti[modifica | modifica wikitesto]

ReactOS utilizza porzioni di codice del progetto Wine, e lavora a stretto contatto con i suoi sviluppatori 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.[10]

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 è 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 una Linux Box. NDISWrapper include le Api NTOSKRNL oltre a un semplice controller WDM.

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 che da Wine e NDISWrapper.

NTFS-3G. Si tratta di un driver NTFS per Linux, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku e altri sistemi operativi.

Architetture supportate[modifica | modifica wikitesto]

Gli sviluppatori del progetto stanno lavorando attualmente su diversi port di ReactOS:

  • x86 (funzionante)
  • PowerPC (sospeso)
  • ARM (sospeso)
  • AMD64 (sospeso)

ReactOS funziona con software di virtualizzazione come VMware, VirtualBox e QEMU (il supporto per Microsoft VirtualPC è attualmente non disponibile ma verrà ripreso in futuro).

Dato che Windows NT 4.0 funzionava su architetture MIPS, Alpha AXP, e PowerPC oltre che nell'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 mosso i primi passi per portare anche ReactOS su diverse architetture. Per 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 sforzi per portare ReactOS su architetture PowerPC e Xen ci sono già stati nel 2005. Attualmente si sta lavorando per rendere funzionante ReactOS nella piattaforma ARM con la speranza che un pocketPC con ReactOS risulti migliore grazie a un OS completamente funzionante e compatibile con applicativi Windows.

Requisiti minimi di sistema[modifica | modifica wikitesto]

I requisiti minimi per avviare ReactOS (nel caso lo si voglia testare su hardware reale) sono:[11]

  • 64 MB di RAM (consigliati 256 MB)
  • Hard-disk IDE o SATA (quest'ultimo parzialmente supportato ed 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 funzionano con i seguenti tipi di schede:[11]

  • cloni NE2000 (come Realtek 8029)
  • AMD PCnet32 LANCE

Altri tipi di schede possono funzionare grazie ai driver disponibili per Windows (2000, XP) dato che il supporto binario di ReactOS può permetterne l'uso.

Cronologia delle versioni[modifica | modifica wikitesto]

  • Legenda
Colore Significato
Rosso Versione non più supportata
Verde Versione corrente
Blu Versione futura
Versioni di ReactOS
Versione di Sistema Data di distribuzione Informazioni sulla Versione
0.2.0 2004-01-25 Prima versione con GUI funzionante
0.2.2
0.2.5
2004-04-27
2005-01-02
Bug Fix
0.2.8 2005-10-29 Aggiunta la rilevazione di VMWare, Riscrittura di CSRSS
0.3.0 2006-08-27 Prima versione che supporta ufficialmente lo stack di rete
0.3.1 2007-03-10 Incluso un basilare Download manager, iniziale riscrittura del Kernel
0.3.2 saltata Branch creato, ma versione mai resa pubblica
0.3.3 2007-09-12 Miglioramenti al Kernel e al sottosistema win32k
0.3.4 2008-01-22 Riscrittura del Registro, Remote Desktop Client e Plug 'N' Play
0.3.5 2008-06-30 Bug Fix
0.3.6 2008-08-06 Supporto RTL
0.3.7 2008-11-04 Migliorie per il supporto x86_64, MSVC, Nuovi Stack
0.3.8 2009-02-04 Intro a PSEH e supporto agli HDD con più partizioni nel LiveCD
0.3.9 2009-04-26 Consumo RAM ridotto a 32MB, Faster Hyperspace Mapping, Supporto iniziale per il Sonoro
0.3.10 2009-07-05 Supporto iniziale per SATA, Supporto per Mouse/Tastiera USB, Clone di Microsoft Paint, Supporto MSVC
0.3.11 2009-12-16 Riscrittura di kdcom, font Cinese e Coreano, Compatibilità con Firefox 3.5, Opera, OpenOffice, VLC 1.1 e Skype
0.3.12 2010-10-20 Gestione della memoria migliorata, versione a 64 bit e altre migliorie
0.3.13 2011-03-22 Miglioramenti nelle aree: Gestione della memoria, supporto audio/video, stabilità complessiva. Introdotto un nuovo Heap Manager.
0.3.14 2012-02-07 Minori artefatti grafici, nuovo stack TCP/IP, supporto al wireless, introduzione stack USB (tastiere e mouse funzionano), SHELL32 riscritta in C++, compatibilità al 100% con MSVC.
0.3.15 2013-05-30 Parziale sistemazione del Memory Manager, diminuzione di instabilità e BSOD, migliorie alla UI, raffinamento dello stack USB, ed altro.
0.3.16 2014-02-06 Riscrittura del CSRSS, parziale riscrittura della shell32, supporto temi, nuovo driver della scheda di rete RTL8139, supporto alle nuove versioni di QEMU.
0.3.17 2014-11-05 Inclusione di NTVDM (ancora in fase di progettazione) che fornisce il supporto a una vasta gamma di applicazioni a 16 bit; Bug Fix.
0.4.0 2016-02-16 Supporto completo dei temi, completamento di shell32 per il nuovo explorer e USER32, Supporto migliorato per USB, audio, networking e reti Wi-Fi. Miglioramenti sulla gestione di memoria, la grafica 3D e 2D, il registro di sistema e NTVDM. Aggiunto il supporto in lettura/scrittura al filesystem ext2 e, per ora, quello in sola lettura al filesystem NTFS.
0.4.1 2016-05-17 Migliorato il supporto alle applicazioni che utilizzano Microsoft C++ Library e bug fixing in generale. Supporto iniziale per alcuni tra i più famosi filesystem di Linux, tra cui Brtfs.
0.4.2 2016-08-16 Bug fix per quanto riguarda il ReactOS Explorer, migliorato il supporto nativo di Brtfs e esteso il supporto ai filesystem ReiserFS e UFS/FFS. Introdotto inoltre .NET Framework 2.0 e aggiunto il supporto a .NET Framework 4.0
0.4.3 2016-11-16 Introdotta la nuova libreria winsock, iniziato il supporto alle sezioni e bug fix vari.
0.5.0 Release futura Supporto in lettura e scrittura del file system NTFS, supporto per i driver WDM (schede video comprese), miglioramenti riguardanti la stampa e implementazione del DirectX Core.

Note[modifica | modifica wikitesto]

  1. ^ Storia di ReactOS, su ReactOS Website. URL consultato il 13 giugno 2009.
  2. ^ (EN) USB Stack, su ReactOS Wiki. URL consultato il 13 giugno 2009.
  3. ^ http://www.reactos.org/wiki/Testing_Central#TESTING_APPS
  4. ^ (EN) File Sytestems/NTFS, su ReactOS Wiki. URL consultato il 13 giugno 2009.
  5. ^ (EN) File Sytestems/ext2, su ReactOS Wiki. URL consultato il 13 giugno 2009.
  6. ^ Licenza di ReactOS, su ReactOS Website. URL consultato il 13 giugno 2009.
  7. ^ (EN) Build environment, reactos.org. URL consultato il 15 dicembre 2016.
  8. ^ (EN) string.c, svn.reactos.org. URL consultato il 15 dicembre 2016.
    «based on the GNU C library code».
  9. ^ (EN) [Needed applications 15 dicembre 2016] .
  10. ^ FAQ di ReactOS, reactos.org. URL consultato il 13 giugno 2009.
  11. ^ a b (EN) Installing ReactOS, su ReactOS Wiki. URL consultato il 13 giugno 2009.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]