ReactOS

Ετυμολογία

Το όνομα 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

Το 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.

Χρηστικότητα

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

Επιρροή του ReactOS

Αρκετοί έχουν αναγνωρίσει το 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.