Ato とは
Ato は、ソフトウェアを継続(continuation)として扱うための方法です。この継続とは、ある地点からなお可能な Computation(計算)のことであり、サービスエンドポイント、リポジトリ、スナップショットとは区別されます。
目的は、コンテナ、パッケージマネージャー、仮想マシンを置き換えることではありません。それらは環境を準備して実行できます。Ato のレイヤーは、その上で動作する Computation を記録可能、保存可能、分岐可能、転送可能、継続可能にするものです。
課題
ほとんどのソフトウェアは、サービスへのアクセスとして提供されます。つまり、他者のサーバーやデータベースと通信するインターフェースです。受け取るのは画面であり、ソフトウェアそのものではありません。そこから 3 つの帰結が生じます。
- 進行中の作業を持ち出せません。プロバイダーの環境が変わったり、サービスが停止したり、アクセスを失ったりすると、セッションは使えなくなります。
- 過去には戻れません。保存されたドキュメントは、それを生成したプログラムの状態と同じではありません。
- 何を実行できるかは環境が決めます。同じプロジェクトでも、ランタイム、ライブラリ、サービスが欠けているために、あるマシンでは動作し、別のマシンでは失敗することがあります。
LLM を活用した開発は、この問題をより明確にします。ソフトウェアがより速く、より多くのバリエーションで作られるため、動作する Computation を保持し、比較し、移動し、resume できる能力のほうが、最初に実行したマシンを保持する能力よりも重要になります。
モデル
Computation ──▶ seal ──▶ Capsule ──▶ transfer ──▶ materialize ──▶ Run ──▶ continue
- Computation は、現在の地点から残っている作業です。インタラクションが起きると変化します。
- Capsule(不変の継続地点) は、その Computation における seal 済みで不変の、アドレス可能な地点です。保存、受け渡し、resume、合成、fork ができます。
- Run(実行中の評価) は、Capsule から resume された生きた評価です。Run は進み、ある地点を seal すると別の Capsule が生まれます。
- Record(観測の記録) は、インタラクションが観測されたことの証拠です。Record は、Run がどのように地点へ到達したかを説明しますが、地点そのものではありません。
- Materialization(実体化) は、Capsule を実現する物理的な方法です。Replay(記録の再適用)、ワークスペースの再構成、将来のスナップショット機構などがあります。
これらの区別がモデルの中核です。基本概念では、各用語を定義し、相互の関係を説明しています。
現在動作するもの
Atoは実験段階です。リポジトリには計算オブジェクト、ライフサイクルコマンド、Adapter、portable bundle処理、静的な検証例があります。portable application profileはContract K(観測条件)とDerivation D(宣言された実現経路)を分け、receiptに実際の観測を記録します。仕様は実装段階のdraftです。実行可能な経路はホストの能力と権限に依存します。異種ホスト間の汎用復元、process memoryの復元、自律的AI Formationは研究・開発段階です。About · 開発ガイド。
Ato ではないもの
- Docker、Nix、VM を置き換える汎用の環境プロビジョニングツールではありません。
- パッケージマネージャーやツールチェーンの再実装ではありません。
- Git やコンテナレジストリの代替ではありません。
- すべてのプロセスが決定論的に replay できることを保証するものではありません。