ReactOS
ReactOS(リアクト オーエス)は、オープンソースのオペレーティングシステムである。Windows互換のオペレーティングシステムを目指し、開発が進められている。
ReactOSは、2021年現在、Windows Server 2003相当の互換性(アプリケーション及びドライバに於けるバイナリ互換性)を目標として開発が進められているオープンソースのオペレーティングシステムである。
前身のプロジェクトを含めると1996年から長期間にわたり開発が進められている。2021年4月時点、アルファ版として扱われており、一般的ユーザが利用できる状況ではない。また、動作が確認されているWindowsアプリケーションは一部にとどまっている。
ReactOSは、主にC言語で実装されているが、「ReactOS Explorer」など幾つかの要素はC++によって実装されている。ARMとx64等の複数のアーキテクチャに移植が進んでおり、一部のWindows APIが実装されている。
また、複数のオープンソースソフトウェアプロジェクトと提携し、その成果を多数取り入れており、特に、Windowsとの互換性においてWineプロジェクトの互換レイヤーを取り入れている。
「React」(反抗)という単語は、マイクロソフトの独占状態に対する開発チームの不満を表している。
1996年頃、オープンソース開発者のグループがFreeWin95というプロジェクトを開始した。このプロジェクトの目標はWindows 95のクローンとなるOSを実装することであった。しかしこのプロジェクトは成果を出せずに立ち消えとなった。
前述のプロジェクト参加者、ジェイソン・フィルビがプロジェクトの再スタートを呼びかけ、クローンの対象をWindows NTへと変更し、名称をReactOSに改名した。1998年、カーネルと基本的なドライバの開発を開始しReactOSプロジェクトが発足した。
2006年1月17日、ReactOSの開発者向けメーリングリストに一人の開発者から「ReactOSにはWindowsを逆アセンブルしたコードが含まれている」との投稿があった。そのためプロジェクトでは議論を行った結果、公のSVNの公開、フォーラム、メーリングリストアーカイブを一時停止することを決定した。(なお、48時間後に一時停止が取り消された)
それに加え、コード全体の検査を行い、クリーンルーム設計のリバースエンジニアリングがされていない可能性のあるコードは発見されなかった。また、全開発者に「クリーンルーム設計のリバースエンジニアリングのみを行う。」よう契約書にサインをさせた。
2006年2月24日、まだ完全に監査は完了していなかったものの、活動再開の発表がなされた。コードの調査を完了させ、ソースコードの影響する部分を書き直すには何年もかかるため、この件によってプロジェクトの進行が遅れるものと考えられていたが、2008年8月末までにコードの監査は完了した。なお、開発と監査は同時に進行していた。このコード監査は、新たにリポジトリを作成し、監査が終了したら、コードを元の場所から新リポジトリへと移動する、という手順で行われた。
GUIが実装され、基本的な操作が可能になっている。主なAPIやABIが用意され、幾つかのアプリケーションの動作が報告されている。
=== ユーザーインターフェイス ===
Windows XP等で使用されたヴィジュアルスタイル機能が実装されており、デスクトップ外観の変更が可能である。
Windowsで標準対応するファイルシステムでは、FAT32に加えて、試験的ながらNTFSが利用できる。
また、BtrfsやExt4といったWindowsで標準対応していない複数のファイルシステムに対応している。
現在、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の開発者はReactOSの多数の移植に取り組んでいる:
ReactOSはHyper-V、VMware、VirtualBox、QEMUのような上記のハードウェアをエミュレートもしくは仮想化するソフトウェア上でも動作することが知られている。
ReactOSでも、移植性を見据えた処置が取られている。例えば、0.2.5においてはさまざまなIA-32アーキテクチャやXboxプラットフォームへの対応が追加された。また、2005年の段階で、ReactOSをPowerPCやXenアーキテクチャへと移植する作業も進行中である。
開発では、法的脅威とリバースエンジニアリングに関する不安に対処するために大規模なソースコード監査が実施されている。
ReactOSはオープンソースソフトウェアとしてWindows互換のカーネルを構築することを目的としていますが、完成したOSを作るために必要な周辺機能の多くは、より大規模のオープンソースエコシステムで既に利用可能となっています。
それらが利用可能な場合、ReactOSは既存のオープンソースプロジェクトと協力し構築を行っています。
逆に、WineやCaptive NTFS、Longeneなどのプロジェクトは、オープンソースのReactOSのコードベースを再利用している。
ネットワーク技術でSamba TNGと協力している。Samba TNGはLSASS, SAM, NETLOGON, SPOOLSSといった多数のサービスを実装している。Samba TNGはモジュール化されているため、各サービスは容易にReactOSへと取り込むことができる。
ReactOSはWineプロジェクトと協力して活動しており、Wine上のWin32 API実装を活用して開発を進めている。依存しているレイヤーは、主にWineのDLLに関連しており、それらの多くはReactOSとWineで共通している。双方のプロジェクトは互いに互換性の問題解決に取り組んでいる。
ReactOSでは多言語対応の作業も行われているが、後述するように日本語環境は十分とは言えない状況である。
ReactOSはバージョン0.2.2より、UTF-16を適切に扱うことができるように改良された。
これにより、文字コードとしてUTF-16を用いたアプリケーションを動作させることが可能となった。
また、ハードコードされたメッセージをリソースファイルへと移す作業も行われ、OSに組み込まれているアプリケーションの多くは国際化されたメッセージを表示することができるようになっている。
0.2.7リリース以後に大半のリソースファイルにおいて翻訳の活動が行われた。
ロケールに日本語が指定されている場合、メッセージは日本語で表示される。しかし、新機能の追加などにより、翻訳が行われていない機能は英語で表示される。
バージョン0.3.10からは、「Systema Font」という日本語フォントが追加されたため、インストール時に日本語を選択すれば、日本語が表示できるようになった。
また、バージョン0.3.11からは、「Systema Font」から「Droid Sans Fallback」にフォントが変更され、中国語・韓国語の表示も可能になった。
2021年現在、日本語入力に必要な機能(例:Text Services Framework(TSF))など)が完全に実装されておらず、日本語入力が困難な状況となっている。