おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

カーネル読書会番外編 talos について

ということで WindowsMacLinux なんかとはまったく概念が違う独自 OS、talos*1 の話を聞いてきました。
え? Linux とも Printing とも関係ないじゃないかって?
そう思ってたんですが、そうでもなかったのだよ、山田くん。>誰?

いつもながら幹事役の id:hyoshiok さんと、今回アテンダーの伊藤さん @ BlueQuartz、そしてもちろん、プレゼンターの tarosuke さんに超感謝。


えっと、私の知識不足により d:id:fslasht:20081219:1229669956 を大変参考にさせていただきました。篤く御礼申し上げます。というかあの超アツい紙飛行機は id:fslasht さんのだったのですね。

勉強会本編

  • プロジェクトページは Sourceforge にあります
  • 用語説明
    • タスク:実行単位のこと。他の OS におけるスレッドも talos ではタスクと呼ぶ。
    • プロセス:普通はメモリ空間を持つ実行単位のことをさすが、talos ではユーザー空間に渡されたメモリ空間その物をさす *2
コンセプト
  • データ操作 UI
  • エージェント指向による本物のデータ共有
    • すげー TRON くさいとおもったらやっぱり影響ありとのこと。
  • WYSWYG (NOT PDF! HTML World!)
  • マルウェアプルーフ (後述)
  • 極低 TCO

目標は NULL image system <=> Mono image system
ユーザにシステムの存在を感じさせない

プロジェクト運営上の方針
  • 実装の統一をしない
    • 選択の幅を狭めたらつまらない
  • フォーク上等 *3
    • フォークした場合、フォークしたものからおいしいとこどりできるから、かならずしもヒューマンリソースの無駄遣いにならない。
    • パッチシステムは取らない。パッチをコミットするしないとか論争疲れるし。それぐらいならフォークしてくれ。

ここで質疑応答
Q: バージョン管理システムはナニ使ってます?
A: SVN です。
C: Git にしなよ。Git は基本的にブランチする考え方だから開発もデルに向いてると思う。

  • GPL + プロプラエタリなデュアルライセンス
    • GPL の範囲下であれば無料
    • GPL を破ったような使用法を見つけたら懲罰的ライセンス料をいただく
    • 事前申し出があればお安くするが、それでもソースはそれなりにお金をいただく
作った動機・きっかけ、などなど
  • Mac OS の理想と現実
    • 初期 Mac OS の User Interface Guideline に感動
      • だれが書いたどのアプリでも同じような操作感で動く!
    • でも OS 8 あたりからだんだんグダグダに (Apple 自身が Rule Break してるし)
    • いまは Mac に興味なし
  • 1B/V2 *4
    • アプリ不在、データ指向というコンセプトに萌え
    • しかしいかんせん仕様が時代においついてない
    • 超漢字Mozilla が載ったのは幻滅
      • HTML→TAD して TAD で見ればいいじゃん! *5
  • 反WYGWYG
    • 紙と同じものをディスプレイに表示しようとするのが WYSWIG。
      • 例えば PDF とか
    • でも紙とディスプレイはしょせん違うもの
      • 拡大縮小とか超めんどくせー
      • HTML みたいに、view によって表示変えてくれればいいのに! *6
  • マルウェアフリー
    • セールストークとしては活用しているが、実は副次的なもの
    • 「アプリが存在しない、完全なデータ指向 OS」を考えていたら、それってすごく安全ジャンってことに気づいた
  • Linux
    • 低コストで自在に使える開発環境
    • プロジェクト管理面で大きく影響を受けた
実装
  • 超巨大なカーネルにいろんなサービスが入ってる (GUI フレームワークカーネル)
    • もちろん実装上は分けたっていいけど、今のところは一枚岩
  • ユーザーモードでは「描画」「ファイルの編集」「通信」しかできない
    • しかもそれも直接「画面」「ファイル」「ソケット」を触るのではない
    • エージェントにお願いしてやってもらう
    • 必要に応じてエージェントが相互にお話したりもある
  • 内部ではことごとくリスト
    • 線形双方向リストで管理
      • 双方向なのは purge があるので
    • 管理コスト楽だし
    • メモリアロケーションも単純だし
    • でも一つのセルから二つのオブジェクトにリンクはれない。ちょっと面倒。
  • メモリ管理 @ 仮想空間
    • O(1) のメモリ管理が特徴
    • ここで絵を描くとわかりやすいのだけど面倒くさいのでごめん
    • 要は 2^n のメモリブロックを格納するリストを用意しておく
      • 最初はリストは空
      • 例えばあるサイズ (30byte とか) の要求が来たら1ページ分ドカンと取って、32byte に分割して一個渡し、残りはリストに並べておく
      • free されるとそのメモリブロックはリストにぶら下げる
      • 仮想空間馬鹿食いするけど、所詮仮想だからいいよね?
  • tick なし、実時間管理
    • すべての内部処理を起動からのμ秒で管理。
    • 64bit だから全然余裕。
    • tick は実時間の生成にしか使わない。
    • 誤差出ないの?
      • →うーん。ずれるかも……補正手段いるかなぁ。
困りごと
  • 排他恐怖症。なんでもロックロックロック。逆にデッドロック起こさないでね。
  • GUI やること多すぎてめんどうくさい
  • C++ の言語の限界が……。
    • ここ、「ホントに?」って猛烈にツッコミが入ってた。
    • けど、C++ をあまり知らないオイラはぼんやり聞いてただけ*7
未来のコンセプト
  • モードレスIM *8
    • IM いちいち切り替えるのめんどくさい。
    • コンテキストから「あ、これは英語」「ん、こいつは日本語」とか推定してスラスラ入力できないか。
    • 基本は推測 + 補完。POBox の進化系をイメージ。
    • 普通の推測・補完は過去の入力からだけ判断するが、そのとき表示している文字列からも推測・補完ってできないだろうか?
  • マルチクラスタ
    • 一個のノード (PC) が複数クラスタに属すことができる。
    • データはエージェントが管理しているから、どのストレージにデータが格納するかをユーザが意識する必要はない
    • でもきっとなんかデータコピーするストラテジーはいるよね? 現在考え中……。
  • P2P Directory Service
    • クラスタを容易に実現するために P2P で名乗りを上げさせる*9
    • あくまでも DS なので認証などは別の仕組みで
  • 6to4 Address Routing
    • P2P でやりたいとなるとどうしても IP アドレスがたくさん欲しい
    • IPv6 使いたい
    • でも外のネットワークは IPv4 だからトンネリングのところで人に頼まないといけない
    • それはイヤ
    • じゃあ、内部ネットワークは IPv6 で動いて、外に出るときだけ v4 で動けばよくね?


と言う内容でした。最後にデモがありまして、いまだと画面に文字を表示して、イベントハンドリングができますよ、というレベルだそうです。

懇親会などなど

  • 独自OSの作成というマニアックな課題に中学2年生が来てた! しかもちゃんと個人名刺つくってた! 名刺交換したさ。これは家宝だ! 日本の未来は明るいぞ! 今日最大のポイント。
  • ていうか中二に負けてるウチの会社ダサ! が、そこで評論家になったら俺もっとダサい。意識改革せねば。このままじゃヤバいぞ。
  • スカウトした人も Good Job だが、カーニハン・パイクの「プログラミング作法」を貸し出したのは超 GJ!
  • そしてカーニハン談義で盛り上がる。K&R をちゃんと読めない奴はいかなる言語でもプログラミングをする資格がない。あそこには C の、いや言語設計の哲学のすべてがある。
  • そして相変わらず組版について暑苦しく語る俺。「DTP のやつらは日本語を分かってない」とか唾飛ばして力説。しかも DTP のシステム屋さんを前に。はずかしー。
  • Linux で動く BASIC で超盛り上がる。renum とか on error goto とか new とか懐かしすぎ。あれってパッケージになってんのかな? 俺も入れたい。
  • Interface の付録だったっけ? の基盤キットでハードウェア組んで、紙飛行機に仕込んだ加速度センサーで Google Maps の上をぶんぶん飛び回れるシステムを作って持ってきてた人……が id:fslasht さん。すっげー。おもしれー。オイラまるでハードはできないからハードできる人ってそれだけで尊敬しちゃう。

二次会

  • 基本的にみんなただの酔っ払いだった。
  • お店のおねーちゃんが綺麗だからってツーショット写真取りまくるのはどうよ。
  • しかもその写真を GPL で公開だ! とか。アホやな。(褒めてる)
  • でも仮想化の話ができたのはちょっとおもしろかったよ。


とりあえず独自 OS ということでまったく分からないかとドキドキしてたけど、なんとかついてけるところもあったので一安心。
いやいや、根が TRON と非 WYSWYG ということで非常に親しみがわいたプレゼンでございました。

あー楽しかった。
こんな楽しいところになんでみんな出てこないのかわかんねーよ。

*1:tarosuke さんが作られてるので taros と間違われるけどギリシャ神話の巨人の名前なので ”l” が正解。あと大文字だと商標に引っかかるので小文字でヨロシクとのことでした。

*2:ここらへん記憶があやしい……。

*3:個人的にはここ面白かった。でもフォークしたものからどれを取り込むかと言うのは非常に難しいジャッジだと思うんだな。この開発モデルがうまくいくかどうかはそこにかかっていると思う。

*4:若い人は知らないかもね。B-TRON の実装の一つ。パーソナルメディアから出てた。後の「超漢字」の前身。ここの話を聞いて、talos って要は tarosuke さんの理想の B-TRON なのかなって思った。

*5:すげー分かる。超同意します。まだ HTML はおろか hypercard がなかった時代に仮身・実身モデルって概念を提唱してるんだから (そう、TRON ってすごいんですよ。坂村健はタダの山師ではないのだ。不幸だったのはあの時代にはまだオープンソースという考えがなかったことではないかしらん) 当然それを使って Web ブラウジングだって表現できるはず。せっかくのコンセプトを User Experience のためにねじ曲げてしまったといってもいいと思う。

*6:これまた超同意。ユーザが印刷したいのはコンテンツであって画面ではない。つかみんな Knuth の Computer & Typesetting 読め。欲しいことはみんなあそこに書いてある (除く CJK)。ここは思い入れあるので思わず聞いちゃったよ。「Knuth の仕事とか意識してますか?」って。

*7:ただ、コンストラクタにいっぱい仕事をさせちゃダメ、ってのは Effective C++ で見たことがある気がするから、他のカーネルサービスを使う人にお約束 (new したら必ず init 呼んでね、とか) を作りたくないからといって、あんまりコンストラクタを重くしたらそもそもいけないんじゃないのかなぁ。俺全然違う理解してるかも。

*8:概念は Cool だと思う。実装してみないとわかんないことはいっぱいあると思うけど、まずは作って姿を見せてほしい。その上で議論したいな。かなり否定的な意見が出てたけど、やる前から Concern を並べるのは個人的にはつまんないよ ^^; 思わず突っ込んでしまった。

*9:気のせいか初期の MS Network ^^;