ReactOS
ReactOS（リアクト オーエス）は、Microsoft Windows NT系（2000以降）とアプリケーション及びドライバに於けるバイナリ互換性を目指すオープンソースなオペレーティングシステムである。
ReactOSは、主にC言語で実装されているが、「ReactOS Explorer」のように幾つかの要素はC++によって記述されている。ARMとx64に移植が進んでおり、一部のWindows APIは実装済みである。
Wineプロジェクトと提携し、互換レイヤーに関してはWineに依存しているが、そのほかの機能は開発チームが独自に実装している。
しかしながら、開発者の不足により開発は遅れぎみである。
開発では、法的脅威とリバースエンジニアリングに関する不安に対処するために大規模なソースコード監査が実施されている。
「React」という単語は、マイクロソフトの独占状態に対する開発チームの不満を意味している。
1996年頃、オープンソース開発者のグループがFreeWin95というプロジェクトを開始した。このプロジェクトの目標はWindows 95のクローンとなるOSを実装することであった。しかしプロジェクトはシステムの設計に関する議論で行き詰まり、1997年の終わりになっても、何の成果も出せずにいた。
プロジェクトのメンバーはプロジェクトの復活を呼びかけ、クローンの対象をWindows NTへと変更し、名称をReactOSに改名した。1998年2月、カーネルと基本的なドライバの開発を開始しReactOSプロジェクトが発足した。
2006年1月17日、ReactOSの開発者向けメーリングリストに一人の開発者から「ReactOSにはWindowsを逆アセンブルしたコードが含まれている」との投稿があった。その申し立ての結果、Windowsを逆アセンブルして作成したコードや、Windowsの流出したコードを見たことがある開発者が、書いたコードが含まれていることが確認された。そのためプロジェクトでは議論を行った結果、公のSVNの公開、フォーラム、メーリングリストアーカイブを一時停止することを決定した。(なお、48時間後に一時停止が取り消された)
それに加え、コード全体の検査を行い、クリーンルーム方式のリバースエンジニアリングがされていない可能性のあるコードを洗い出した。また、全開発者に「クリーンルーム方式のリバースエンジニアリングのみを行う。」よう契約書にサインをさせた。
2006年2月24日、まだ完全に監査は完了していないものの、活動再開の発表がなされた。コードの調査を完了させ、ソースコードの影響する部分を書き直すには何年もかかるため、この件によってプロジェクトの進行が遅れるものと考えられていたが、2008年8月末までにコードの監査は完了した。なお、開発と監査は同時に進行していた。このコード監査は、新たにリポジトリを作成し、監査が終了したら、コードを元の場所から新リポジトリへと移動する、という手順で行われた。
2011年現在、GUIが用意され、基本的な操作が可能になっている。主なAPIやABIが用意され、幾つかのアプリケーションの動作が報告されている。また、カーネルは概ね安定している。
現在、ReactOSの開発者はUSBをサポートする作業も行っている。また、GUIシステムの改良やネットワーク、マルチメディア、プラグアンドプレイハードウェアに対応する作業も行われている。いくつかのアプリケーションは動作が保証されないものの、Javaや、Monoを利用した.NETはサポートされている。マルチユーザー環境が開発されれば、ターミナル・サービスやリモート・デスクトップの開発も行われることとなる。この開発にはXRDP、 VNC、 rdesktopが用いられることとなるだろう。Windows NTサブシステムと同様に、DOS、OS/2、POSIXサブシステムも提供されている。
開発者はWindows NT バージョン5、6とより互換性を持つカーネルを開発し、より多くのアプリケーションをサポートすることを目標としている。また、改良されたUSB、ネットワーク、その他のハードウェアのサポートも利用可能となる可能性がある。
また、3Dゲームのサポートの強化および、完全なOpenGLサポートのための作業も行われている。ReactOSプロジェクトのオープンソース版DirectXともいえる、ReactXの開発にも進歩の動きがみられる。
ReactOS プロジェクトは、2ヶ月から6ヶ月の間隔で新しいバージョンをリリースすることを目標としており、バージョン0.5.0からはベータ版となり、実用的なシステムとなる計画である。詳細はReactOSロードマップを参照。
0.4.8以降NTFSの実装が始まっている（初期にはデフォルトでは無効にしている）。
現在、ReactOSの開発者はReactOSの多数の移植に取り組んでいる:ReactOSはHyper-V、VMware、VirtualBox、QEMUのような上記のハードウェアをエミュレートもしくは仮想化するソフトウェア上でも動作することが知られている。
ReactOSでも、移植性を見据えた処置が取られている。例えば、0.2.5においてはさまざまなIA-32アーキテクチャやXboxプラットフォームへの対応が追加された。また、2005年の段階で、ReactOSをPowerPCやXenアーキテクチャへと移植する作業も進行中である。 また現在、PocketPC用のReactOSを期待して、ARMプラットフォームへの移植作業も行われている。これは現段階でフル機能のオペレーティングシステムよりも適している。
ReactOSはWineプロジェクトと協力して活動しており、よってWineが行っているWin32 APIの実装から成果を得ることができる。Win32 API実装の成果は、主にWineのDLLに関連しており、それらの多くはReactOSとWineで共有することができる。双方のプロジェクトは互いの互換性の問題に取り組んでいる。
もう一つの関連するプロジェクトはSamba TNGである。Samba TNGはLSASS, SAM, NETLOGON, SPOOLSSといった多数のサービスを実装している。これらのサービスはReactOSプロジェクトの成功と（機能的に正しい）相互運用性の鍵となっている。Sambaはそのアーキテクチャデザインと戦略的な目標により、ReactOSへと取り込むことは容易ではない。これに対し、Samba TNGは多層式かつモジュール形式の手法をとっているため、各サービスはずっと容易にReactOSへと取り込むことができる。
ReactOSはバージョン0.2.2より、Unicodeを適切に扱うことができるように改良された。
これにより、文字コードとして Unicode (UTF-16) を用いたアプリケーションを動作させることが可能となった。
また、ハードコードされたメッセージをリソースファイルへと移す作業も行われ、OSに組み込まれているアプリケーションの多くは地域化されたメッセージを表示することができるようになっている。
実際、0.2.7リリース以後に大半のリソースファイルにおいて翻訳の活動が行われた。
ロケールに日本語が指定されている場合には、メッセージは日本語で表示される。しかし、新機能の追加などにより、英語で表示される部分もまた増えてきている。
その上、多くの日本語のWindowsアプリケーションが用いているシフトJISを扱うアプリケーションにはまだ対応していなかったり、そもそも日本語の表示においても行の折り返しができない等の問題があったり、ロケール処理にも未実装のものが多いなど、まだまだ実用には程遠いと言わざるを得ない。
バージョン0.3.10からは、「Systema Font」という日本語フォントが追加されたため、インストール時に日本語を選択すれば、日本語が表示できるようになった。
また、バージョン0.3.11からは、「Systema Font」から「Droid Sans Fallback」にフォントが変更され、中国語・韓国語の表示も可能になった。