ReactOS

Da Wikipedia, l'enciclopedia libera.
React OS
Logo
Il desktop di ReactOS v0.3.9
Il desktop di ReactOS v0.3.9
Sviluppatore ReactOS Foundation
Famiglia SO Windows NT
Modello del sorgente Open source
Release iniziale 0.0.7 (20 luglio 1998)
Release corrente 0.3.16 (6 febbraio 2014)
Tipo di kernel Kernel Ibrido
Piattaforme supportate IA-32
Licenza Software libero
Stadio di sviluppo Alpha
Sito web reactos.org

ReactOS (in precedenza FreeWin95) è un sistema operativo libero/open source 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 e Windows 7).

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

Storia[modifica | modifica sorgente]

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

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 2005.

Gli sviluppatori del progetto attualmente stanno lavorando al supporto USB[2], che nella versione 0.3.14 consente il funzionamento di tastiere e mouse, ancorché sotto forma di patch: il supporto completo allo stack USB verrà completato in un futuro rilascio: la versione 0.3.15 supporta solo tastiere, mouse e dischi usb, mentre il supporto a stampanti e periferiche audio è tuttora assente. 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 "funzionicchiare" 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 soprattutto lavorando per rendere il kernel di ReactOS 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 al filesystem NTFS[4] e 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 attualmente 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 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 nei "ritagli di tempo" e 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. Gli sviluppatori promettono che le versioni di questo ramo di sviluppo saranno pronte per l'uso di tutti i giorni, nonostante non presenteranno caratteristiche importanti come il supporto all'NTFS, un obiettivo difficile e che si prevede non sarà raggiunto che in un futuro remoto.

Curiosità: l'autore del motto Open your windows to freedom è l'italiano Marco Ravich.

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

La versione 0.3.16 è stata precocemente rilasciata, con lo scopo di implementare le ultime modifiche in concomitanza del progretto Thorium, un tentativo del Progetto di "crescere" in visibilità tramite una campagna - fallita- di raccolta fondi sulla piattaforma kickstarter. Nelle previsoni del progetto, non ci sarà una 0.3.17 ma si passerà al nuovo ramo di sviluppo, in modo da sottolineare la crescita avuta dal codice in questi anni di miglioramenti.

Caratteristiche[modifica | modifica sorgente]

È composto interamente da software libero ed è realizzato completamente da capo, con una tecnica detta Clean Room Reverse Engineering. Non è un sistema operativo basato su Linux, e non condivide niente 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 la Licenza BSD.[6]

ReactOS con AbiWord e ReactOS Explorer 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.
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.

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

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 codice (copiato in maniera pari-pari) 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 Clean Room reverse Engineering. Dato che ReactOS è rilasciato 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 fornito 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 potenzialmente minacciato dai brevetti a causa della realizzazione di alcuni elementi (come 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 sorgente]

Diverse persone hanno riconosciuto in ReactOS la possibilità di essere una vera alternativa open-source a 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 sorgente]

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.[7]

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 sorgente]

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 sorgente]

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

  • 64MB di RAM (consigliati 256 MB)
  • Harddisk IDE o SATA (quest'ultimo parzialmente supportato ed in via di sviluppo) min. 350MB con partizione primaria 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:[8]

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

Altri tipi di schede possono funzionare con i driver usabili su Windows (2000, XP) dato che il supporto di ReactOS ai driver per Windows va via via migliorando.

Cronologia delle versioni[modifica | modifica sorgente]

  • Legenda
Colore Significato Colore Significato
Rosso Release non più supportata Giallo Release ancora supportata
Verde Release corrente Blu Release futura
Versioni di ReactOS
Versione di Sistema Data di rilascio 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
Solo Bug Fix
0.2.8 2005-10-29 Rileva 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 Solo 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.

Note[modifica | modifica sorgente]

  1. ^ Storia di ReactOS in ReactOS Website. URL consultato il 13 giugno 2009.
  2. ^ (EN) USB Stack in ReactOS Wiki. URL consultato il 13 giugno 2009.
  3. ^ http://www.reactos.org/wiki/Testing_Central#TESTING_APPS
  4. ^ (EN) File Sytestems/NTFS in ReactOS Wiki. URL consultato il 13 giugno 2009.
  5. ^ (EN) File Sytestems/ext2 in ReactOS Wiki. URL consultato il 13 giugno 2009.
  6. ^ Licenza di ReactOS in ReactOS Website. URL consultato il 13 giugno 2009.
  7. ^ FAQ di ReactOS. URL consultato il 13 giugno 2009.
  8. ^ a b (EN) Installing ReactOS in ReactOS Wiki. URL consultato il 13 giugno 2009.

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]