ReactOS

Το **ReactOS** (React Operating System) είναι ένα λειτουργικό σύστημα ανοικτού κώδικα ηλεκτρονικών υπολογιστών, το οποίο στοχεύει να είναι συμβατό με εφαρμογές και οδηγούς υλικού που προορίζονται για τα Microsoft Windows NT στις εκδόσεις 5.x και πάνω (Windows 2000 και τους διαδόχους τους). Αποτελεί συνέχεια μιας προηγούμενης προσπάθειας δημιουργίας ενός κλόνου των Windows 95. Η ανάπτυξή του ξεκίνησε το 1998 και από τότε συνεχίζεται με την προσθήκη χαρακτηριστικών που ήδη υπάρχουν στα Windows.

Το ReactOS είναι κυρίως γραμμένο στη γλώσσα προγραμματισμού C, με μερικά στοιχεία του, όπως τον Περιηγητή ReactOS, γραμμένα σε C++. Το έργο μεταφέρεται και σε αρχιτεκτονικές επεξεργαστών ARM και AMD64. Εν μέρει, υλοποιείται η λειτουργικότητα του Windows API, μέσω της περίληψης στοιχείων από το Επίπεδο συμβατότητας για λειτουργικά συστήματα παρόμοια με Unix Wine, αλλά και μέσω πρωτότυπης υλοποίησης χαρακτηριστικών από τους προγραμματιστές. Ωστόσο, η πρόοδος καθυστερεί λόγω έλλειψης προγραμματιστών με τις απαραίτητες ικανότητες.

Ο κώδικας περνάει από εκτενή εξέταση για να προστατεύεται από νομικά προβλήματα, ώστε η υλοποίηση του Windows API να γίνεται μόνο μέσω διαδικασίας αντίστροφης μηχανικής «καθαρού δωματίου». Ο έλεγχος αυτός γίνεται μετά από δύο ανεξάρτητους ισχυρισμούς ενός προηγούμενου προγραμματιστή αλλά και ενός τρίτου μέρους, το 2006, ότι το έργο είτε περιείχε κώδικα από τα Windows ανακτημένο μέσα από αντισυμβολομετάφραση (disassembly), είτε αρχεία κατ' ευθείαν από τη Microsoft. Κανένας από τους δύο ισχυρισμούς δεν είχε επιζήμιες νομικές συνέπειες για το έργο, και η ανάπτυξή του συνεχίζεται μέχρι σήμερα.

Αξιοσημείωτα χαρακτηριστικά του ReactOS είναι η συγκέντρωση πληροφοριών για μη τεκμηριωμένα API των Windows, και γενικότερα η λειτουργία του ως ανοικτού κώδικα που αντικαθιστά πλήρως τα Windows. Ο στόχος του έργου, σύμφωνα με το ίδιο, είναι να επιτρέψει στους χρήστες των Windows να αποφύγουν πλήρως τη χρήση ιδιόκτητου εμπορικού λογισμικού χωρίς να χρειαστεί να περάσουν σε ένα εντελώς διαφορετικό λειτουργικό σύστημα, όπως το Linux. Ωστόσο, η έλλειψη εταιρικής υποστήριξης και προγραμματιστών πλήρους απασχόλησης έχουν καθυστερήσει την επίτευξη αυτού του στόχου.

## Ετυμολογία
Το όνομα ReactOS το επινόησε ο ιδρυτής του έργου, Jason Filby, προγραμματιστής στην Oracle από το Durban της Νοτίου Αφρικής. Ο όρος «OS» σημαίνει «Operating System» (λειτουργικό σύστημα) και ο όρος «react» (αντίδραση) αναφέρεται στην εναντίωση της ομάδας στην μονοπωλιακή στάση της Microsoft.

## Ιστορία
### Πρώιμη ανάπτυξη: από το FreeWin95 στο ReactOS
Γύρω στο 1996, μια ομάδα από προγραμματιστές ελεύθερου λογισμικού και λογισμικού ανοικτού κώδικα ξεκίνησαν ένα έργο με το όνομα «*FreeWin95*» για να υλοποιήσουν έναν κλώνο των Windows 95. Το έργο καθυστέρησε πολύ στις συζητήσεις για το σχεδιασμό ενός τέτοιου συστήματος.

Ενώ το FreeWin95 είχε ξεκινήσει με πολύ μεγάλες προσδοκίες, μέχρι το 1997 δεν υπήρχαν ακόμα καθόλου κυκλοφορίες του λογισμικού. Ως αποτέλεσμα, τα μέλη του έργου, με συντονιστή τον Jason Filby, συνενώθηκαν για να το αναβιώσουν. Το νέο έργο στόχευε να αναπαράγει τη λειτουργικότητα των Windows NT. Κατά τη δημιουργία αυτού του νέου έργου επιλέχθηκε και το όνομα *ReactOS*. Το έργο ξεκίνησε να αναπτύσσεται το Φεβρουάριο του 1998 με τη δημιουργία της βάσης ενός νέου πυρήνα NT και των βασικών οδηγών.

### Εσωτερική εξέταση
Στις 27 Ιανουαρίου 2006, το ReactOS αποφάσισε προσωρινά να διακόψει την πρόσβαση σε αρχεία του λειτουργικού συστήματος σε οποιονδήποτε δεν ήταν προγραμματιστής, μετά από μια συνάντηση με θέμα την επιβεβαίωση των ισχυρισμών ότι το ReactOS περιείχε κώδικα που ανήκε στην Microsoft. Πάντως, η Microsoft αρνήθηκε να κάνει κάποιο σχόλιο όταν ερωτήθηκε από το NewsForge. Επειδή το ReactOS είναι ελεύθερο και ανοικτού κώδικα έργο προγραμματισμού, οι ισχυρισμοί πυροδότησαν μια αρνητική αντίδραση από την κοινότητα του ελεύθερου λογισμικού. Συγκεκριμένα, το Wine απαγόρευσε σε μερικούς προγραμματιστές του ReactOS να συνεισφέρουν στον κώδικα του Wine, εκφράζοντας ανησυχίες για την προέλευση του κώδικα.

Οι ισχυρισμοί έγιναν στις 17 Ιανουαρίου 2006, από τον πρώην προγραμματιστή Hartmut Birr στη λίστα ταχυδρομείου των προγραμματιστών του ReactOS (ros-dev), ο οποίος δήλωσε ότι το ReactOS περιείχε κώδικα που προέκυψε από αντισυμβολομετάφραση των Microsoft Windows.. Ο κώδικας τον οποίο αμφισβήτησε ο Birr αφορούσε στη συνάρτηση BadStack στο syscall.S καθώς και σε άλλα μη ορισμένα αντικείμενα. Συγκρίνοντας αυτή τη συνάρτηση με αντισυμβολομεταφρασμένα αρχεία σε δυαδική μορφή από τα Windows XP, ο Birr στήριξε την άποψη ότι η συνάρτηση BadStack ήταν απλή αντιγραφή και επικόλληση από τα Windows XP, δεδομένου ότι ήταν τα ίδια. Ο Alex Ionescu, συγγραφέας του κώδικα, απάντησε ότι ενώ το δυαδικό από τα Windows XP όντως είχε αντισυμβολομεταφραστεί και μελετηθεί, ο κώδικας δεν ήταν απλά αντιγραμμένος και επικολλημένος, αλλά υλοποιημένος ξανά. Ο λόγος για τον οποίο οι συναρτήσεις ήταν ίδιες, όπως είπε ο Ionescu, ήταν επειδή υπήρχε μόνο ένας πιθανός τρόπος να υλοποιηθεί η συνάρτηση.

Σε μια δήλωση στη σελίδα του, το ReactOS αναφέρθηκε σε διαφορετικούς νομικούς ορισμούς του τι αποτελεί αντίστροφη μηχανική «καθαρού δωματίου», ως αιτία της διένεξης, καθώς σε μερικές χώρες συμπεριλαμβανομένων την Ηνωμένων Πολιτειών, απαιτείται η επανυλοποίηση να γράφεται από διαφορετικό άτομο από αυτόν που εξέτασε τον αρχικό κώδικα μέσω αντισυμβολομετάφρασης, ενώ άλλες χώρες επιτρέπουν να γίνονται από το ίδιο άτομο. Συνεπώς, το ReactOS ξεκαθάρισε ότι η Δήλωση Πολιτικής του για Πνευματική Ιδιοκτησία θα συμμορφώνεται με τον Αμερικανικό νόμο. Κατόπιν, έγινε μια εσωτερική εξέταση όλου του πηγαίου κώδικα για να εξασφαλιστεί ότι μόνο αντίστροφη μηχανική καθαρού δωματίου εφαρμόστηκε, και όλοι οι προγραμματιστές υπέγραψαν μια συμφωνία δέσμευσης προς τις πολιτικές του έργου σχετικά με την αντίστροφη μηχανική. Οι συνεισφέροντες στην ανάπτυξη δεν επηρεάστηκαν από αυτά τα γεγονότα, και όλη η πρόσβαση στα εργαλεία ανάπτυξης λογισμικού αποκαταστάθηκε πολύ σύντομα. Το Σεπτέμβριο του 2007, με την εξέταση του κώδικα να πλησιάζει στο τέλος της, αφαιρέθηκε η κατάσταση «Υπό εξέταση» από την ιστοσελίδα του ReactOS. Παρότι η εξέταση ολοκληρώθηκε, μερικές λεπτομέρειές της δε δημοσιεύτηκαν καθώς ήταν μόνο μια εσωτερική προσπάθεια για να εξασφαλιστεί η νομιμότητα του κώδικα.

Σε ένα ξεχωριστό περιστατικό, ο προγραμματιστής του RosAsm, ο Betov, ισχυρίστηκε ότι τα πιο ύποπτα αρχεία έλειπαν από τη λίστα αρχείων προς εξέταση. Ωστόσο, το ReactOS εκτιμά ότι τα αμφισβητούμενα αρχεία ενσωματώθηκαν από το Sanos. Στο μεταξύ, μετά το αρχικό του κλείδωμα, ο πηγαίος κώδικας του ReactOS παραμένει ανοικτός προς εξέταση.

## Ανάπτυξη
Το ReactOS είναι κυρίως γραμμένο στη γλώσσα προγραμματισμού C, με μερικά στοιχεία του, όπως τον ReactOS Explorer, να είναι γραμμένα σε C++. Το έργο εξαρτάται από το MinGW για τη μεταγλώττισή του, και συνεισφέρει στην ανάπτυξή του μέσω της υποβολής διορθώσεων στα συστατικά του.

Οι προγραμματιστές στοχεύουν να κάνουν τον πυρήνα πιο συμβατό με τα Windows NT έκδοση 5.2 (Windows Server 2003), τα API με τα Windows NT 6 (Windows Vista), και να προσθέσουν υποστήριξη για περισσότερες εφαρμογές και υλικό. Το DirectX υποστηρίζεται μέσω του ReactX, που αναπτύχθηκε εσωτερικά. Υπάρχει εγγενής υποστήριξη για απόδοση γραφικών (rendering) σε 2 διαστάσεις με επιτάχυνση υλικού, ενώ άλλη λειτουργικότητα μεταφέρεται στο OpenGL, ελλείψει άλλης λύσης.

Η ανάπτυξη είναι περιορισμένη λόγω της έλλειψης ατόμων με τη σχετική εμπειρία. Μέχρι τον Ιανουάριο του 2011, στη σελίδα του ReactOS στο Ohloh, στις πληροφορίες κάτω από τον τίτλο «Very large, active development team», αναφέρονται 34 προγραμματιστές που έχουν συνεισφέρει τους τελευταίους 12 μήνες και στο σύνολο 107 υφιστάμενοι και προηγούμενοι χρήστες που συνεισέφεραν κώδικα στο έργο μέσω του Subversion από τη δημιουργία του. Σε αντίθεση, περίπου χίλιοι προγραμματιστές εργάστηκαν πάνω στα Windows 7, οργανωμένοι σε 25 ομάδες από περίπου 40 προγραμματιστές η κάθε μία. Επιπρόσθετα, στην παρουσίασή του στο Hackmeeting 2009 στο Μιλάνο, ο προγραμματιστής του ReactOS, Michele C. σημείωσε ότι οι περισσότεροι από τους προγραμματιστές μαθαίνουν για την αρχιτεκτονική των Windows ενώ δουλεύουν πάνω στο ReactOS, χωρίς προηγούμενη γνώση.

### Εξαρτήσεις
Το ReactOS αξιοποιεί κώδικα από άλλα έργα όπου αυτό είναι δυνατό, ώστε οι προγραμματιστές να αποφεύγουν τη διπλή δουλειά για υφιστάμενη λειτουργικότητα, και να αφοσιώνονται στη συμβατότητα με τα Windows σε δυαδικό επίπεδο.

#### Wine
thumb|400px|Απλοποιημένο διάγραμμα αρχιτεκτονικής του ReactOS. Οι εξαρτήσεις στο Wine υποδεικνύονται με το λογότυπό του.Το ReactOS χρησιμοποιεί τμήματα του έργου Wine ώστε να επωφελείται από την πρόοδο του Wine στην υλοποίηση του Win32 API. Τα συστατικά NTDLL, USER32, KERNEL32, GDI32 και ADVAPI του Wine δε μπορούν να χρησιμοποιηθούν από το ReactOS λόγω διαφορών στην αρχιτεκτονική, αλλά τα άλλα μέρη του κώδικα μπορούν μοιραστούν μεταξύ των δύο έργων. Τα συστατικά που δεν είναι διαθέσιμα από το Wine, όπως ο πυρήνας, αναπτύσσονται ξεχωριστά.

Επίσης, το πειραματικό branch Arwinss δημιουργήθηκε ως ένα εναλλακτικό μέσο παροχής βελτιωμένης υποστήριξης USER32 και GDI32 μέσω μιας εναλλακτικής υλοποίησης του Win32 API. Ενώ το αρχικό υποσύστημα Win32 ήταν πιστά σχεδιασμένο βάσει του αντίστοιχού του στα Windows, το Arwinss συνδυάζει την αρχιτεκτονική εκείνου του υποσυστήματος με την αντίστοιχη του Wine. Για αυτό το σκοπό, το Arwinss χρησιμοποιεί τις βιβλιοθήκες GDI32 και USER32 του Wine, με μερικές αλλαγές για να εκμεταλλεύεται πληρέστερα την τρέχουσα συμβατότητα λογισμικού του Wine. Το Arwinss επίσης επιτρέπει στο χρήστη προαιρετικά να χρησιμοποιεί ένα απομακρυσμένο X server αντί για την τοπική οθόνη.

#### OSKit/FreeBSD
Σε μια σύντομη συνέντευξη στο Network Performance Daily, ο Art Yerkes, τότε προγραμματιστής στη Secret Level, ανέφερε ότι εισήγαγε το μέρος για το TCP της μεταφοράς του OSKit για τη στοίβα δικτύωσης του FreeBSD ως ένα μέρος της προσπάθειας να ξεκαθαρίσει και να βελτιώσει τη λειτουργικότητα δικτύωσης. Άλλα μέρη της στοίβας δικτύωσης του ReactOS όπως οι υλοποιήσεις για πρωτόκολλα όπως το IP, αναπτύσσονται εσωτερικά.

#### Άλλες
Το FreeType χρησιμοποιείται για την εμφάνιση των γραμματοσειρών στο γραφικό περιβάλλον, ενώ το Mesa 3D παρέχει εμφάνιση OpenGL. Οι οδηγοί Serial ATA παρέχονται από το UniATA. Μια που η τελευταία ενημέρωση του οδηγού UniATA έγινε στις 10 Σεπτεμβρίου 2008, το UniATA πλέον συντηρείται από τους ίδιους τους προγραμματιστές του ReactOS. Το έργο έχει επίσης πειραματιστεί με τη χρήστης της βιβλιοθήκης FullFAT κατά την εμαναδημιουργία του FAT Installable File System.

### Υποστήριξη αρχιτεκτονικών
Το ReactOS έχει μεταφερθεί στις εξής αρχιτεκτονικές:
* IA-32
* Xbox (έχει σταματήσει)
* PowerPC
* ARM (χωρίς πλήρη εκκίνηση)
* AMD64 (χωρίς πλήρη εκκίνηση)

Τα Windows NT 4.0 είχαν μεταφερθεί σε αρχιτεκτονικές άλλες από την IA-32, όπως τις MIPS, Alpha AXP, και PowerPC, και οι απόγονοί τους το ίδιο, με τα Windows XP να έχουν μεταφερθεί σε AMD64, και τα Windows Server 2003 σε AMD64 και Itanium. Για αυτό το λόγο, οι προγραμματιστές του ReactOS έχουν εν μέρει μεταφέρει το ReactOS σε AMD64 και ARM. Η υποστήριξη για Xbox, που είναι παραλλαγή της αρχιτεκτονικής IA-32, προστέθηκε μέσω της χρήσης ενός HAL ειδικού για αρχιτεκτονική, παρότι αυτό, μαζί με τη μεταφορά σε PowerPC, δεν αναπτύσσονται ενεργά πλέον.

## Χρηστικότητα
Μέχρι και τον Ιανουάριο του 2011, η ομάδα προγραμματιστών του ReactOS θεωρεί ότι το ReactOS 0.3.12 είναι λογισμικό σε στάδιο alpha, με πολλά χαρακτηριστικά να λείπουν, και ακατάλληλο για καθημερινή χρήση. Ο πυρήνας δεν είναι πλήρης, και λίγες εφαρμογές των Windows τρέχουν χωρίς προβλήματα. Ωστόσο, το λειτουργικό σύστημα θεωρείται αρκετά σταθερό, και έχει πολύ μικρούς χρόνους εγκατάστασης και εκκίνησης.

Η μελλοντική σειρά εκδόσεων 0.4 θα είναι επίσης σε στάδιο alpha, ενώ η σειρά 0.5 θα είναι σε στάδιο beta, κατάλληλη για καθημερινή χρήση αλλά χωρίς να έχει ακόμα υποστεί ενδελεχή έλεγχο ποιότητας.

## Επιρροή του ReactOS
[thumb|Ο Aleksey Bragin (αριστερά), συντονιστής του ReactOS, δείχνει τη λειτουργικότητα του ReactOS στον [Viktor Alksnis.]] Αρκετοί έχουν αναγνωρίσει το ReactOS και τις συνέπειες ενός ανοικτού κώδικα που αντικαθιστά των Windows.

Στη στήλη του για το Free Software Magazine, ο David Sugar σημείωσε ότι το ReactOS θα επιτρέπει τη χρήση εφαρμογών που εξαρτώνται από παλαιότερες εκδόσεις των Windows, των οποίων τα API έχουν ξεπεραστεί. Αναγνώρισε επίσης την προοπτική της επέκτασης της βάσης χρηστών ελεύθερου λογισμικού, και επίσης τη διάθεση τεκμηρίωσης για προγραμματιστές που θέλουν να γνωρίσουν τα Windows API, για να γράψουν φορητές εφαρμογές. Ο Viktor Alksnis έχει επίσης συναντηθεί με τον τρέχοντα συντονιστή του έργου, τον Aleksey Bragin, ο οποίος έκανε μια παρουσίαση και μια επίδειξη του έργου, δείχνοντας το ReactOS να τρέχει με τον Total Commander και τον Mozilla Firefox.

Στο PC Magazine, ο συγγραφέας John C. Dvorak σημείωσε ότι η αρχιτεκτονική των Windows NT έχει παραμείνει σχεδόν ίδια μέχρι σήμερα, κάνοντάς την ιδανική για κλωνοποίηση, και πιστεύει ότι το ReactOS θα μπορούσε να είναι «μεγαλύτερη απειλή από το Linux για την κυριαρχία της Microsoft». Πράγματι ο Aleksey Bragin έχει αναφέρει σε ένα σχόλιο στο εβδομαδιαίο Γερμανικό περιοδικό Der Spiegel ότι το ReactOS απευθύνεται σε χρήστες των Windows οι οποίοι θέλουν να αποφύγουν τη χρήση ιδιόκτητου εμπορικού λογισμικού αλλά δε θέλουν να περάσουν σε Linux.

Ωστόσο, το ReactOS αντιμετωπίζει μερικές προκλήσεις. Σε απάντηση στην στήλη του Dvorak, η δημοσιογράφος του ZDNet, Dana Blankenhorn σημείωσε ότι η έλλειψη εταιρικής οικονομικής υποστήριξης και συνεργασίας έχει αυτή τη στιγμή καταστήσει το έργο ακίνδυνο για τη Microsoft. Συμφωνώντας, ο Thom Holwerda του OSNews κατηγοριοποίησε το ReactOS κάτω από μια οικογένεια από λειτουργικά συστήματα τα οποία ως χόμπυ αναπτύσσονται από μικρές ομάδες προγραμματιστών οι οποίοι δουλεύουν στον ελεύθερό τους χρόνο, και δεν έχουν την οικονομική υποστήριξη των πιο mainstream συστημάτων, ούτε τη σημασία των παρελθόντων, όπως το RISC OS.

## Σχετικά έργα
* Το ReactOS μοιράζεται μερικές εξαρτήσεις με το Wine.
* Άλλα σχετικά έργα είναι τα Samba/Samba TNG, τα οποία υλοποιούν τα LSASS, SAM, NETLOGON, Print spooling και άλλες δικτυακές υπηρεσίες των Windows.
* Ένα παραπλήσιο έργο στο επίπεδο της αρχιτεκτονικής είναι ο Linux Unified Kernel ο οποίος σκοπεύει να είναι δυαδικά συμβατός με εφαρμογές και οδηγούς υλικού φτιαγμένους και για Microsoft Windows και για Linux. Αυτός ο πυρήνας εισάγει όλα τα κύρια χαρακτηριστικά του πυρήνα των Windows μέσα στον πυρήνα του Linux.
* Το Ndiswrapper αναδημιούργησε εν μέρει έναν πυρήνα των Windows NT μέσα στον πυρήνα του Linux ώστε να εκτελούνται σχετικά καινούριοι οδηγοί υλικού των Windows.
* Ανεξάρτητα αλλά σχεδόν ταυτόχρονα με το NDISwrapper, ο Bill Paul της εταιρείας Wind River Systems ανέπτυξε ένα παρόμοιο σύστημα, γνωστό  ως Project Evil ή The NDISulator, για το FreeBSD. Έκτοτε έχει μεταφερθεί και στο NetBSD, αλλά όχι στο OpenBSD, λόγω διαφορετικής πολιτικής του τελευταίου. Το NDISulator υπολείπεται κάποια από τη λειτουργικότητα του NDISwrapper, όπως η υποστήριξη USB.
* Το NTFS-3G, οδηγός NTFS για Linux, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku, και άλλα λειτουργικά συστήματα.

## Απαιτήσεις συστήματος
* Επεξεργαστής συμβατός με x86, Pentium ή νεότερος
* 24 MB RAM (optimal 128MB)
* σκληρό δίσκος IDE με τουλάχιστον 150 MB ελεύθερο χώρο
* Κατάτμηση εκκίνησης FAT16/FAT32
* Κάρτα γραφικών VGA με μνήμη 2 MB
* Οδηγός CD-ROM
* Κανονικό πληκτρολόγιο
* Ποντίκι συμβατό με PS/2 ή σειριακό συμβατό με Microsoft Mouse

## Αναφορές


## Εξωτερικοί σύνδεσμοι

* Επίσημος ιστότοπος
* Το ReactOS στο SourceForge.net
* Ο ReactOS Explorer
* Στιγμιότυπα οθόνης του ReactOS
* Συνέντευξη με τον Steven Edwards των ReactOS και Wine (WineHQ)
* Λεπτομερής ανάλυση του ReactOS
* Μια αντίδραση στο ReactOS – David Sugar

Κατηγορία:Λειτουργικά συστήματα
Κατηγορία:Ελεύθερο λογισμικό προγραμματισμένο σε C++
Κατηγορία:Ελεύθερο λογισμικό