monotoneの0.99.1が出てるんだけど結構かわってるので未だ導入できず。NEWS翻訳はちょっとまってね。
あと日本語(とかの)メッセージカタログ更新だれかしてくれねーかな的なのがML流れてたんだけど誰かやってあげてください。俺は残念ながらちょっと余裕がない。
PeerCastリメイク。しばらく内部C++、外部インターフェースCで、プラグインで拡張できるアプリを作ろうとしてたんだけど無理なので全部消そうと思う。
Cだとやりとりできる標準のデータ構造が貧弱すぎて、リストから何から自前で作らんといけないのが死にたくなる。文字列が長さ持ってなくて'\0'終端とか使いづれーよ。20年前の言語を素で使って今時のアプリを一から書こうなんてのが無謀だったんだ。
C++はSTLがあるけど実装がちょっとでも変わったらリンクできなくなるでしょ?それは困る。特にWindowsで。
一枚岩のアプリだったらC++で我慢できるんだが、プラグインで拡張できるってあたりがC++には荷が重すぎた。
実際はDLLでランタイムを一枚かませばいいだけなのかもしれんけどな。でもそのランタイムに依存しないとプラグインも作れないってのは結構大変そう。
その辺をいろいろ考えて下層な部分から全部自前で用意するなんて無謀をするよりは.NETでさっくりと作ってしまった方が精神衛生上とてもよいということに思い直した。C#にしよう!
.NETならクラスライブラリは便利だし、monoを入れれば同一バイナリがMacでもLinuxやBSDでも動くってのはいい。ちょっと頑張ればIronRubyや別な言語もいろいろつかえるしね。
同一バイナリが使えるってのはだいぶ魅力的で、今回はプラグインで拡張できるのを考えてて、本体は俺がマルチプラットフォームを考えて作るのは出来るんだけどプラグインにもそれを要求するのは難しいし、プラグインがWindows用バイナリしか配布されてないと他のプラットフォームではソースからのビルドが必要になる。
そこが.NETなんかだと、.NETで作ったアセンブリをmonoでそのまま読み込めるのでビルドしなおす必要はない。まあどんなアセンブリもmonoで動くってわけではないので多少気をつける必要はあるがCやC++ほど大変ではないでしょう。
Javaでも同じようなことはできるんだが、俺がJavaよりC#の方が多少なりとも使えるってのと、GUIに関してはJavaはちょっとアレだしな。.NETやmonoならWindows.Forms(こいつもちょっとアレだが)はmonoでもまあ動くし、WindowsではWPF(とてもかわいい)、monoならGtk#やMonoMacもいけるのが安心だね。
いや個人的にはGUIなんざどうでもいいんだが、みんなGUIしか見ねーから。コンパクトで使いやすいGUI希望とか好き勝手いいまくるから。おめーが勝手につくれよ。
逆にC#で困るのが組み込み向けっつーか、AndroidやiOSのアプリで使う時はどうよという問題。
MonoDroidやMonoTouchで書けば移植は無理ではないと思うが、JavaやObj-Cなどで書いたアプリにライブラリとして埋め込みたい時にはちょっと難しそう。
だがそんなプラットフォームでPeerCast見たい配信したいってのはまだ主流ではないし、そういう人は一から書き起こしてもらってもいいだろう。プロトコルは簡単だしね*1。それよりまずはPCで使えるってのを大事にしたい。
*1 プレイヤーを用意する方が大変だ