SkyOS
SkyGI
SkyGIとはSkyOSのAPIである。QtやSwingといったGUIツールキットのコンセプトに近い。SkyGIの基本原則は "view" である。それぞれのGUIオブジェクトは基本の "view" オブジェクトから派生している。したがって似たような属性は似たような振る舞いをする。
SkyOSは国際化と地域化も組み込みでサポートしており、サードパーティの開発者が容易に多言語対応のアプリケーションを開発できる。アクセシビリティにも考慮し、最新のキーボード・ナビゲーションをサポートしている。
ネイティブのコントロール群には 'theme' ファイルを置くことでテーマを与えることができ、Windows XP のMSSTYLESに近い。
コンポーネント
SkyOSのGUIは一般的なGUIのデスクトップメタファーとほとんど変わらない。しかし他のGUIとは異なるSkyOS独自のコンポーネントもある。
Panelは機能的にはWindowsのタスクバー、またはmacOSのdockに相当する。プログラムの起動、アプリケーションのウィンドウ間の切り替えなどを担当し、各種情報も表示する。プラグインを追加することで機能を追加できる。例えば既存のプラグインとして、クエリ方式の高速アプリケーション起動、昼夜インジケータを気象情報を示すよう拡張したものなどがある。
Notifierはユーザーに注意を促すための要素であり、アプリケーションのクラッシュを知らせたり、ハードウェアの追加/除去を知らせたりする。アプリケーションでもこれを使うことができる。
ViewerはSkyOSのファイルブラウザである。複数の表示方式をサポートし、サムネイル表示やメタデータに基づく情報を表示でき、ファイルの検索機能も豊富である。
高速ファイル検索
SkyOSはSQLベースのインデックス付与機構を持ち、WinFSやSpotlightのようなメタデータおよび全文の高速検索が可能である。
仮想フォルダの概念があり、それを検索機能と組み合わせると検索用クエリをセーブしておいて、後で実行するといった使い方が可能である。クエリとは例えば次のような書式である（全ての .txt ファイルのうち、今日更新されたもの）。
name = *.txt && last_modified >= %today%
検索するために上のような書式を覚える必要はなく、GUIを使ってクエリを作ることができるし、キーボードを使った検索もデフォルトでサポートしている。
開発
いくつかのAPIと同時にPOSIX互換APIもサポートしているが、SkyOSはベータ版で頻繁にAPI周りにバイナリ非互換が発生するため、アプリケーションの開発とリリースは今のところ難しい。SkyOS向けにアプリケーションをリリースしたければ、SkyOSのリリースごとのAPIの変化に追随する必要がある。APIをいつ固定するかについてSzeleneyは計画を明らかにしていない。
SkyOSの実行ファイルはELF形式で、GNUコンパイラコレクションを使ってコンパイルできる。一般にクロスコンパイル方式でSkyOS用の実行ファイルを作成する。しかし、GCC自体もSkyOSに移植済みでよく保守されているので、SkyOS上でアプリケーションを開発することも不可能ではない。
公式のチャンネルからアプリケーションを配布したければ、SkyOS公式サイトにある Software Store を利用すればよい。
SkyOS自体の改良は突然行われる。スケジュールは大まかにしか文書化されていない。この点はコミュニティでも懸案となっているが、そのために民主的なプロジェクトよりも開発ペースが早いことは事実である。
ネイティブAPI
SkyOSのネイティブAPIは公式にはC++のみをプログラミング言語としている。PerlとPythonは移植されているが、それらのVMからネイティブAPIを使うバインディングは用意されていない。CUIベースの.NETアプリケーションはMono経由で動作可能だが、やはりネイティブAPIへのバインディングは存在しない。Windows Forms を使っている場合はそもそも動作不可能である。
Desktop Communication Service はオブジェクト指向のプロセス間通信フレームワークであり、SkyOSで広く使われている。コマンドまたはAPIを使ってSkyOSのカーネルプロセスやユーザプロセスと通信できる。
このメッセージング・モデルでは、識別子文字列で表される「インタフェース」に人間が読める形のメッセージを送る。
例えば、次のようなメッセージを "Notify.Media.Player.Control" に送ると、SkyOSのメディアプレーヤーが次の曲を再生する。
MessageType STRING "Next Song"
SkyOSは、周辺機器の接続、ソフトウェアのインストール成功、バッテリー充電レベルの変化、新たな気象情報といった数百種類のイベントに対応したメッセージを発信する。各アプリケーションやドライバは適切なインタフェースを購読することで、メッセージを受け取ることができる。
Integrated Streaming System (ISS) はLinuxにおけるサウンドサーバの考え方に似たメディア相互作用のためのC++用API群である。このAPIではメディア再生をコーデックから完全に独立させて抽象化している。
デフォルト動作でよければ、基本機能は10行未満のコーディングで実現できる。
サードパーティによるサポート
それほど有名なOSではないため、サードパーティの開発者はほとんどいない。そのため、サポートできるハードウェアが限られており、全てはSzeleneyが開発にかけられる時間と資金にかかっている。
また、同じ理由でSkyOS上のアプリケーションの品揃えも限られている。ウェブブラウザや電子メールクライアントはサポートしているが、オフィススイートやゲームなどは揃っていない。
セキュリティと安定性
APIには各種パーミッションの設定があるが、実際にはパーミッションを設定してもシステムはそれに従わずに動作している。開発中のOSであるため、意図的にこのようになっているという。
SkyOSの通信プロトコル部分は独自設計であり、実際の環境で大々的に評価されたことがない。今のところ、SkyOSの動作しているマシンへの侵入が試みられたという話はない。
「パスワード付きフォルダ」という機能があり、ファイルシステムレベルで実装されているため、アプリケーションから通常のAPIでファイルにアクセスする場合、必ずユーザーがパスワードを入力する必要がある。しかし、パスワード付きもパスワードなしも、ファイルは全て同じ形でディスクに格納されているため、その構造を知っていれば通常のAPIを使わずにファイルにアクセスすることは可能である。
SkyOSの安定性は徐々に改善してきているが、実際はユーザーによって異なる。ハードウェア構成が正しければほとんどシステムクラッシュは起きないが、サポートしていないハードウェアの場合は頻繁にクラッシュし、ブートすらできないこともある。包括的なハードウェアサポート状況の一覧は、システムが頻繁に修正されるため存在していない。
フリーソフトウェアとの関係
かつてオープンソースだったことから、SkyOSはフリーソフトウェアに関する多くの議論を巻き起こした。
しばしば、SkyOSはGPLに違反していると非難されてきた。すなわち、OS開発は非常に複雑な作業であり、Szeleneyはこれまでの間にフリーソフトウェアからコードを盗用しているに違いないという主張である。実際にはSzeleneyはオープンソース開発者側に貢献している。ライセンス上要求されていない場合でも、SzeleneyはSkyOS用にオープンソースに修正を加えたとき、それを全て公開している。
一部のベータテスタはSzeleneyがSkyOSの開発を完全にやめてしまった場合、彼らの投資が失われることを懸念しており、それと関連してSkyOSをオープンソース化すべきだという主張がなされることがある。実際、Szeleneyは開発を中断した際に開発をやめてしまう可能性に言及している。