Mona 0.3.4 リリース

Mona 0.3.4 をリリースしました。

主な変更点

動かす方法


イメージファイルをダウンロード展開し、Ubuntu なら QEMU をインストール(sudo apt-get install qemu) して

% ./start_mona.sh

で起動します。OSX でも QEMU を入れれば同様に動きます。
WindowsQEMU では今のところ動きません。KVM 対応中らしいのでそのうち動くようになると思います。

おまけ

ここから文体が変わります。

今どこにいるか?

今リリースに至るまで大きく2つのことを意識して開発をしていた。
1つ目は「Mona が使えるようになるには毎日 Mona を使って不満な点を1つ1つ改善して行くしかない」ということ。
日々使っていると

  • プロセスが落ちると OS 再起動しか手がない
  • Facebook にアクセスししたい
  • 何度もプロセスを起動、終了するとリソース不足でカーネルが死ぬ
  • エディタが遅い
  • プロセスを殺したいが ps がいつの間にか動作しなくなってる
  • ファイルがたまに読めなくなる
  • プロセスがどこで落ちたかの特定に時間がかかる
  • Mosh の起動速度が Linux と比べて遅い
  • assert でコンソールの描画が乱れる
  • キーボードで最前面ウィンドウを変更したい

など多くの不満点に気づかされる。これらの現象は全然違うレイヤーから現れるものがほとんどだ。こういった不満をメモして優先順位付けする。そして上からひたすら改善していった。まだまだ不安定だが以前よりはストレスなく使えるようになってきた。


もう1つは Mosh の導入。C++ で OS コンポーネントを書くのは面倒だ。Scheme で書けたらどんなにハッピーだろうか。そういう世界にしたい。不安定な足場(Mona)の上に築かれた比較的安定した Mosh でシェルのバックエンドを書いてみた。それも Mona 上のエディタでコードを書き、シェルを再起動して動作確認するということを繰り返した。これには大きな実りがあった。MoshMona の Message API が整備された。簡単なコンポーネントなら Mosh 単体で書けるようになってきた。Mosh の起動速度が遅い問題に出くわしたがそれも改善できた。


Facebook viewer でも Mosh を使っている。面倒な Graph API の部分はまるごと外部プロセスとして起動した Mosh に任せている。もちろん外部プロセスとのやりとりは前述の Message API で行う。そういえばこのタイミングで名前サーバーが導入されたのだった。最終的にはウィンドウの部分も MoshScheme) で書きたいと思っているがそれは遠い道のりだ。その第一歩として Mosh とウィンドウシステムの協調動作の良い例になったと思う。

今後どこへ行くか?

さて今後だが二本柱で行こうと思う。1つ目は今リリースで良かった点を続けていくこと。Mosh はより深く OS に食い込む。OS は日々使い込むことで更に安定して高速になっていく。


もう1つはブラウザの移植の検討。「ブラウザが動いてればどんな OS でも良いよ」という命題が一部では真になりつつあると思う。ブラウザが動いていない OS に価値があるかどうかはかなり怪しくなってきた。少なくとも自分はそこまでの価値を出せる自信がない。ブラウザは OS の特色を出すのにはあまり関与しないがブラウザ自体は必須。という状況なので少ない手間できっちり動く本物のブラウザを動かす方法を検討しないといけない。webkit を移植した Haiku あたりが参考になりそう。